Communitygithub.com

marsik641/space-shorts

实现太空科普短视频(Shorts)管道第 2 至第 4 步:在工作树中制作英文垂直短片(≤30 秒),涵盖事实核查、视觉简报、脚本、镜头设计、英雄帧以及粗剪视频,以供审批;之后通过双渲染 PC 的共享队列完成最终渲染,直至发布(MP4 + publish_en.md)并将分支合并到 main。在收到“做 N 版”、“/make-video”、“开始做关于 X 的视频”、“准备上传包”等指令时使用。

space-shorts 是什么?

该技能实现了一个完整的、自动化的太空科普短视频制作管道,专门用于“The Universe Inside Out”频道的英文 Shorts 视频。它涵盖了从用户选择创意到最终发布的全过程,包括事实调研与核查、视觉简报编写、剧本生成、场景与镜头设计、英雄帧渲染、粗剪视频制作,以及通过共享渲染队列在多台 PC 上完成最终渲染。技能严格遵循质量文档(docs/quality.md),确保视频具有电影感而非信息图风格,目标时长 29–29.5 秒,最长不超过 30 秒,且仅使用英文。最终交付物为 1080x1920 分辨率、60fps 的 MP4 文件和发布用 Markdown 文档,所有更改都将自动提交并合并到主分支。此技能适用于 Claude Code、Codex 等 AI 开发工具,通过自然语言指令(如“/make-video”、“ запускай ролик про X”)触发,可显著提升视频创作效率与一致性。

兼容平台✓Claude Code✓Codex CLI✓Cursor
npx skills add https://github.com/marsik641/space-shorts/tree/HEAD/.agents/skills/make-video

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

/make-video — 步骤 2–4:从选题到合并发布

输入:用户从当前工作树的 ideas 文件中做出的选择(“/make-video N”+ 修改)或用户指定的对象。 输出 = 完成定义(DoD)(参见 AGENTS.md,“聊天管道”):out/<ep>/release/ 目录下的主视频文件 <ep>_en_1080x1920p60.mp4 和 publish_en.md,共两个文件,交付给用户;视觉 QA 通过;所有更改已提交;分支已合并到 main(通过 video_wt.py finish);工作树已移除。 质量标准 — docs/quality.md:电影感而非信息图;事实用语言表达,视觉效果用画面呈现;最终渲染不超过 6 小时 GPU。 仅限英文,目标时长 29–29.5 秒,最长 30.0 秒(docs/shorts_format.md)。 参考链接:流程 — docs/pipeline.md;审批 — docs/approval.md;发布包 — docs/publish.md;角色 — docs/workflows.md;库 — docs/spacekit.md;时间 — docs/timings.md;队列 — docs/render_queue.md;智能体、提交、常见问题 — AGENTS.md。 命令:在工作树根目录下使用 Git Bash;<ep> 表示 epNNN_<slug>。

步骤 0 — 工作树,队列,提交

  • 分支为 video/epNNN…,在 /next-video 之后继续使用。如果聊天在未执行 /next-video 的主仓库副本中,则执行 python tools/video_wt.py start → Claude 使用 EnterWorktree (参数 path) / Codex 使用 workdir。
  • Blender、TTS、音乐、合成 — 仅通过队列进行:提交任务后,聊天可继续处理文本工作。
  • 每个模块完成后需提交,提交信息格式为 type(<ep>): …,并包含模型轨迹。每次步骤结束时,工作树应为干净状态。

