search-video-on-web-and-gen
2
总安装量
2
周安装量
#74158
全站排名
安装命令
npx skills add https://github.com/xdrshjr/jr-openclaw-skills --skill search-video-on-web-and-gen
Agent 安装分布
trae
2
iflow-cli
2
replit
2
antigravity
2
claude-code
2
codex
2
Skill 文档
Remotion Video Pipeline
ä¸ç«å¼è§é¢çäº§æµæ°´çº¿ï¼æç´¢è§é¢ç´ æ â çæè±å TTSé é³ â Remotionä¸ä¸æ¸²æ â æ·»å èæ¯é³ä¹ãå¿«éå°æåå 容转å为精ç¾çè§é¢ã
⨠Features
- ð æºè½ç´ ææç´¢ – ä½¿ç¨ yt-dlp èªå¨æç´¢å¹¶ä¸è½½ YouTube è§é¢ç´ æ
- âï¸ èªå¨åªè¾ – FFmpeg èªå¨è£åªã转ç è§é¢ç段
- ðï¸ è±å TTSé é³ – 使ç¨è±å ï¼ç«å±±å¼æï¼é«è´¨éè¯é³åæ
- ð¬ Remotionæ¸²æ – ä¸ä¸çº§è§é¢æ¸²æï¼æ¯æè§é¢/å¾çèæ¯
- ð åºé¨åå¹ – èªå¨æ¾ç¤ºé 鳿åï¼çµå½±å¼å广¡è®¾è®¡
- ðµ èæ¯é³ä¹ – èªå¨æ·»å å çæBGMï¼æºè½é³é平衡
- ð¦ å ¨æµç¨èªå¨å – 䏿¡å½ä»¤å®æä»ç´ æå°æå
åç½®è¦æ±
# 1. å®è£
ä¾èµ
brew install ffmpeg yt-dlp
npm install -g @remotion/cli
# 2. å®è£
è±å
TTS skill
cd ~/clawd/skills/doubao-open-tts
pip install -r requirements.txt
# 3. é
ç½®ç«å±±å¼æå¯é¥
cp ~/clawd/skills/doubao-open-tts/.env.example.txt ~/.env
# ç¼è¾ .env æ·»å ä½ çå¯é¥
å¿«éå¼å§
æ¹å¼ä¸ï¼ä½¿ç¨èæ¬ï¼æ¨èï¼
# å建è§é¢é¡¹ç®
cd ~/clawd/skills/remotion-video-pipeline
./scripts/create-video.sh "约å
å¤ç¬ä»ç»" ~/output/yorkie
# ææç¤ºæä½ï¼
# 1. ç¼è¾ scenes.json 设置å
容
# 2. è¿è¡æ¸²æèæ¬
# 3. è·åæåè§é¢
æ¹å¼äºï¼æå¨æµç¨
# 1. å建项ç®
mkdir my-video && cd my-video
npm init -y
npm install @remotion/cli remotion react react-dom axios
# 2. å¤å¶æ¨¡æ¿
cp -r ~/clawd/skills/remotion-video-pipeline/templates/remotion-base/* .
# 3. ä¸è½½è§é¢ç´ æ
yt-dlp -f "18" -o "raw_video.%(ext)s" "ytsearch1:å
³é®è¯"
ffmpeg -i raw_video.mp4 -ss 00:00:10 -t 10 clip1.mp4
# 4. çæTTSé³é¢
python3 ~/clawd/skills/doubao-open-tts/scripts/tts.py "ä½ çææ¡" \
-v zh_male_jieshuoxiaoming_moon_bigtts -o audio/intro.mp3
# 5. 渲æè§é¢
npx remotion render src/index.tsx Scene-intro out/intro.mp4
# 6. æ·»å BGM
ffmpeg -i final.mp4 -i bgm.mp3 -filter_complex \
"[1:a]volume=0.5[bgm];[0:a][bgm]amix=inputs=2:duration=longest[a]" \
-map 0:v -map "[a]" -c:v copy -c:a aac output.mp4
项ç®ç»æ
my-video/
âââ scenes.json # åºæ¯é
ç½®ï¼æ ¸å¿æä»¶ï¼
âââ audio-durations.json # é³é¢æ¶é¿é
ç½®ï¼èªå¨çæï¼
âââ src/
â âââ index.tsx # Remotionå
¥å£
â âââ scenes/
â â âââ SceneTemplate.tsx
â âââ components/ # UIç»ä»¶
âââ public/
â âââ audio/ # TTSé³é¢
â âââ images/ # å¾çç´ æ
â âââ videos/ # è§é¢ç´ æ
âââ out/ # è¾åºç®å½
âââ scripts/
âââ generate_tts.sh # æ¹éçæTTS
âââ download_video.sh # ä¸è½½è§é¢ç´ æ
âââ add_bgm.sh # æ·»å èæ¯é³ä¹
åºæ¯é ç½® (scenes.json)
[
{
"id": "intro",
"searchQuery": "yorkshire terrier puppy",
"title": "约å
å¤ç¬",
"subtitle": "è¿·ä½ çå¤è¡¨ï¼å·¨å¤§ç个æ§",
"caption": "INTRODUCTION",
"variant": "hero",
"videoSrc": "videos/clip1.mp4",
"ttsText": "约å
å¤ç¬ï¼è¿·ä½ çå¤è¡¨ï¼å·¨å¤§ç个æ§ã"
},
{
"id": "content",
"title": "èµ·æºä¸åå²",
"variant": "content-rich",
"videoSrc": "videos/clip2.mp4",
"paragraphs": ["段è½1", "段è½2"],
"bulletPoints": ["è¦ç¹1", "è¦ç¹2"],
"ttsText": "约å
å¤ç¬èµ·æºäº19ä¸çºªçè±å½çº¦å
é¡..."
}
]
é ç½®åæ®µè¯´æ
| åæ®µ | 说æ |
|---|---|
id |
åºæ¯å¯ä¸æ è¯ |
searchQuery |
æç´¢è§é¢ç´ æçå ³é®è¯ |
title |
主æ é¢ |
subtitle |
坿 é¢ |
caption |
ç« èæ ç¾ï¼å¤§åï¼ |
variant |
å¸å±åä½ï¼hero/centered/content-rich/minimal |
videoSrc |
è§é¢ç´ æè·¯å¾ |
ttsText |
é 鳿æ¡ï¼åæ¶ä½ä¸ºåºé¨å广¾ç¤ºï¼ |
paragraphs |
段è½å 容æ°ç» |
bulletPoints |
è¦ç¹å表 |
èªå¨åèæ¬
1. æ¹éçæTTS
./scripts/generate_tts.sh scenes.json public/audio
# å¯éåæ°ï¼
# -v æå®é³è²ï¼é»è®¤ï¼è§£è¯´å°æï¼
# -s æå®è¯é
2. ä¸è½½è§é¢ç´ æ
./scripts/download_video.sh "æç´¢å
³é®è¯" public/videos 5
# åæ°è¯´æï¼
# $1 - æç´¢å
³é®è¯
# $2 - è¾åºç®å½
# $3 - ä¸è½½æ°éï¼é»è®¤5ï¼
3. èªå¨åªè¾ç段
./scripts/extract_clips.sh raw_video.mp4 public/videos/ 10
# ä»è§é¢ä¸èªå¨æåå¤ä¸ª10ç§ç段
4. æ·»å èæ¯é³ä¹
./scripts/add_bgm.sh input.mp4 bgm.mp3 output.mp4 0.5
# åæ°è¯´æï¼
# $1 - è¾å
¥è§é¢
# $2 - èæ¯é³ä¹
# $3 - è¾åºè§é¢
# $4 - BGMé³éï¼ç¸å¯¹äºå声ï¼é»è®¤0.5=50%ï¼
5. ä¸é®æ¸²æå ¨é¨
./scripts/render_all.sh
# èªå¨ï¼
# 1. æµéé³é¢æ¶é¿
# 2. æ¸²æææåºæ¯
# 3. æ¼æ¥æç»è§é¢
# 4. å缩è¾åº
æ¨èé³è²
䏿ç·å£°ï¼æ°é»/解说类ï¼
| é³è² | Voice Type | ç¹ç¹ | æé |
|---|---|---|---|
| è§£è¯´å°æ | zh_male_jieshuoxiaoming_moon_bigtts |
èªç¶è§£è¯´é£æ ¼ | â æ éæé |
| æ°é»å°å¿ | zh_male_xinwenxiaozhi_mars_bigtts |
æ åæ°é»ææ¥ | éå¼é |
| ç»å ¸å°æ | zh_male_jingdianxiaoming_mars_bigtts |
纪å½ç飿 ¼ | éå¼é |
| å°è« | zh_male_xiaomo_mars_bigtts |
温æå好 | éå¼é |
䏿女声
| é³è² | Voice Type | ç¹ç¹ |
|---|---|---|
| ç¿ç¿ | zh_female_cancan_mars_bigtts |
活泼女声 |
| æ°é»å°é | zh_female_xinwenxiaojing_mars_bigtts |
ä¸ä¸æ°é» |
å è´¹BGMæ¥æº
- Free Music Archive –
https://freemusicarchive.org - Incompetech –
https://incompetech.com - ccMixter –
http://ccmixter.org - Musopen –
https://musopen.org
æç´¢å
³é®è¯ï¼cute, happy, upbeat, pet, playful, warm
宿´ç¤ºä¾æµç¨
# 1. å建è§é¢ç®å½
mkdir -p ~/output/my-video && cd ~/output/my-video
# 2. åå§å项ç®
cp -r ~/clawd/skills/remotion-video-pipeline/templates/remotion-base/* .
npm install
# 3. ç¼è¾ scenes.json å®ä¹å
容
vim scenes.json
# 4. ä¸è½½è§é¢ç´ æ
~/clawd/skills/remotion-video-pipeline/scripts/download_video.sh \
"yorkshire terrier puppy" public/videos 5
# 5. æåçæ®µ
ffmpeg -i public/videos/video1.mp4 -ss 00:00:10 -t 10 public/videos/clip1.mp4
# 6. çæTTS
~/clawd/skills/remotion-video-pipeline/scripts/generate_tts.sh scenes.json public/audio
# 7. æ¸²æææåºæ¯
~/clawd/skills/remotion-video-pipeline/scripts/render_all.sh
# 8. æ·»å BGM
curl -L -o bgm.mp3 "https://files.freemusicarchive.org/..."
~/clawd/skills/remotion-video-pipeline/scripts/add_bgm.sh \
out/final.mp4 bgm.mp4 out/final_with_bgm.mp4 0.5
# â
宿ï¼
è¾åºæä»¶
out/scene-*.mp4– åä¸ªåºæ¯è§é¢out/final.mp4– 宿´è§é¢ï¼æªå缩ï¼out/final_compressed.mp4– å缩çï¼æ¨èå享ï¼out/final_with_bgm.mp4– å¸¦èæ¯é³ä¹çæ¬
常è§é®é¢
Q: è§é¢å¤ªå¤§æä¹åï¼
ffmpeg -i input.mp4 -b:v 1.5M -b:a 128k output.mp4
Q: å¦ä½è°æ´BGMé³éï¼
# ä¿®æ¹ add_bgm.sh ä¸ç volume åæ°
# 0.3 = 30%, 0.5 = 50%, 1.0 = 100%
Q: TTSçæå¤±è´¥ï¼
- æ£æ¥
.envä¸çç«å±±å¼æå¯é¥ - ç¡®ä¿é³è²ä¸éè¦é¢å¤æéï¼æ¨èè§£è¯´å°æï¼
- æ£æ¥ç½ç»è¿æ¥
Q: å¦ä½ä¿®æ¹åºæ¯æ¶é¿ï¼ é³é¢æ¶é¿èªå¨æµéï¼å¦éæå¨è°æ´ï¼
# ç¼è¾ audio-durations.json
{
"intro": 10, # åä½ï¼ç§
"content": 15
}
æä½³å®è·µ
- ææ¡é¿åº¦ – æ¯åºæ¯ 50-80 åï¼å¯¹åº 5-10 ç§
- è§é¢æ¶é¿ – çè§é¢ 30-60 ç§æä½³
- BGMé³é – 设为解说é³éç 30-50%ï¼æ¨è 0.3ï¼
- å广¾ç¤º –
ttsTextåæ®µèªå¨ä½ä¸ºåºé¨åå¹ï¼ä¿æç®æ´ææ
åå¹ä¸èæ¯é³ä¹ä½¿ç¨æå
ð åºé¨åå¹
åºæ¯é
ç½®ä¸ç ttsText åæ®µä¼èªå¨æ¾ç¤ºä¸ºåºé¨çµå½±å¼åå¹ï¼
{
"id": "intro",
"title": "人工æºè½",
"ttsText": "人工æºè½ï¼æ£å¨æ¹åæä»¬çä¸çã",
"variant": "hero"
}
å广 ·å¼ï¼
- ä½ç½®ï¼ç»é¢åºé¨å± ä¸
- èæ¯ï¼é»è²åéæï¼75%éæåº¦ï¼
- åä½ï¼48px ç½è²ç²ä½
- åè§ï¼8px è¾¹æ¡
ðµ æ·»å èæ¯é³ä¹
使ç¨å ç½®èæ¬å¿«éæ·»å BGMï¼
# åºç¡ç¨æ³
./scripts/add_bgm.sh input.mp4 bgm.mp3 output.mp4
# èªå®ä¹BGMé³éï¼30%ï¼
./scripts/add_bgm.sh input.mp4 bgm.mp3 output.mp4 0.3
æå¨ä½¿ç¨ FFmpegï¼
ffmpeg -i final.mp4 -i bgm.mp3 \
-filter_complex "[1:a]volume=0.3[bgm];[0:a][bgm]amix=inputs=2:duration=first[a]" \
-map 0:v -map "[a]" -c:v copy -c:a aac output.mp4
åæ°è¯´æï¼
volume=0.3– BGM é³é 30%ï¼ä¸çè¿äººå£°ï¼amix=inputs=2– æ··å两个é³é¢duration=first– 以è§é¢é¿åº¦ä¸ºå-c:v copy– è§é¢ç´æ¥å¤å¶ï¼å¿«éå¤çï¼
- ç´ ææç´¢ – 使ç¨è±æå ³é®è¯æææä½³
- è²å½©ç»ä¸ – å¨ scenes.json ä¸è®¾ç½®ç»ä¸ç accentColor
ç¨è¿ä¸ª skillï¼30åéå°±è½ååºä¸æ¡ç²¾ç¾çç§æ®çè§é¢ï¼ ð¬