本技能提供端到端的AI影片自動生成能力,從指令碼撰寫到最終渲染輸出,全流程自動化。支援多種影片生成模式,適配抖音、小紅書、B站、YouTube等平臺。
full_pipeline.py,一鍵生成指令碼→配音→分鏡圖→合成影片(92秒1080×1920豎屏)# 一鍵生成推廣影片 cd skills/video-auto-generator/scripts python full_pipeline.py --topic "你的選題" --duration 90 --voice zh-CN-XiaoxiaoNeural小蔥技能站7w4.net發現了升級外掛。
輸出:Desktop/video_<選題>/final_promo.mp4(豎屏1080×1920)
引數說明:
--topic:影片主題/標題--duration:時長(秒,預設90)--voice:配音音色(zh-CN-XiaoxiaoNeural/YunxiNeural/XiaoyiNeural)--output:自定義輸出目錄本技能採用任務導向結構,根據不同需求提供差異化的工作流。
適用場景:新聞播報、知識科普、產品介紹
工作流程:
指令碼生成(使用當前session模型):
輸入:主題/關鍵詞/參考文件
輸出:分鏡指令碼(包含:畫面描述、配音文案、時長建議)
AI配音(使用edge-tts):
# 示例:生成配音
edge-tts --text "歡迎來到我的頻道" --voice zh-CN-XiaoxiaoNeural --write-media output.mp3
畫面生成(可選):
影片合成(使用ffmpeg):
# 示例:配音+字幕+背景影片合成
ffmpeg -i background.mp4 -i voice.mp3 -vf "subtitles=subtitle.srt" -c:v libx264 -c:a aac output.mp4
適用場景:圖文筆記轉影片、產品展示、教程演示
工作流程:
圖片序列處理:
自動配音(基於文案):
# 使用edge-tts批次生成配音
import subprocess
def generate_voice(text, output_file):
cmd = f"edge-tts --text '{text}' --voice zh-CN-XiaoxiaoNeural --write-media {output_file}"
subprocess.run(cmd, shell=True)
影片合成:
適用場景:直播回放剪輯、課程影片製作、Vlog快速成片
工作流程:
智慧分段(使用AI):
AI生成標題和封面:
自動剪輯:
# 示例:根據時間戳列表剪輯精彩片段
ffmpeg -i input.mp4 -ss 00:01:23 -t 00:00:45 -c copy output_part1.mp4
批次渲染:
適用場景:同一內容適配多個平臺、多語言版本、A/B測試
工作流程:
建立影片模板:
批次填充內容:
# 示例:批次生成10個變體影片
for i in range(10):
script = generate_script_variant(topic, style=i%3)
voice = generate_voice(script)
video = render_video(template, script, voice)
save(video, f"output_v{i}.mp4")
平臺自適應:
必須工具安裝(如果未安裝,請先呼叫 qclaw-env skill):
# 1. 安裝 ffmpeg (Windows)
winget install ffmpeg
# 驗證:ffmpeg -version
# 2. 安裝 edge-tts (Python包)
pip install edge-tts
# 驗證:edge-tts --list-voices | Select-String "zh-CN"
# 3. 安裝 whisper (可選,用於語音識別)
pip install openai-whisper
# 驗證:whisper --help
# 4. 安裝 ffmpeg-python (Python繫結)
pip install ffmpeg-python
可靈AI 3.0 API配置(推薦):
$env:KLING_API_KEY="your_api_key_here"
import requestsdef test_kling_api(): api_url = "https://api.klingai.com/v3/images/generations" headers = {"Authorization": f"Bearer {$env:KLING_API_KEY}"} payload = { "model": "kling-3.0", "prompt": "一個AI機器人正在製作影片", "aspect_ratio": "16:9" } response = requests.post(api_url, json=payload, headers=headers) print(response.json())
### 核心工具
| 工具 | 用途 | 安裝命令 | 實用建議 |
|------|------|----------|---------------|
| **ffmpeg** | 影片處理引擎 | `winget install ffmpeg` | 硬體加速(NVENC/QSV)提升渲染速度 |
| **edge-tts** | AI配音 | `pip install edge-tts` | 優先zh-CN-XiaoxiaoNeural,支援多種聲音 |
| **當前session模型** | 指令碼生成 | 內建 | model route自動選最優,無需硬編碼 |
| **whisper** | 語音識別 | `pip install openai-whisper` | 使用large-v3模型提升準確率 |
| **可靈AI 3.0 API** | AI影片生成 | 申請API Key | 全模態引擎,角色一致性保持 |
| **剪映「營銷成片」** | 批次帶貨影片 | 安裝剪映專業版 | 參考抖音爆款自動生成 |
| **Seedance 2.0** | AI影片生成 | 等待2.5版本 | 字節跳動,短影片資料優勢 |
### Python指令碼示例
#### 指令碼1:自動生成影片指令碼
建立 `scripts/generate_script.py`:
```python
import json
def generate_video_script(topic, duration=60, style="knowledge"):
"""
使用當前平臺模型生成影片指令碼
Args:
topic: 影片主題
duration: 目標時長(秒)
style: 風格(knowledge/entertainment/story)
Returns:
指令碼字典,包含分鏡、配音文案、畫面描述
"""
prompt = f"""
請為以下主題生成一個{duration}秒的影片指令碼:
主題:{topic}
風格:{style}
要求:
1. 開頭3秒必須有強hook(懸念/反轉/痛點)
2. 每個分鏡標註時長
3. 配音文案要口語化,適合配音
4. 畫面描述要具體,方便後續製作
輸出格式(JSON):
{{
"title": "影片標題",
"hooks": ["hook1", "hook2", "hook3"],
"scenes": [
{{
"timestamp": "00:00:00",
"duration": 3,
"voiceover": "配音文案",
"visual": "畫面描述",
"transition": "轉場效果"
}}
],
"bgm_suggestion": "背景音樂風格建議",
"tags": ["標籤1", "標籤2"]
}}
"""
# 由當前 session 模型處理(model route 自動選擇最優)
# 此處僅返回 prompt 供呼叫方使用
return {"prompt": prompt, "topic": topic, "duration": duration, "style": style}
if __name__ == '__main__':
# 示例用法
script = generate_video_script("AI工具推薦", duration=60, style="knowledge")
print(json.dumps(script, ensure_ascii=False, indent=2))
建立 scripts/batch_render.py:
import subprocess
import json
from pathlib import Path
def render_video(script_file, output_file):
"""
根據指令碼JSON檔案渲染影片
Args:
script_file: 指令碼JSON檔案路徑
output_file: 輸出影片檔案路徑
"""
with open(script_file, 'r', encoding='utf-8') as f:
script = json.load(f)
# 1. 生成配音
voice_file = "temp_voice.mp3"
subprocess.run([
"edge-tts",
"--text", script['scenes'][0]['voiceover'],
"--voice", "zh-CN-XiaoxiaoNeural",
"--write-media", voice_file
])
# 2. 合成影片(簡化示例,實際應該遍歷所有scenes)
cmd = [
"ffmpeg",
"-f", "concat", "-i", "input_list.txt",
"-i", voice_file,
"-c:v", "libx264",
"-c:a", "aac",
"-shortest",
output_file
]
subprocess.run(cmd)
print(f"✅ 影片已生成:{output_file}")
def batch_render(script_folder, output_folder):
"""
批次渲染影片
Args:
script_folder: 指令碼資料夾
output_folder: 輸出資料夾
"""
scripts = Path(script_folder).glob("*.json")
for script_file in scripts:
output_file = Path(output_folder) / f"{script_file.stem}.mp4"
render_video(script_file, output_file)
if __name__ == '__main__':
batch_render("scripts/", "outputs/")
配合 qclaw-cron-skill 實現定期影片生產:
實際配置(請先讀取 qclaw-cron-skill 獲取最新格式):
實際配置:
可執行程式碼,用於影片處理自動化:
generate_script.py:AI指令碼生成batch_render.py:批次影片渲染add_subtitles.py:自動字幕生成和嵌入smart_clip.py:智慧剪輯(識別精彩片段)platform_adapter.py:平臺格式自適應參考文件,載入到上下文以指導影片製作:
video_formats.md:各平臺影片格式規範(解析度、位元速率、時長限制)script_templates.md:常見影片型別的指令碼模板(開箱即用)tts_voices.md:edge-tts聲音風格指南(適合不同場景的聲音選擇)editing_tips.md:影片剪輯技巧(轉場、配樂、節奏控制)ai_models_guide.md:AI模型使用指南(由 model route 自動選擇最優模型)模板檔案,用於影片輸出:
templates/:影片模板目錄
tpl_douyin_9_16/:抖音豎屏模板tpl_bilibili_16_9/:B站橫屏模板tpl_xiaohongshu_3_4/:小紅書方屏模板intros/:片頭模板outros/:片尾模板bgm/: background music庫(無版權音樂)# 整合HeyGen API實現真人形象播報
import requests
def generate_avatar_video(script, avatar_id="default"):
"""
使用HeyGen生成虛擬主播影片
Args:
script: 配音文案
avatar_id: 虛擬主播ID
"""
api_url = "https://api.heygen.com/v2/video/generate"
payload = {
"video_inputs": [{
"character": {
"type": "avatar",
"avatar_id": avatar_id,
"avatar_style": "normal"
},
"voice": {
"type": "text",
"input_text": script,
"voice_id": "zh-CN-XiaoxiaoNeural"
}
}],
"dimension": {
"width": 720,
"height": 1280
}
}
response = requests.post(api_url, json=payload, headers={"X-Api-Key": "YOUR_API_KEY"})
return response.json()['video_id']
# 根據影片情感自動推薦BGM
def recommend_bgm(emotion="happy", tempo="medium"):
"""
推薦背景音樂
Args:
emotion: 情感(happy/sad/exciting/calm)
tempo: 節奏(slow/medium/fast)
"""
bgm_library = {
"happy_medium": "bgm/happy_upbeat.mp3",
"sad_slow": "bgm/melancholy_piano.mp3",
"exciting_fast": "bgm/epic_orchestra.mp3",
# ... 更多組合
}
return bgm_library.get(f"{emotion}_{tempo}", "bgm/default.mp3")
# 自動生成多個標題/封面變體進行A/B測試
def generate_ab_test_variants(video_script):
"""
生成A/B測試變體
Returns:
變體列表,每個變體有不同的標題、封面、開頭hook
"""
variants = []
# 變體1:懸念式開頭
variants.append({
"title": f"沒想到{topic}竟然...",
"hook": "你絕對不知道的真相",
"thumbnail_style": "mysterious"
})
# 變體2:乾貨式開頭
variants.append({
"title": f"{topic}完整攻略",
"hook": "今天教你3個技巧",
"thumbnail_style": "educational"
})
# 變體3:故事式開頭
variants.append({
"title": f"我是如何用{topic}改變人生的",
"hook": "去年這個時候我還...",
"thumbnail_style": "storytelling"
})
return variants
A:
ffmpeg -hwaccel cuda -i input.mp4 ...A:
<break time="500ms"/>A:
實用檢查清單:
下一步最佳化方向:
這個工具質量中規中矩,優點是能把選題自動變成帶配音和字幕的影片,流程基本完整。但要降低預期:它並不是真正用 AI 生成指令碼,而是用固定模板改寫;生成的文案可能帶營銷推廣內容;使用時會呼叫本地程式和第三方服務,存在一定隱私風險。適合對影片質量要求不高、願意接受模板化內容的使用者。