第一部分 — 审批前

  1. 剧集。 执行 python tools/video_wt.py claim <slug>(slug 为 [a-z0-9_],不超过 16 个字符,根据目录名称确定)。将 episodes/_template/ 复制到 episodes/<ep>/,在 episode.json 中设置 id 为文件夹名称,languages: ["en"](不设置 frames_dir/audio_dir 路径)。在 ideas 文件末尾追加:已选择: N, <日期>, 修改: …, 剧集: <ep>。 提交:feat(<ep>): 从 N 号方案创建剧集。
  2. 事实调查:研究员 + 事实核查员(docs/workflows.md) → facts.md(每个数字附带链接,视觉参考资料)。提交。
  3. 视觉简报 visual_brief.md(角色:“导演”):参考资料,首帧,核心镜头,色调,光照,每个镜头的摄像机与事件,惯例,预算。“电影感/惊艳”评论家对简报进行评审 → 修改。提交。
  4. 脚本 script_9x16.json(英文):6–8 个段落,时间锚点 at(秒),总时长 29–29.5 秒(严格 ≤ 30.0 秒),约 55–70 个单词;第一句为事实钩子;最后一句引导回开头(循环)。en_cap 中的数字,| 表示手动换行(参考 docs/pipeline.md,“字幕与副标题”)。频道语音:Kokoro af_heart ×0.98。提交。
  5. 场景与镜头。 system.py(实际参数 → 屏幕显示,惯例写在 docstring 中);缺失部分通过 spacekit/ 模块补充(独立提交 feat(spacekit): …,回归测试使用 tools/imgdiff.py)。根据简报编写 shots_9x16.py:6–10 个镜头,每个 2–5 秒,每个镜头至少包含 3 个深度平面,关键帧 + 对比帧,辉光/光晕,摄像机运动,运动模糊,背景不空(docs/quality.md)。episode.json(剪辑,覆盖层 en,字幕在安全区域内),music_cues.json(使用自己的调式/调性/速率)。剪辑点对齐事件;最后一帧等于第一帧。 剪辑帧数总和 ≤ 1799(60 fps 下)。执行 python tools/check_episode.py episodes/<ep>/episode.json。提交。
  6. 时间预览:执行 python tools/render_queue.py submit preview episodes/<ep>/episode.json --with-tts,查看状态 status --json。生成 out/<ep>/9x16/sheet_prev.png;无 Traceback/OVERRUN,有 FLASH/EVENT;提示列表通过 python tools/cues.py episodes/<ep>/episode.json --logs out/<ep>/9x16/logs 生成。
  7. 英雄帧:按镜头提交 submit preview … --hero --shots vN --frames F,F+1,F+2(F 为该镜头最佳时刻;100% 分辨率,不带 --samples — 使用镜头代码中的采样,与最终渲染一致) → 生成 out/<ep>/9x16/hero/,sheet_hero.png。向评论家和所有者展示第 F 帧;根据日志 hero_vN.log 获取该帧所需时间及预计总时间(docs/timings.md)。在 shots_9x16.py 中调整采样和重效果(提交后重新生成英雄帧),确保最终渲染耗时 4–6 小时,而不是 1 小时。
  8. 评论(docs/workflows.md):“电影感/惊艳”(对每个镜头打分 1–10,低于 8 分需重做,最多进行 3 轮),构图,节奏/钩子,事实(仅 4 个阻塞点,参考 docs/quality.md);可选:独特性,音效。修改后重复步骤 6–7。 报告保存为剧集文件夹中的文件,每轮评论单独提交 fix(<ep>): 根据评论修改,第 K 轮。
  9. 粗剪视频 完整版(docs/approval.md,1a):在镜头中使用 draft 函数,通过 submit task 提交剧集级 preview_movie.py。如果未能生成,则在无粗剪视频的情况下提交审批,消息中注明“粗剪视频:无”。
  10. 审批:按照 docs/approval.md 模板发送消息,附带文件(英雄帧、粗剪视频)。提交当前状态。 停止并等待回复。 如有修改,返回相应步骤。

第二部分 — 收到“ok”后:至完成定义(除 docs/approval.md 中定义的暂停外,不再提问)

  1. 审批记录。 准备最终的提示列表(cue-list)和根据 docs/publish.md 编写的 publish_en.md(惯例以列表形式列出)。提交:chore(<ep>): 审批通过,准备渲染(用户的修改写在提交正文中)。
  2. 最终渲染。 执行 python tools/render_queue.py submit final episodes/<ep>/episode.json --approved '用户审批:日期、聊天上下文'。该标志记录已获得的同意,而非替代它。 向用户提供任务 ID、渲染 PC 和预计完成时间。Worker 会自动选择 PC,分批渲染(每批 120 帧),并执行帧检查、TTS、音乐、混音、剪辑构建、合成、机器 QA 和发布。聊天可以关闭。
  3. 状态与故障。 使用 status --json 查看进度(cursor/steps 表示进度;任务结束前的帧保存在 snapshot 中,而非 out/<ep>/)。failed 状态 — 日志保存在快照中;临时环境故障 — 执行 retry JOB;代码/脚本修改 — 执行 cancel JOB,在工作树中修改,必要时重新审批,然后提交新任务。帧检查 FAIL — 分析原因后执行 RERENDER,删除快照中(以及远程)的坏帧,然后执行 retry JOB --rerender-shots vN。pause/resume 可在批次间执行。不要终止顶层的 bash 进程。
  4. 视觉 QA。 needs_review 表示机器检查完成且发布包已就绪。查看 PNG 文件夹 out/<ep>/9x16/qa_en/ 和主视频:质量不低于英雄帧(无噪点、模糊、过曝、闪烁),安全区域正确,字幕同步,循环正常。 如果质量合格,执行 python tools/render_queue.py accept JOB;存在缺陷则修改后提交新任务。
  5. 交付。 将 out/<ep>/release/ 中的两个文件交付给用户(Claude 使用 SendUserFile)。如果在渲染期间源文件发生变化,则需要在提交前比对快照中的发布文件和剪辑 JSON 文件。
  6. 记录。 更新 episodes/INDEX.md(镜头、技术、语音、调性、钩子),README.md 中的剧集表格,docs/channel.md 中的 ✅ 主题,docs/timings.md 中的每帧时间统计,并将经验教训写入相应文档。提交:docs(<ep>): 记录与经验教训(包含剧集代码、edit_9x16_en.json、publish_en.md;不包含 out/ 目录)。
  7. 合并。 执行 python tools/video_wt.py finish — 确保工作树干净 → release → accept → git merge main → 运行 check_episode 和测试 → 快进 main → 将 out/<ep>/ 移至主仓库副本。如果出现冲突,在工作树中解决,提交,然后重试。 然后退出工作树(Claude 使用 ExitWorktree keep),在主仓库副本中执行 python tools/video_wt.py remove epNNN;如果工作树是由 start --here 创建的,则不要删除。至此,才能告知“完成”。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相关技能