数据驱动的科技新闻与宣传视频生成器,配备ElevenLabs配音
概览
AI驱动的社交短视频生成器:将任何URL或内容都变成YouTube Shorts、Reels、TikTok、LinkedIn的准备。 - : 每日科技/安全新闻剪辑(25–32秒)- : GitHub项目营销视频(25–32秒) 两者共用相同的渲染引擎——只是分镜内容不同。 - Node 18+ - ffmpeg(brew 安装 ffmpeg)- python3(用于渲染时的静态 Web 服务器) 输出格式为输出/YYYY-MM-DD- /: - -16x9.mp4 — 桌面 / YouTube / LinkedIn - -9x16.mp4 — Reels / Shorts / TikTok - storyboard.json — 来源副本 在这个项目目录中,运行Claude代码并使用以下技能: Claude会阅读原文,草拟分镜/.json,供审阅,并在批准后调用剧本/render.sh。 具体流程请参见.claude/skills/news/SKILL.md和.claude/skills/promo/SKILL.md。
概述(AI 翻译)
AI驱动的社交短视频生成器:将任何URL或内容转换为16:9 + 9:16 MP4,供YouTube Shorts、Reels、TikTok、LinkedIn使用。
两种模式:
- 新闻:每日科技/安全新闻剪辑(25–32秒)
- 宣传片:GitHub项目营销视频(25–32秒)
两者共用相同的渲染引擎——只是分镜内容不同。
要求
- 节点18+
ffmpeg(brew install ffmpeg)python3(用于渲染期间的静态网页服务器)
安装
渲染视频
输出落在output/YYYY-MM-DD- /:
-16x9.mp4— 桌面 / YouTube / LinkedIn-9x16.mp4— Reels / Shorts / TikTokstoryboard.json— 来源副本
用Claude代码生成分镜
在这个项目目录中,运行Claude代码并使用以下技能:
Claude 阅读源代码,草拟 storyboards/ .json,展示供审阅,并在批准后调用 scripts/render.sh。
具体流程请参见.claude/skills/news/SKILL.md和.claude/skills/promo/SKILL.md。
分镜图式
支持的场景类型和所有字段都存在于 engine/render.html 中(搜索builders = {)。
添加画外音
该视频没有音频。补充一下ElevenLabs的旁白:
本页由 AI 翻译,技术细节请以原文为准。
README
以下为原文 README 节选,完整内容请查看原文。
ai-shorts-generator
AI-powered social shorts generator: turn any URL or piece of content into 16:9 + 9:16 MP4s ready for YouTube Shorts, Reels, TikTok, LinkedIn.
Two modes:
- News: daily tech / security news clips (25–32s)
- Promo: GitHub project marketing videos (25–32s)
Both share the same render engine — only the storyboard content differs.
Requirements
- Node 18+
ffmpeg(brew install ffmpeg)python3(for the static web server during render)
Install
npm install
npm run install:browsers # playwright chromium
Render a video
bash scripts/render.sh storyboards/sglang-cve.json
Output lands in output/YYYY-MM-DD-/:
-16x9.mp4— desktop / YouTube / LinkedIn-9x16.mp4— Reels / Shorts / TikTokstoryboard.json— copy of the source for provenance
Generate a storyboard with Claude Code
Inside this project directory, run Claude Code and use the slash skills:
/news https://thehackernews.com/... # tech news URL → storyboard
/promo https://github.com/owner/repo # GitHub repo → storyboard
Claude reads the source, drafts storyboards/.json, shows it for review, and (on approval) calls scripts/render.sh.
See .claude/skills/news/SKILL.md and .claude/skills/promo/SKILL.md for the exact flow.
Storyboard schema
{
"meta": {
"title": "Human-readable title",
"slug": "kebab-case-slug",
"theme": "default|danger|warning|success",
"source": "https://source-url"
},
"scenes": [
{ "type": "hero-text", "duration": 3, "headline": "...", "caption": { "en": "...", "vi": "..." } },
{ "type": "stats-grid", "duration": 4, "stats": [{ "big": "9.8", "label": "CVSS", "accent": true }] },
{ "type": "terminal", "duration": 5, "lines": [{ "type": "prompt", "text": "$ ..." }] },
{ "type": "code-diff", "duration": 6, "bad": "...", "good": "..." },
{ "type": "quote", "duration": 4, "text": "...", "attr": "..." },
{ "type": "iframe", "duration": 5, "src": "https://...", "badge": "⭐ 1.2k" },
{ "type": "cta-url", "duration": 4, "label": "...", "url": "...", "sub": "..." }
]
}
Supported scene types and all fields live in engine/render.html (search for builders = {).
Adding voice-over
The video has no audio. To add ElevenLabs narration:
# Generate 6 clips on ElevenLabs (one per scene), save clip1.mp3 … clip6.mp3
# Pad each to scene duration and concatenate:
ffmpeg -i clip1.mp3 -i clip2.mp3 ... \
-filter_complex "\
[0:a]apad=whole_dur=3[a1];\
[1:a]apad=whole_dur=4[a2];\
[2:a]apad=whole_dur=5[a3];\
[3:a]apad=whole_dur=6[a4];\
[4:a]apad=whole_dur=4[a5];\
[5:a]apad=whole_dur=4[a6];\
[a1][a2][a3][a4][a5][a6]concat=n=6:v=0:a=1[out]" \
-map "[out]" voice.mp3
# Mux into the video:
ffmpeg -i output/DATE-SLUG/SLUG-16x9.mp4 -i voice.mp3 \
推荐工具
换一个关键词,或者移除筛选条件。
安装
npx skillfish add hueanmy/ai-shorts-generator