yt-dlp+ffmpeg 自动化视频工作流:awesome-seedance-2-prompts 下载压缩上传全解析
【免费下载链接】awesome-seedance-2-prompts🎬 2000+ curated Seedance 2.0 video generation prompts — cinematic, anime, UGC, ads, meme styles. Includes Seedance API guides, character consistency tips, and advanced video workflows.项目地址: https://gitcode.com/gh_mirrors/aw/awesome-seedance-2-prompts
awesome-seedance-2-prompts 是一个为 Seedance 2.0 视频生成模型整理的高质量提示词集合(2000+ 条精选视频生成提示词)。项目使用yt-dlp与ffmpeg打造了一条全自动化的视频工作流:自动抓取最新提示词数据 → 下载源视频 → 压缩瘦身 → 上传到仓库 Release,最终为 15 种语言生成可内嵌播放视频的 README。下面逐步拆解这条"下载—压缩—上传"流水线,帮助新手快速理解它的自动化设计。
📚 项目是什么
awesome-seedance-2-prompts 收集了来自社区的 Seedance 2.0(字节跳动多模态视频生成模型)创作案例,覆盖电影感、动漫、UGC、广告、梗片等多种风格。仓库中每个提示词都附带描述、提示词正文、参考图和可播放视频,并且自动同步生成 15 种语言的 README。
🔄 自动化工作流总览
整条流水线由一个命令驱动(pnpm generate),执行顺序如下:
- 数据抓取:从 CMS 拉取最新 200 条 + 全部精选提示词,按 ID 去重合并;
- 增量下载:只处理尚未上传过的视频,已下载的直接跳过;
- ffmpeg 压缩:统一压到 720p、H.264 编码,体积大幅缩小;
- Release 上传:通过
ghCLI 批量上传到名为videos的 Release; - 映射存档:提示词 ID → 视频 URL 的映射写入
video-urls.json; - 多语言生成:为 15 种语言各生成一份 README。
📥 第一步:从 CMS 抓取提示词数据
数据抓取逻辑在 scripts/utils/cms-client.ts 中。它通过带 API-Key 的请求拉取两类数据:
- 最新 200 条提示词(按发布时间倒序);
- 全部精选(featured)提示词(按人工排序,可能比较旧)。
两份数据按 ID 去重合并,再逐条提取缩略图、参考图、视频源地址。没有缩略词的条目会被跳过,保证生成的 README 排版完整。
🎬 第二步:yt-dlp 双通道视频下载
核心逻辑在 scripts/download-videos.ts:
| 环节 | 策略 |
|---|---|
| 增量跳过 | 本地tmp/videos/{id}.mp4已存在则直接复用,不重复下载 |
| 优先通道 | 普通 HTTPfetch直接下载(快、稳) |
| 兜底通道 | fetch 失败时自动切换yt-dlp下载(可解析 Twitter/X 等视频页) |
| 超时保护 | 单视频下载限时 120 秒,失败自动跳过并继续下一个 |
下载的文件以提示词 ID 命名(如1001_raw.mp4),方便后续环节精确定位。
🗜️ 第三步:ffmpeg 压缩瘦身
下载完成后,脚本会用一条固定的 ffmpeg 命令对所有视频做统一压缩,关键参数如下:
| 参数 | 作用 |
|---|---|
-vcodec libx264 | H.264 编码,浏览器兼容性最好 |
-crf 28 | 质量参数,压缩率与画质的平衡点 |
-preset fast | 快速编码预设 |
-vf "scale='min(720,iw)':-2" | 限制长边 720p(原图更小则不放大) |
-an | 去掉音轨,README 场景无需音频 |
-movflags +faststart | 把索引放到文件头部,支持边下载边播放 |
如果压缩失败,脚本会自动回退使用原始文件,保证流程不中断。这一系列参数让每个视频都控制在适合网页嵌入的体积内。
📤 第四步:一键上传到 Release
上传逻辑在 scripts/upload-to-github.ts:
- 自动检查是否存在名为
videos的 Release,没有就创建; - 用
gh release upload将压缩后的视频逐个上传,文件重命名为{id}.mp4; - 每上传成功一个,就把"提示词 ID → 视频 URL"写入 video-urls.json;
- 已上传过的 ID 直接跳过,天然支持断点续传。
video-urls.json是整个工作流的"账本"——生成 README 时,就是靠它把每条提示词和它的视频链接对应起来。
📝 第五步:多语言 README 自动生成
主入口 scripts/generate-readme.ts 在下载上传完成后,遍历 15 种语言,调用 scripts/utils/markdown-generator.ts 生成对应的 README 文件(如README.md、README_zh.md)。视频链接会被自动内嵌到对应提示词下方:Release 视频 URL 在 GitHub 页面中可直接点击缩略图播放,无需进入网页。
🚀 快速上手
- 克隆仓库(如需要):
git clone https://gitcode.com/gh_mirrors/aw/awesome-seedance-2-prompts - 安装依赖:
pnpm install(同时需要本机装有yt-dlp、ffmpeg、ghCLI 并已登录) - 在
.env中配置CMS_HOST与CMS_API_KEY(见 scripts/utils/cms-client.ts) - 运行:
pnpm generate
下载模式可通过环境变量DOWNLOAD_VIDEOS控制:
auto(默认):增量模式,只处理新视频true:强制重新处理全部视频false:跳过下载,仅重新生成 README
依赖声明见 package.json,多语言文案见 scripts/utils/i18n.ts,项目采用 CC BY 4.0 协议(见 LICENSE)。
📁 核心文件速查
| 文件 | 职责 |
|---|---|
| scripts/generate-readme.ts | 工作流主入口,串联下载、上传、生成 |
| scripts/download-videos.ts | yt-dlp 双通道下载 + ffmpeg 压缩 |
| scripts/upload-to-github.ts | Release 自动创建与视频上传 |
| scripts/utils/cms-client.ts | CMS 数据抓取与字段解析 |
| scripts/utils/markdown-generator.ts | 15 语言 README 模板与渲染 |
| video-urls.json | 提示词 ID 与视频 URL 的映射账本 |
💡 小结
这条工作流的设计亮点在于处处留有余量:fetch 失败有 yt-dlp 兜底,压缩失败有原文件兜底,已下载/已上传的都会被增量跳过。单命令即可完成"抓取—下载—压缩—上传—多语言生成"的全流程,是小型内容仓库自动化运营的完整范本,值得做类似社区合集的同学参考。
【免费下载链接】awesome-seedance-2-prompts🎬 2000+ curated Seedance 2.0 video generation prompts — cinematic, anime, UGC, ads, meme styles. Includes Seedance API guides, character consistency tips, and advanced video workflows.项目地址: https://gitcode.com/gh_mirrors/aw/awesome-seedance-2-prompts
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考