Skip to content

maxazure/video-editing-skill

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

109 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Video Editing Skill — 视频剪辑技能

这是一个面向 口播、教程、访谈、播客切片、录屏演示 / facecam demo 的 AI 视频剪辑生产线:给它原始口播音频/视频、transcript、B-roll、摄像头小窗或素材目录,它可以把“还没整理的素材”推进到 可发布的小红书 / 抖音 / 视频号短视频

它不是一个单点 FFmpeg 脚本,而是一条完整工作流:转写 → 长视频择段 → 清稿 → 去口头禅/停顿 → 重组故事 → 分镜 → B-roll/生图/生成视频规划 → 字幕与声音设计 → 渲染前预检 → 单次编码渲染 → 质检 → 多平台导出 → 标题文案 → 续跑交接。适配 小红书 / 抖音 / 微信视频号 的比例、节奏、字幕、文案和常见审核风险。

适合做什么

  • 把口播短视频从“素材堆”推进到“发布包”:转写、清稿、分镜、素材清单、渲染配置、字幕 sidecar、QA、标题正文和标签都能落成可审计 artifact。
  • 针对中文社媒口播做过生产化调参:Heavy CJK 字幕、1.25x 主输出、响度规范化、平台违禁词 lint、章节卡、贴纸、BGM/SFX cue、三平台导出都不是通用 demo。
  • 生成式素材有明确审批和台账:Codex image_gen / GPT Image 2 提示词、Dreamina/Veo/LTX/Wan/Sora 视频提示词、provider 决策、submit_id 轮询下载和本地落盘 gate 都先记录再执行。
  • 适合交给强推理模型做长流程代理执行:在 GPT-5.5Claude Opus 4.8 这类面向复杂专业任务、agent 工作流的模型下,本 skill 对 口播类短视频 至少可以替代 80% 的常规视频剪辑工作

这里的“80%”是按口播短视频生产来评估的:它已经覆盖素材整理、ASR、清稿、粗剪、字幕、B-roll/图像/生成视频规划、声音 cue、渲染前预检、渲染、质检、多平台导出和发布文案。剩下通常需要人工负责的是选题判断、最终审美取舍、品牌口吻、客户确认、复杂手工精修、调色混音和需要逐帧 keyframe 的高级特效。

项目现状与边界

做得比较完整的地方:

  • 定位清楚:口播、教程、访谈、录屏和长视频切短视频是高重复剪辑场景,脚本化收益高。
  • 流水线完整:从 transcript 到 publish gate 的 artifact 很全,失败点可复查,不依赖聊天上下文记忆。
  • 风险控制到位:内容合规、素材授权、隐私遮挡、生成任务审批、渲染 QA、pipeline manifest 都有阻塞门禁。
  • 本地优先:核心剪辑、渲染、质检不需要云端服务;外部生成任务只做规划、审批和台账。

需要用户知道的边界:

  • 不应包装成全类型剪辑替代品:电影感剪辑、MV、广告大片、复杂调色混音和精细动效仍需要专业人工。
  • AI 生成素材不等于自动可用:Dreamina/Veo/Sora 等结果必须经过下载、授权、视觉连续性和 QA 检查。
  • 平台规则不是法律意见content_guard.py 能拦常见风险词,但最终发布仍要人审。
  • README 和 SKILL 偏长:功能很全,但新用户需要先走推荐入口,不适合从完整脚本文档硬读。

视频素材理解

当前版本已经加入可选的视频理解层:基础流程不依赖机器视觉模型,安装 ultralytics 后可以用 YOLO 对抽样帧做物体检测,并把结果整理成统一的 video_understanding.v1

  • extract_keyframes.py 会抽关键帧和时序图,帮助 agent/用户快速看懂一段视频的视觉内容。
  • scene_boundaries.py 用 FFmpeg scene score 做视觉场景边界检测,供长视频拆条和 highlight snap 使用。
  • video_understanding.py 会按固定间隔和场景边界抽帧;--detector yolo 会运行 Ultralytics YOLO,输出 frames[]detections[]tracks[]scene_tags[] 和 review Markdown。
  • media_library.py 会读取视频元数据、文件名、标签、素材来源和关联 transcript,用透明分数推荐本地 B-roll。
  • smart_reframe.py 可以读取 video_understanding.json,按人脸、人物、主体、物体等权重生成竖屏/方屏重构图计划。
  • privacy_redact.py 可以读取同一份检测框或人工框,对人脸、车牌、屏幕敏感区域生成 blur/pixelate/mask 计划。

这个设计是有意的:YOLO/RT-DETR/MediaPipe 等模型会带来模型下载、GPU/Metal/CUDA 兼容和速度问题;对大量口播视频来说,ASR + 关键帧 + 场景边界已经能覆盖主要剪辑决策。因此本项目把 YOLO 做成“需要时打开”的增强能力,而不是强制依赖。

video_understanding.py 的工作方式:

  1. 先用 FFmpeg 按场景边界和固定间隔抽帧,避免对每一帧跑模型。
  2. 如果安装了 ultralytics,用 YOLO 检测 personphonelaptopscreen/tvcarbottle/cup 等短视频常见对象。
  3. 用采样帧上的 bbox 做轻量 IoU/中心点关联,合并成 tracks[],用于判断主体是否移动、是否大面积占画、是否适合自动重构图。
  4. 输出统一的 video_understanding.v1
    • frames[]:时间戳、关键帧路径、场景 id。
    • detections[]:label、bbox、confidence、source model。
    • tracks[]:主体轨迹、出现时间段、中心点、面积变化、运动强度。
    • scene_tags[]:人物、屏幕、产品、街景、车辆、手部演示等可检索标签。
    • warnings[]:未启用 detector、未检测到对象、低置信度检测等。
  5. 下游复用这个 JSON:smart_reframe.py 做主体感知裁切,privacy_redact.py 做隐私遮挡,media_library.py 写入视觉标签,storyboard_assets.py 选择更匹配的 B-roll,pipeline_manifest.py 可把未复核的视觉检测列为 gate。

常用方式:

# 可选:只有需要 YOLO 检测时安装
pip install ultralytics

python3 scripts/scene_boundaries.py origin/talking.mp4 \
  --output work/scene_boundaries.json \
  --markdown work/scene_boundaries.md

python3 scripts/video_understanding.py origin/talking.mp4 \
  --output work/video_understanding.json \
  --markdown work/video_understanding.md \
  --frames-dir work/video_frames \
  --scene-boundaries work/scene_boundaries.json \
  --detector yolo \
  --model yolo11n.pt \
  --sample-interval 2 \
  --max-frames 32 \
  --strict

python3 scripts/smart_reframe.py origin/talking.mp4 \
  --detections work/video_understanding.json \
  --platform douyin \
  --output work/reframe_douyin.json \
  --markdown work/reframe_douyin.md

如果不想安装 YOLO,也可以只生成抽样帧和 review shell:

python3 scripts/video_understanding.py origin/talking.mp4 \
  --output work/video_understanding.json \
  --markdown work/video_understanding.md

对于需要更细的逐帧动态跟踪的素材,可以把 Ultralytics model.track(..., tracker="bytetrack.yaml")、BoT-SORT 或 Norfair 的结果转换成同一份 detections[] / tracks[] JSON 再交给本项目。当前内置版本优先服务口播剪辑:抽帧检测 + 轻量轨迹已经足够支持主体裁切、隐私遮挡提示和 B-roll 标签。

口播音频 + 无声素材
   │
   ├─→ transcribe.py            转写 + 词级时间戳 + 口误标记
   │                            (mlx-whisper / faster-whisper / openai-whisper)
   │
   ├─→ video_understanding.py   抽样帧 + 可选 YOLO 物体检测
   │                            frames / detections / tracks / scene_tags
   │
   ├─→ highlight_picker.py      长视频精华候选 / brief-query 定向找片段
   │                            输出 score / hook / reason / render_config
   │
   ├─→ rough_cut.py             ASR 粗剪 → 去纯口头禅 / 相邻重复句
   │                            输出可审计 cut list,可选单次 concat 渲染
   │
   ├─→ rewrite_script.py        LLM 重组为 5 段式 (hook/pain/turn/value[]/cta)
   │     ↑ 8 hook 模板 + 5 CTA 模板 + 3 故事结构
   │
   ├─→ content_guard.py         80+ 条平台雷区 lint (HARD-BLOCK / SOFT-WARN)
   │     极限词 / 导流 / 医美 / 财富诱导 ...
   │
   ├─→ auto_enrich.py           调度 B-roll / 章节卡 / 贴纸 / BGM 卡点
   │     │ transition / entity match / silence boundary / beat snap
   │     │
   │     └─→ imagegen_hint.py   抽象概念检测 → gpt-image-2 提示词
   │           ↓                 (Codex 内置 imagegen 工具直接执行;无 API key)
   │           Codex imagegen   注意力机制 / 复利 / 信息茧房 等自动配图
   │
   ├─→ audio_cue_sheet.py       transcript → BGM / SFX 音频设计清单
   │                            本地素材优先 / 生成审批 / pipeline gate
   │
   ├─→ storyboard_plan.py       transcript/clean_script → shot cards
   │                            生成路由 / 连续性锚点 / Dreamina 额度提醒
   │
   ├─→ video_prompt_pack.py     Dreamina/Veo/LTX/Wan/Sora 提示词包
   │                            角色/品牌一致性 / image-to-video / paid approval gate
   │
   ├─→ generation_task_log.py   异步生成任务台账
   │                            submit_id / 轮询 / 下载 / 本地落盘 gate
   │
   ├─→ storyboard_assets.py     shot cards → 素材任务清单 / ready 预检
   │                            imagegen / Dreamina / motion / broll 状态表
   │                            可选接入 media_library.py recommend 排名候选素材
   │
   ├─→ stock_material_plan.py   stock B-roll 搜索规划
   │                            Pexels / Pixabay / Coverr 查询计划 + 素材登记提示
   │
   ├─→ screen_focus.py          录屏点击/热点 → focus_events 聚焦计划
   │                            render_final 自动放大、标记、标签
   ├─→ pip_overlay.py           录屏 + facecam → pip_overlays 小窗计划
   │                            render_final 单次编码合成 PIP camera
   │
   ├─→ jump_cut.py              自适应静音检测 → cut list → 去停顿成片 + 切点音频 fade
   │     └─→ timeline_view.py   切点 filmstrip + waveform 人工复核图
   │
   ├─→ edit_preflight.py        render_config/enrich_plan/cut list 渲染前预检
   │                            缺文件、空剪辑、非法时间段、危险参数 gate
   │
   ├─→ render_final.py          单次编码渲染 + enrich_plan 自动接入
   │     B-roll / 章节卡 / 贴纸 / 生成图 / 点击聚焦 / PIP camera + Heavy 字幕 + 响度规范化
   │     可选 --versioned-output:输出 _V<N>,避免覆盖旧成片
   │
   ├─→ render_qa.py             渲染后黑屏/静帧/静音/尺寸质检 + review packet
   │     └─→ timeline_view.py   QA 可疑区间可视化复盘
   │
   ├─→ subtitle_pack.py         SRT / VTT / ASS / JSON 字幕交付包
   │                            支持 render_config 串接、加速倍率、片头 offset 对齐
   │
   ├─→ import_capcut_subtitles.py
   │                            剪映/CapCut 自动字幕 → transcript / gap cut list
   │
   ├─→ project_resume.py        续跑上下文包 / agent handoff / 可选 CLAUDE.md
   │
   ├─→ export_edl.py            render_config / cut list → EDL + manifest
   ├─→ export_fcpxml.py         render_config / cut list → FCPXML + manifest
   │                            交给 Premiere / Final Cut Pro / Resolve
   │
   ├─→ multi_export.py          小红书 3:4 / 抖音 9:16 / 视频号 ≤60s
   │
   └─→ generate_caption.py      标题 + 200-500 字正文 + 3-6 tags + 发布时段建议

适用场景:daily 短视频、口播为主的内容(创业/AI/职场/效率/Vlog)、要发小红书/抖音/视频号 不适用:电影感剪辑、纯音乐 MV、需要精细 keyframe 控制的特效视频


60 秒上手

# 1. 装好依赖(macOS Apple Silicon 为例)
brew install ffmpeg
pip install mlx-whisper Pillow

# 2. 克隆
git clone https://github.com/maxazure/video-editing-skill ~/projects/video-editing-skill
cd ~/projects/video-editing-skill

# 3. 环境自检(应该全 ✅ 或 ⚠️ 可选项)
python3 scripts/utils.py

# 4. 跑一遍测试套件确认 OK
pytest tests/           # 394 个测试,约 5 秒

每天做一条视频的完整模板:docs/prompts/15-xhs-daily-tech-video.md


安装

必装

依赖 用途 装法
ffmpeg 一切视频/音频处理 macOS: brew install ffmpeg · Linux: apt install ffmpeg
python3 ≥3.10 跑脚本 系统 / pyenv / brew
Whisper 语音识别 见下表

Whisper 引擎(按平台选一种)

平台 推荐引擎 安装命令
Apple Silicon (M1/M2/M3/M4) mlx-whisper pip install mlx-whisper
NVIDIA GPU (CUDA) faster-whisper pip install faster-whisper
Intel / AMD / CPU only faster-whisper (CPU) pip install faster-whisper
后备 openai-whisper pip install openai-whisper

中国用户走清华镜像:

pip install mlx-whisper -i https://pypi.tuna.tsinghua.edu.cn/simple

NVIDIA GPU 配置详见本文末尾的 Linux GPU 配置 段。

可选

依赖 启用 缺时回落
Pillow 章节卡 PNG 渲染(auto_chapter_cards) 不能跑章节卡
librosa BGM 真实节拍检测 用 120 bpm 固定网格
pyyaml profile YAML 读取加速 用内置 fallback parser
spacy + zh_core_web_sm 高级 B-roll 命名实体识别(V3.2+ 路线图) 用关键词列表匹配

AI 图像生成(gpt-image-2)

运行环境 路径 凭证
Codex CLI(推荐) 用 Codex 内置 imagegen 工具,自动路由 gpt-image-2 无需 OpenAI API key
Claude Code / 其他 用 OpenAI Python SDK(openai.images.generate),或任何能调 gpt-image-1.5/2 的工具 需要 OPENAI_API_KEY

生图优先使用 Codex 内置 image_gen 工具,即 OpenAI GPT Image 2(gpt-image-2)。

本 skill 只负责产出提示词imagegen_hint.py)+ 提供模板库prompts/imagegen_templates.yaml)—— 不内置 OpenAI 客户端。在 Codex 里 agent 直接调内置 imagegen;其他环境用户自行接入。

完整规则详见 docs/prompts/19-imagegen.md


V3 核心能力

🛡️ Content Guard — 平台雷区 lint

scripts/content_guard.py · 详细文档

80+ 条 regex 检查 4 类硬性违规 + 3 类软性警告:

级别 类别 例子
🚫 HARD 广告法极限词 最 / 第一 / 唯一 / 万能 / 全网最低 / 遥遥领先
🚫 HARD 导流外站 微信 / VX / wx / +V / 加微 / QQ / 手机号 / 抖音 / 二维码
🚫 HARD 医美/医疗 治愈 / 根治 / 祛斑 / 抗衰 / 水光针 / 热玛吉 / 医生同款
🚫 HARD 财富诱导 年入 X 万 / 躺赚 / 财富自由 / 稳赚不赔 / 零成本 / 暴利
⚠️ SOFT 标题/正文 标题 >20 字、!!! 连用、emoji 占比 >30%、正文 >800 字

render_final.py / rewrite_script.py / generate_caption.py 自动调用——HARD 违规导出退出码 2。

📖 Story Engine — 让 AI 按小红书爆款公式重组

scripts/rewrite_script.py · hook 模板 · CTA 模板

  • 8 个钩子模板:反常识、痛点共鸣、数字成绩、悬念问句、身份标签、反差对比、利益承诺、场景代入
  • 5 个 CTA 模板:按小红书 CES 权重(关注 8 > 评论/分享 4 > 收藏/点赞 1)排序
  • 3 种故事结构pain_solve(干货)/ story_reversal(故事)/ listicle(盘点)

不绑定任何 LLM 提供商——脚本输出 prompt,你喂给 Claude / ChatGPT,把返回 JSON 喂回脚本验证 + 物化为 clean_script.md

🎬 Auto-Enrich — 自动加 B-roll / 章节卡 / 贴纸 / 卡点

详细文档

模块 触发逻辑
auto_broll.py 转折词(但是/然而/关键是/重点来了)/ 实体匹配素材库 / 长镜头守卫
auto_chapter_cards.py ## 章节标题 / 静音 ≥1.5s 边界 / Pillow PNG 渲染
beat_sync.py librosa beat_track + ±200ms snap(缺时回落固定网格)
auto_stickers.py 情绪关键词→emoji 池(excited 🚀✨🔥 / doubt 🤔 / data 📈 等)
auto_enrich.py 编排上面四个,输出综合 plan JSON(含 imagegen cues)

render_final.py --enrich-plan work/enrich_plan.json 会把 plan 里的 B-roll、章节卡、贴纸和已生成图片 cue 自动接回单次渲染;--enrich-plan 可重复传入,用来叠加 screen_focus_plan.json 这类独立计划。没有实际文件的 imagegen cue 会保留为提示,不会阻塞导出。

👁️ Video Understanding — 抽样帧 + 可选 YOLO 检测

scripts/video_understanding.py · 详细文档

为口播、访谈、产品演示和户外素材补上结构化视觉线索:先按时间和场景边界抽帧;需要时再用 Ultralytics YOLO 识别人、手机、电脑、屏幕、车辆、杯子等常见对象;最后输出可审计的 video_understanding.v1

常用:

python3 scripts/video_understanding.py origin/talk.mp4 \
  --output work/video_understanding.json \
  --markdown work/video_understanding.md

pip install ultralytics
python3 scripts/video_understanding.py origin/talk.mp4 \
  --scene-boundaries work/scene_boundaries.json \
  --detector yolo \
  --model yolo11n.pt \
  --output work/video_understanding.json \
  --markdown work/video_understanding.md \
  --strict

输出可以直接交给 smart_reframe.py --detections 做主体感知裁切,也可以交给 privacy_redact.py --detections 做隐私遮挡计划。ultralytics 不是必装依赖;没有 detector 时仍然能生成抽样帧和 review shell。

🔎 Highlight Picker — 长视频精华候选 / brief 定向找片段

scripts/highlight_picker.py · 详细文档

长视频拆短视频时,先从 transcript.json 生成可发布候选,输出透明 scoresignalswarningshook_textreason 和可选 render_config。默认模式会找 hook/value/duration 表现好的短视频片段;如果用户已经知道要找什么,加 --brief--query 做 prompt-based clipping。

常用:

python3 scripts/highlight_picker.py \
  --transcript work/long_transcript.json \
  --brief "产品发布 用户反应 价格对比" \
  --scene-boundaries work/scene_boundaries.json \
  --video origin/long-talk.mp4 \
  --output work/brief_highlights.json \
  --markdown work/brief_highlights.md \
  --render-config work/brief_render_config.json \
  --platform douyin \
  --num-clips 3 \
  --strict

--brief 会把自然语言意图拆成英文关键词和中文短语片段,写入每条 candidate 的 brief_match.scorematched_terms,但仍保留原来的自包含结尾、弱 hook、时长偏离等 warning。适合“找产品 reveal / 用户强反应 / 教程关键步骤 / 失败教训”这类定向剪片。

🎨 Color Grade — 可审计调色计划

scripts/color_grade.py · 详细文档

借鉴 agent 视频编辑工具对 color grading / filters 的重视,但保持本项目的单次编码原则:先生成 bounded color_grade.v1 调色计划和 Markdown review,最终由 render_final.py --color-grade 在字幕前接入同一条 FFmpeg filter graph。

常用:

python3 scripts/color_grade.py \
  --preset screen \
  --output work/color_grade.json \
  --markdown work/color_grade.md

python3 scripts/render_final.py \
  --config work/render_config.json \
  --color-grade work/color_grade.json \
  --output output/tutorial_master.mp4

内置 naturalwarmcoolpunchysoftcinematicscreen 七个 preset;自定义 brightnesscontrastsaturationgammatemperaturetintsharpness 会被限制在保守范围内,--strict 在参数被 clamp 时返回 2。若主片已经渲染完,也可以用 color_grade.py --input output/master.mp4 --render-output output/master_grade.mp4 做单独复版;日常推荐仍是在 render_final.py 里一次编码完成。

🎧 Audio Cue Sheet — BGM / SFX 音频设计清单

scripts/audio_cue_sheet.py · 详细文档

借鉴 OpenMontage / vibeframe / Claude Code Video Toolkit 这类 agentic video 项目对 narration、music、SFX、成本和 review report 的一等公民设计,但保持本项目轻量:只读 transcript 和本地素材目录,不生成音乐、不提交 TTS、不消耗 provider credits。

常用:

python3 scripts/audio_cue_sheet.py \
  --transcript work/transcript.json \
  --asset-root media/bgm \
  --asset-root media/sfx \
  --output work/audio_cue_sheet.json \
  --markdown work/audio_cue_sheet.md

python3 scripts/audio_cue_sheet.py \
  --transcript work/transcript.json \
  --asset-root media \
  --require-local-music \
  --require-local-sfx \
  --output work/audio_cue_sheet.json \
  --markdown work/audio_cue_sheet.md \
  --strict

输出 audio_cue_sheet.v1voice_track 记录主口播响度目标,music[] 给出全片 BGM mood / BPM / prompt / 本地候选或生成需求,sfx[] 根据“但是 / 重点 / 完成 / 风险”等触发词排 whoosh、ping、chime、warning tick。--strict 会在要求本地 BGM/SFX 但素材缺失时返回 2;pipeline_manifest.py 会自动识别 audio_cue_sheet.json 并把 summary.blocking > 0 列为 blocking gate。

🎞️ Storyboard Plan — 分镜与生成路由

scripts/storyboard_plan.py · scripts/video_prompt_pack.py · scripts/storyboard_assets.py · 分镜文档 · 视频提示词包文档 · 素材清单文档

借鉴 GitHub 上视频生成类项目的 storyboard / shot continuity / provider routing 思路,但保持本项目的轻量原则:脚本只做本地规划,不提交任何付费生成任务。

输出 说明
storyboard_plan.json 每个 shot 的时间码、source segments、section、narration、keywords、visual first/motion/last frame
generation_route codex_imagegen / dreamina_video / remotion_hyperframes / media_library_broll + fallback + why
continuity.anchors 系列色彩、比例、字幕安全区、上一镜头引用、关键词线索
storyboard_plan.md 适合人工 review 的 shot cards,含 prompt 和检查项
video_prompt_pack.json 每个 shot 的 Dreamina/即梦 Seedance、Veo、LTX、Wan、Sora 提示词、参考图路径、负面提示词和审批状态
storyboard_assets.json 每个 shot 对应素材是否 ready、需要生成/审批/渲染/搜索;B-roll 可带 candidate_scores 排名理由

常用:

python3 scripts/storyboard_plan.py \
  --transcript work/transcript.json \
  --clean-script work/clean_script.md \
  --output work/storyboard_plan.json \
  --markdown work/storyboard_plan.md \
  --max-shots 8 \
  --target-aspect 9:16

python3 scripts/storyboard_assets.py \
  --storyboard-plan work/storyboard_plan.json \
  --asset-root work \
  --media-library . \
  --output work/storyboard_assets.json \
  --markdown work/storyboard_assets.md

路由规则:抽象概念优先 codex_imagegen;数字/指标优先 remotion_hyperframes;动作/场景变化推荐 dreamina_video 但只标记为需确认,因为 Dreamina/即梦生成可能消耗 credits;其他先走本地素材库 B-roll。传 --media-library <project_dir> 时,storyboard_assets.py 会从 media_index.json / media_index.db 里按标签、文件名、时长和画幅推荐候选,并在 Markdown 表里显示分数。storyboard_assets.py --strict 会在素材未 ready 时返回退出码 2,适合渲染前拦截。生图优先使用 Codex 内置 image_gen 工具,即 OpenAI GPT Image 2(gpt-image-2)。

🎥 Video Prompt Pack — 视频生成提示词包

scripts/video_prompt_pack.py · 详细文档

借鉴 GitHub 上视频生成 skill 对多模型提示词、角色参考 sheet、image-to-video 和 provider 成本审批的做法,但保持本项目 artifact-first:只把 storyboard_plan.json 转成 video_prompt_pack.v1 和 Markdown review,不提交 Dreamina/Veo/LTX/Wan/Sora 任务,不消耗 credits。

常用:

python3 scripts/video_prompt_pack.py \
  --storyboard-plan work/storyboard_plan.json \
  --asset-root work \
  --character "same Chinese founder-host, navy jacket" \
  --brand-anchor "palette=charcoal,white,signal yellow" \
  --output work/video_prompt_pack.json \
  --markdown work/video_prompt_pack.md \
  --strict

python3 scripts/video_prompt_pack.py \
  --storyboard-plan work/storyboard_plan.json \
  --asset-root work \
  --provider dreamina_seedance \
  --animate-stills \
  --approved \
  --output work/video_prompt_pack.json \
  --markdown work/video_prompt_pack.md

输出 global.character_sheet_promptitems[].promptitems[].negative_promptitems[].reference.expected_path/resolved_pathitems[].approval_statussummary.blocking--strict 会在 generated-video provider 还没有 --approved 时返回 2;pipeline_manifest.py 会自动识别 video_prompt_pack.json 并把未清零的 summary.blocking 列为 blocking gate。Dreamina/即梦、Veo、LTX、Wan、Sora 等视频生成可能消耗 credits,提交前先确认并保持小批量。

🧾 Generation Task Log — 异步生成任务台账

scripts/generation_task_log.py · 详细文档

借鉴 PixVerse skills 的 task polling / asset download 能力和 Claude Code Video Toolkit 的跨会话项目状态管理,但保持本项目本地化:只记录异步生成任务状态,不提交 paid jobs。

常用:

python3 scripts/generation_task_log.py import-provider-decision \
  --provider-decision work/provider_decision.json \
  --log work/generation_tasks.json \
  --markdown work/generation_tasks.md \
  --strict

python3 scripts/generation_task_log.py add \
  --log work/generation_tasks.json \
  --provider dreamina \
  --task-id "<submit_id>" \
  --shot-id shot_002 \
  --expected-path work/generated_video/shot_002.mp4 \
  --status submitted \
  --markdown work/generation_tasks.md \
  --strict

python3 scripts/generation_task_log.py update \
  --log work/generation_tasks.json \
  --provider dreamina \
  --task-id "<submit_id>" \
  --status downloaded \
  --asset-path work/generated_video/shot_002.mp4 \
  --markdown work/generation_tasks.md

输出 generation_task_log.v1tasks[].provider_task_id 保存 Dreamina submit_id / provider task id,poll_command / download_command 保存下一步命令,readiness 区分 needs_approval / pending / processing / needs_download / missing_asset / failed / ready--strict 会在 summary.blocking > 0 时返回 2;pipeline_manifest.py 会自动识别 generation_tasks.json 并把未清零的异步任务列为 blocking gate。

🗂️ Media Library Recommend — 本地 B-roll 候选推荐

scripts/media_library.py

借鉴终端视频编辑工具里的 transcript-aware B-roll 选择思路,但只做本地索引和透明打分,不下载 stock、不调用外部视觉模型。推荐结果会保留 scorereasonsabsolute_path,方便 agent 或人工先确认再接入 render_config / enrich_plan

常用:

# 先建立或刷新素材库索引
python3 scripts/media_library.py init .
python3 scripts/media_library.py scan .

# 给某个分镜或口播段找 B-roll 候选
python3 scripts/media_library.py recommend "AI workflow dashboard" \
  --project-dir . \
  --category broll \
  --target-duration 3 \
  --target-aspect 9:16 \
  --json

# 让 storyboard_assets 的素材预检表直接带候选排名
python3 scripts/storyboard_assets.py \
  --storyboard-plan work/storyboard_plan.json \
  --asset-root work \
  --media-library . \
  --output work/storyboard_assets.json \
  --markdown work/storyboard_assets.md

# 本地素材不够时,先规划 stock 查询,不直接联网下载
python3 scripts/stock_material_plan.py \
  --subject "AI workflow automation" \
  --script work/transcript.json \
  --provider pexels \
  --provider pixabay \
  --provider coverr \
  --media-library . \
  --output work/stock_material_plan.json \
  --markdown work/stock_material_plan.md

# 下载/自有素材确认授权后,登记到素材库和 provenance 元数据
python3 scripts/media_library.py import /path/to/downloaded.mp4 \
  --project-dir . \
  --category broll \
  --copy \
  --provider pexels \
  --source-url "https://www.pexels.com/video/demo-123/" \
  --creator "Demo Creator" \
  --license "Pexels License" \
  --tag "workflow,dashboard"

打分规则:tag 命中权重大于文件名命中,其次是路径、metadata、关联 transcript;category=broll、视频类型、时长覆盖 cue、画幅接近目标比例会加分;默认过滤索引里已经不存在的文件,--include-missing 可用于清理 stale index。本地素材不足时,用 stock_material_plan.py 生成 Pexels / Pixabay / Coverr 查询计划;下载或客户给的素材再用 media_library.py import / annotate 写入 provider、source URL、creator、license 等元数据,供 asset_provenance.py 发布门禁复核。

🔍 Screen Focus — 录屏点击聚焦

scripts/screen_focus.py · 详细文档

借鉴 Screen Studio/Recordly/JianYing 类工具里的自动点击放大体验,但保持本项目的轻量方式:不录屏、不申请桌面权限,只把手工或工具导出的点击/热点事件转成可审计 focus_events enrich plan。

常用:

python3 scripts/screen_focus.py \
  --events work/clicks.json \
  --screen-width 1920 \
  --screen-height 1080 \
  --output work/screen_focus_plan.json \
  --markdown work/screen_focus_plan.md

python3 scripts/render_final.py \
  --config work/render_config.json \
  --enrich-plan work/screen_focus_plan.json \
  --output output/tutorial_master.mp4

focus_events[] 支持像素或 0-1 坐标、durationzoomtransitionmarker_colorlabelrender_final.py 会在对应时间段淡入放大裁切画面,并把 label 合并为 timed badge,适合软件教程、产品演示和操作录屏。

🎥 PIP Overlay — 录屏摄像头小窗

scripts/pip_overlay.py · 详细文档

借鉴 Loop 这类录屏编辑工具把 screen、microphone 和 optional camera 合成一个短反馈闭环的做法,但保持本项目的 artifact-first 方式:先把 facecam/camera 录制转成 pip_overlays[] 计划,复核 Markdown 后再交给 render_final.py --enrich-plan 单次编码合成,不混入 camera audio。

常用:

python3 scripts/pip_overlay.py \
  --camera origin/facecam.mp4 \
  --segment "0,18,bottom_right" \
  --segment "18,42,top_right" \
  --sync-offset 0.18 \
  --width-ratio 0.24 \
  --output work/pip_overlay_plan.json \
  --markdown work/pip_overlay_plan.md

python3 scripts/render_final.py \
  --config work/render_config.json \
  --enrich-plan work/screen_focus_plan.json \
  --enrich-plan work/pip_overlay_plan.json \
  --output output/tutorial_master.mp4

pip_overlays[] 支持每段独立 positionsource_startsync_offsetwidth_ratiomargin_ratioopacitytransitionrender_final.py 会随 --primary-speed / --speed 同步压缩 camera 小窗时间线,避免变速输出时讲解人画面和主画面错位。

📝 Subtitle Pack — SRT/VTT/ASS 字幕交付

scripts/subtitle_pack.py · 详细文档

借鉴 VideoLingo / Twick / ffsubsync 这类字幕工具对“可上传字幕文件、单行可读切分、时间线对齐”的重视,但保持本项目轻量:不重新转写、不调翻译/配音服务,只把现有 transcript.jsonrender_config.json 变成可校对、可上传的 sidecar 字幕包。

常用:

python3 scripts/subtitle_pack.py \
  --transcript work/day58_transcript.json \
  --output-dir output/subtitles \
  --basename day58 \
  --formats srt vtt ass json

python3 scripts/subtitle_pack.py \
  --config work/render_config.json \
  --output-dir output/subtitles \
  --basename day58_master \
  --speed 1.25 \
  --offset 2.0

--transcript 默认保留原始时间码;--config 默认按 render_final.py 的 clips 顺序串接时间线。--speed 对齐 --primary-speed--offset 对齐封面/片头秒数;中文默认 18 字单行、英文默认 42 字单行,也可用 --max-chars 覆盖。

🔁 CapCut Subtitle Import — 剪映字幕反向导入

scripts/import_capcut_subtitles.py · 详细文档

借鉴 SmartCut / CapCut 自动字幕工作流:先在剪映里用 Auto Captions 生成或人工校对字幕,再把字幕轨导回本项目,生成兼容 rewrite_script.pyrough_cut.pysubtitle_pack.pytranscript.json。需要按字幕间隙做初剪时,同一个脚本也能输出 keep_segments cut list,交给 timeline_view.pyexport_edl.py 复核。

常用:

python3 scripts/import_capcut_subtitles.py \
  --draft ~/Movies/JianyingPro/User\ Data/Projects/com.lveditor.draft/day58 \
  --transcript work/capcut_transcript.json \
  --cut-list work/capcut_gap_cut.json \
  --markdown work/capcut_subtitles.md \
  --gap-threshold 1.0

python3 scripts/import_capcut_subtitles.py \
  --srt exports/capcut_auto_captions.srt \
  --transcript work/capcut_transcript.json \
  --srt-output output/subtitles/capcut_clean.srt

默认只读取剪映草稿里的 subtitle 材料,避免把封面标题/贴纸文字误当口播字幕;如果某个草稿把自动字幕保存成普通文字轨,可加 --include-overlays--cut-list 是“字幕间隙代理”的保守粗剪,最终渲染前仍应跑 timeline_view.py --cut-list 人工复核。

✂️ ASR Rough Cut — 自动去口头禅/重复句

scripts/rough_cut.py · 详细文档

借鉴 FireRed-OpenStoryline 的 ASR speech rough cut 思路,但保持本项目的本地可审计方式:不调用 LLM,直接利用 transcribe.py --detect-fillers 的结果和相邻 transcript 相似度,先输出计划,再选择是否渲染。

能力 说明
纯口头禅移除 读取 filler_words[].is_filler_only,也能用内置中英文 filler 词表兜底
相邻重复句检测 用归一化文本相似度识别口误重说,默认保守阈值 0.88
可审计计划 输出 decisions / removed_segments / keep_segments / speedup_ratio
单次编码渲染 复用 jump_cut.py 的 concat 渲染命令,不产生多代中间文件

常用:

python3 scripts/rough_cut.py --transcript work/transcript.json --cut-list work/rough_cut.json
python3 scripts/rough_cut.py --transcript work/transcript.json --input origin/talking.mp4 --output output/talking.roughcut.mp4 --cut-list work/rough_cut.json
python3 scripts/timeline_view.py origin/talking.mp4 --cut-list work/rough_cut.json --output-dir output/verify/rough_cut

✂️ Jump Cut — 自动去停顿

scripts/jump_cut.py · 详细文档

借鉴视频生成/剪辑类 skill 里常见的 remove_silence / jumpcut 闭环,但默认先产出可审计 cut list,避免直接误切人声:

能力 说明
自适应阈值 先跑 loudnorm=print_format=json,用 input_thresh 作为 silencedetect 阈值
可审计 cut list 输出 detected_silences / removed_segments / keep_segments / speedup_ratio
安全 padding 默认每个切点保留 0.08s,避免咬字被切掉
防爆音 fade 默认每个保留片段加 30ms 音频淡入/淡出;--fade-duration 0 可关闭
单次编码渲染 trim/atrim + concat 一次输出,不产生中间重编码文件

常用:

python3 scripts/jump_cut.py input/talking.mp4 --dry-run --cut-list output/talking.jumpcut.json
python3 scripts/timeline_view.py input/talking.mp4 --cut-list output/talking.jumpcut.json --output-dir output/verify/cuts
python3 scripts/jump_cut.py input/talking.mp4 --output output/talking.jumpcut.mp4 --cut-list output/talking.jumpcut.json --fade-duration 0.03

🔎 Timeline View — 切点/可疑区间复盘图

scripts/timeline_view.py · 详细文档

借鉴视频剪辑类 skill 的 timeline_view 工作台:在跳切前后或 QA 报警区间生成一张 PNG,上半部分是 filmstrip,下半部分是 waveform,方便快速判断“切点是否咬字、画面是否突跳、静音是否自然”。

常用:

python3 scripts/timeline_view.py output/day58_master.mp4 --at 42.5 --radius 1.5 --output output/verify/42_5s.png
python3 scripts/timeline_view.py origin/talking.mp4 --cut-list work/jumpcut.json --output-dir output/verify/cuts --limit 12

🎨 AI 图像生成(gpt-image-2 / Codex imagegen)

scripts/imagegen_hint.py · scripts/prompts/imagegen_templates.yaml · 详细文档

抽象概念(注意力机制 / 复利 / 信息茧房 / 长尾效应 …)自动检测 + 适配 gpt-image-2 七槽位提示词结构。

  • Codex 环境:检测到的 prompt 直接喂给 Codex 内置 imagegen 工具——无需 OpenAI API key,Codex 自动路由到 gpt-image-2
  • 其他环境:用 OpenAI Python SDK 自己接(openai.OpenAI().images.generate(...),需 OPENAI_API_KEY)。本 skill 只产 prompt,不内置客户端
  • 内置 7 个 sample:注意力机制 / 信息茧房 / 复利 / 长尾效应 / 数据柱状图 / 章节标题卡 / 早晨笔记本 B-roll(每个都带双语 prompt + why-it-works)
  • 5 个 structure 槽位:chapter_background / chapter_title_card / broll_fallback / data_visualization / abstract_concept
  • gpt-image-2 规则全部编码:引号 = 精确文字渲染、约束写进 prose(无 negative-prompt 字段)、具体相机+光圈+光照(避免 "AI 味")、默认拒绝人脸/人手特写、中文标题不走 gpt-image-2

🧪 Edit Preflight — 渲染前预检 gate

scripts/edit_preflight.py · 详细文档

借鉴 agent 视频编辑工具的 structured preflight / risky-parameter guardrails 思路,但保持本项目本地 artifact-first:先检查 render_config.jsonenrich_plan.json 和 rough/jump cut list,再决定是否允许进入 FFmpeg 渲染。

常用:

python3 scripts/edit_preflight.py \
  --config work/render_config.json \
  --enrich-plan work/enrich_plan.json \
  --output work/edit_preflight.json \
  --markdown work/edit_preflight.md \
  --strict

输出 edit_preflight.v1,会检查空剪辑、缺视频/图片/音频文件、transcript + segment_id 不匹配、非法时间段、overlay 超出输出时间线、PIP/focus 参数风险。pipeline_manifest.py 会识别 edit_preflight.json,如果 summary.blocking > 0 就把它列为 blocking gate。它不解码、不渲染、不上传;渲染后仍然要跑 render_qa.py

🎚️ 渲染层(V3 强化)

scripts/render_final.py

默认行为 触发命令 / 配置
Heavy 字幕字体(Source Han Sans Heavy / STHeiti Medium) find_chinese_font() 自动选
响度规范化 dynaudnorm + acompressor + loudnorm 默认开启,--no-loudnorm
速度直接生效(不留 1.0× 副本) --primary-speed 1.25
受众档位预设(节奏/字幕密度/BGM 增益) --profile tech_pro
内部 token 拦截 自动;任何 1.25x/mlx-whisper/loudnorm 出现在画面文本字段都退出
平台 lint 自动;--no-content-guard
字幕风格 --subtitle-style normal/karaoke/bold_pop/neon/minimal/yellow_pop
自动丰富接入 --enrich-plan work/enrich_plan.json,可重复传入
点击聚焦 --enrich-plan work/screen_focus_plan.json,读取 focus_events[]
调色接入 --color-grade work/color_grade.json 或 config "color_grade": "screen"
版本化输出 --versioned-output 或 config "versioned_output": true

🧾 Versioned Output — 成片不覆盖旧版本

scripts/render_final.py · 详细文档

借鉴 GitHub 上视频技能的“每次渲染保留新版本”工作流:--versioned-output 会把请求的 output/day58_master.mp4 写到下一个 output/day58_master_V<N>.mp4,避免 ffmpeg -y 覆盖上一版成片。--formats 会跟随实际版本文件生成 day58_master_V3_vertical.mp4 这类多比例输出。

常用:

python3 scripts/render_final.py \
  --config work/render_config.json \
  --enrich-plan work/enrich_plan.json \
  --output output/day58_master.mp4 \
  --versioned-output \
  --formats vertical horizontal

配置式开启:

{
  "versioned_output": true,
  "clips": [
    {"video": "origin/talking.mp4", "segment_id": 1, "transcript": "work/transcript.json"}
  ]
}

🧭 NLE Handoff — EDL / FCPXML 导出

scripts/export_edl.py · scripts/export_fcpxml.py · 详细文档

借鉴自动剪辑/生成类项目常见的“先产 timeline,再交给专业剪辑软件继续精修”工作流:export_edl.py 可把本项目的 render_config.jsonrough_cut.py / jump_cut.py 产生的 keep_segments 导出成单轨 CMX 3600 风格 EDL;export_fcpxml.py 导出 Final Cut Pro / DaVinci Resolve 更友好的单 spine FCPXML。两者都会写 JSON manifest,保留绝对源路径和精确秒数。

常用:

python3 scripts/export_edl.py \
  --config work/render_config.json \
  --output work/day58_edit.edl \
  --fps 30 \
  --title DAY58_EDIT

python3 scripts/export_edl.py \
  --cut-list work/rough_cut.json \
  --output work/rough_cut.edl \
  --fps 30

python3 scripts/export_fcpxml.py \
  --config work/render_config.json \
  --output work/day58_edit.fcpxml \
  --fps 30 \
  --width 1080 \
  --height 1920

适合把自动粗剪交给 Premiere / Final Cut Pro / DaVinci Resolve 做调色、混音、精剪或协作复核。EDL 更通用,FCPXML 对 FCP / Resolve 更直接;复杂字幕、overlay、章节卡和 B-roll 仍以 render_final.py / export_capcut.py 为准。

2026-06-23 自动化升级记录(Edit Preflight Gate)

本次联网研究的 GitHub 参考:

来源 值得借鉴的优点 本项目处理
KyaniteLabs/mcp-video 把 FFmpeg 工具包装成 structured tools,并强调 preflight validation / risky edit parameter guardrails,避免 silent bad media output 新增本地 edit_preflight.py,专注渲染前 artifact 预检,不引入 MCP server
browser-use/video-use 把 production-correctness rules 和确认后再执行作为硬规则,减少 agent 直接改坏时间线 preflight 在 render_final.py 前输出 JSON/Markdown review,供人/agent 先修再渲染
video-db/skills 以 See → Understand → Act 的视频工作流提供搜索、编辑、字幕和导出能力,并返回可复核结果 本项目继续本地优先,只检查已有 render_config / enrich_plan / cut list
wizenheimer/vibestudio 透明、traceable 的本地 FFmpeg tool workflow,便于 agent 审计输入输出 preflight 不解码、不渲染,只做结构、路径、时间和参数检查
hiteshK03/video-production-skill 视频生产 skill 教 agent 在多工具之间选择正确顺序和参数 daily workflow 现在把 preflight 放在 content guard 后、render_final 前

新增/调整能力:新增 scripts/edit_preflight.py,输出 edit_preflight.v1 JSON 和 Markdown,可检查 render_config.clips[] 非空、视频/图片/音频路径存在、direct start/endtranscript + segment_id 时间段合法、B-roll/image/PIP overlay 路径和时间线边界、focus 像素坐标是否缺 source_width/source_height、PIP width_ratio/opacity/source_start 等风险参数,以及 rough/jump cut keep_segments[]pipeline_manifest.py 新增 edit_preflight artifact 类别;只要项目里已有 unresolved edit_preflight.jsonsummary.blocking > 0,manifest 会把它列为 blocking gate。新增 docs/prompts/53-edit-preflight.md,并更新 daily workflow、提示词目录、SKILL 和 README。

使用方式:渲染前跑 python3 scripts/edit_preflight.py --config work/render_config.json --enrich-plan work/enrich_plan.json --output work/edit_preflight.json --markdown work/edit_preflight.md --strict。如果有多个计划文件可重复传 --enrich-plan,如果要检查 rough/jump cut 结果可加 --cut-list work/jump_cut.json。脚本不会渲染、上传、下载或提交任何付费生成任务;渲染后仍需跑 render_qa.py

验证结果:新增 tests/test_edit_preflight.py 7 项,并更新 tests/test_pipeline_manifest.py.venv/bin/python -m pytest tests/test_edit_preflight.py tests/test_pipeline_manifest.py -q 通过 25 passed in 0.24s.venv/bin/python scripts/edit_preflight.py --help smoke 通过;.venv/bin/python -m compileall scripts tests 通过;.venv/bin/python /Users/maxazure/.codex/skills/.system/skill-creator/scripts/quick_validate.py /Users/maxazure/projects/video-editing-skill 通过 Skill is valid!git diff --check 通过;最终全量 .venv/bin/python -m pytest tests -q 通过 394 passed in 3.94s

2026-06-23 自动化升级记录(Jump Cut Audio Fades)

本次联网研究的 GitHub 参考:

来源 值得借鉴的优点 本项目处理
browser-use/video-use 把“每个 segment 边界加 30ms audio fade 防爆音”列为 production-correctness hard rule jump_cut.py 默认给每个保留片段加 30ms fade-in/out,减少 concat 切点 pop
WyattBlue/auto-editor 自动静音剪辑支持 margin、audio/motion edit methods,并把 dead space removal 作为 first pass 本项目保留现有自适应静音阈值和 --pad,只补缺失的音频边界处理,不引入复杂表达式 DSL
GoogleCloudPlatform/vertex-ai-creative-studio genmedia-video-editor 把视频生成、叠图、拼接、GIF、音视频同步拆成明确工具能力 本项目继续使用本地 FFmpeg CLI,把 fade 放进现有 single-pass filtergraph
SamurAIGPT/AI-Youtube-Shorts-Generator 长视频转短视频强调 Whisper、highlight ranking、auto crop 和 JSON 输出 本项目已有 highlight/reframe 路线,本次只修补最终 jump-cut 听感缺口
jianchang512/pyvideotrans / krillinai/KrillinAI 多语转写、翻译、配音和音画同步说明音频链路质量会直接影响发布体验 本次不新增配音服务,只确保自动去停顿成片的切点音频更稳

新增/调整能力:scripts/jump_cut.py 新增 --fade-duration,默认 0.03 秒。渲染时每个 keep_segments[] 音频片段会在同一个 atrim/asetpts filter chain 中追加 afade=t=inafade=t=out,不增加中间文件、不改变单次 concat 编码模型。短片段会自动把 fade 限制到片段时长的一半;需要完全硬切原声时可传 --fade-duration 0。cut list JSON 新增 fade_seconds 字段,方便后续 EDL/FCPXML/复核时知道实际音频边界策略。README、SKILL、docs/prompts/21-jump-cut.mddocs/prompts/15-xhs-daily-tech-video.md 和提示词索引已同步。

使用方式:先审查切点仍用 python3 scripts/jump_cut.py input/talking.mp4 --dry-run --cut-list output/talking.jumpcut.json;确认后渲染用 python3 scripts/jump_cut.py input/talking.mp4 --output output/talking.jumpcut.mp4 --cut-list output/talking.jumpcut.json --fade-duration 0.03。如需旧行为,传 --fade-duration 0

验证结果:新增/更新 tests/test_jump_cut.py 3 项覆盖默认 fade、关闭 fade、短片段 fade clamp;.venv/bin/python -m pytest tests/test_jump_cut.py -q 通过 8 passed in 0.04s;相关回归 .venv/bin/python -m pytest tests/test_jump_cut.py tests/test_export_edl.py tests/test_export_fcpxml.py -q 通过 19 passed in 0.17s;合成 1.2 秒 FFmpeg smoke 成功输出 MP4 且 cut list 含 fade_seconds: 0.03.venv/bin/python -m compileall scripts tests 通过;.venv/bin/python /Users/maxazure/.codex/skills/.system/skill-creator/scripts/quick_validate.py /Users/maxazure/projects/video-editing-skill 通过 Skill is valid!git diff --check 通过;全量 .venv/bin/python -m pytest tests -q 通过 386 passed in 4.41s

2026-06-21 自动化升级记录(Project Resume Handoff)

本次联网研究的 GitHub 参考:

来源 值得借鉴的优点 本项目处理
digitalsamba/claude-code-video-toolkit project.json 跟踪 scenes/audio/sessions/phase,并把计划与实际文件 reconcile 后生成项目级 CLAUDE.md 新增本地 project_resume.py,复用现有 gate,不引入项目数据库
HKUDS/ViMax Agent Loop + TUI 支持 session resume、context compaction 和工作目录 artifacts 输出 project_resume.v1 + Markdown,让压缩上下文后的 agent 先读文件状态
SamurAIGPT/Generative-Media-Skills agent-native CLI、结构化 JSON 输出、semantic exit codes 和 recipe 化工作流 project_resume.py --strict 在 blocked stage 返回 2,适合自动化收尾
JossBen/mcp-video-editing-assistant 视频编辑助手把 timeline/workflow 学习状态持久化到 JSON 本项目继续只读本地 artifacts,生成可恢复 handoff,不绑定 Resolve/MCP
SamurAIGPT/AI-Youtube-Shorts-Generator LLM highlight detection、Whisper 和 auto-crop 证明长视频生产链需要可恢复状态 本项目已有 highlight/render/publish artifacts,本次补跨会话续跑入口

新增/调整能力:新增 scripts/project_resume.py,可扫描项目目录并复用 pipeline_manifest.py 的 gate,输出 project_resume.v1、Markdown resume 和可选项目级 CLAUDE.md。内容包括 phaserecommended_first_actionnext_actions[]latest_artifacts[]、ready artifacts、关键 gate snapshot、guardrails 和可直接交给下一位 agent 的 suggested_prompt。新增 docs/prompts/52-project-resume.md,更新 daily workflow、提示词目录、SKILL 和 README。另将 SKILL.md frontmatter 规范化:移除旧的顶层 argument-hint,并把过长 description 压缩到 skill 校验器允许范围。

使用方式:自动化收尾或跨会话接手前跑 python3 scripts/project_resume.py --project-dir work/day58 --target-stage publish_ready --output work/day58/project_resume.json --markdown work/day58/project_resume.md --agent-note work/day58/CLAUDE.md --strict。如果只想写默认项目级 agent note,可用 --agent-note 不带路径,脚本会写到 --project-dir/CLAUDE.md。脚本不渲染、不上传、不提交任何付费生成任务。

验证结果:新增 tests/test_project_resume.py 5 项;.venv/bin/python -m pytest tests/test_project_resume.py tests/test_pipeline_manifest.py -q 通过 22 passed in 0.27s.venv/bin/python scripts/project_resume.py --help smoke 通过;.venv/bin/python -m compileall scripts tests 通过;.venv/bin/python /Users/maxazure/.codex/skills/.system/skill-creator/scripts/quick_validate.py /Users/maxazure/projects/video-editing-skill 通过 Skill is valid!git diff --check 通过;最终全量 .venv/bin/python -m pytest tests -q 通过 384 passed in 4.40s

2026-06-20 自动化升级记录(PIP Overlay)

本次联网研究的 GitHub 参考:

来源 值得借鉴的优点 本项目处理
tadaspetra/loop 录屏工具把 screen、microphone、optional camera、实时 transcript 和 PIP camera preview 放在同一编辑闭环里 新增本地 PIP overlay plan,不引入 Electron/录屏端依赖
browser-use/video-use 强调 audio-primary、transcript-driven edits,并把 overlay animations 当成 agent 可执行能力 PIP 继续挂在 transcript/render_config 驱动的 render_final.py --enrich-plan
GoogleCloudPlatform/vertex-ai-creative-studio genmedia-video-editor 把 image/video overlay 坐标、尺寸和 ffmpeg compositing 做成明确工具能力 本项目新增 timed video PIP overlay,保留单次编码原则
FireRedTeam/FireRed-OpenStoryline natural-language editing agent 强调 human-in-the-loop 和可复用 style/skills PIP 先生成 JSON/Markdown review,再由用户/agent 复核后渲染
bilibili/carocut 多 agent + Remotion 的视频制作助手说明 creator workflow 需要可组合的画面层 本项目仍用轻量 CLI artifact,不把 Remotion 变成 PIP 必需依赖

新增/调整能力:新增 scripts/pip_overlay.py,可把 facecam/camera 视频转成 pip_overlay_plan.v1,输出 pip_overlays[] 与 Markdown 复核表;支持多段 --segment "start,end[,position]"--sync-offset--source-start--width-ratio--margin-ratio--opacity--transitionrender_final.py --enrich-plan 现在会合并 pip_overlays[],把 camera 小窗作为 timed video overlay 接入 B-roll/image/focus 之后、字幕之前,并在 --primary-speed / --speed 输出中同步压缩 PIP 时间线;camera audio 默认忽略,避免污染主口播/BGM 音频链路。

使用方式:先跑 python3 scripts/pip_overlay.py --camera origin/facecam.mp4 --segment "0,18,bottom_right" --segment "18,42,top_right" --sync-offset 0.18 --output work/pip_overlay_plan.json --markdown work/pip_overlay_plan.md;渲染时重复传入 enrich plan,例如 python3 scripts/render_final.py --config work/render_config.json --enrich-plan work/enrich_plan.json --enrich-plan work/screen_focus_plan.json --enrich-plan work/pip_overlay_plan.json --output output/tutorial_master.mp4。详细说明见 docs/prompts/51-pip-overlay.md

验证结果:新增 tests/test_pip_overlay.py 8 项;.venv/bin/python -m pytest tests/test_pip_overlay.py tests/test_render_enrich_plan.py tests/test_screen_focus.py -q 通过 19 passed in 0.26s.venv/bin/python -m compileall scripts tests 通过;.venv/bin/python scripts/pip_overlay.py --help.venv/bin/python scripts/render_final.py --help smoke 验证通过;2 秒 FFmpeg 变速合成 smoke 验证 pip_overlays[] 可渲染为有效 MP4;最终全量 .venv/bin/python -m pytest tests -q 通过 379 passed in 4.01s

2026-06-19 自动化升级记录(Prompt-Based Highlight Picker)

本次联网研究的 GitHub 参考:

来源 值得借鉴的优点 本项目处理
SamurAIGPT/Clip-Anything “describe what you want” 的 prompt-based clipping 很适合从长视频定向找时刻 在已有 highlight_picker.py 中新增 --brief/--query,不引入外部 API
SamurAIGPT/AI-Youtube-Shorts-Generator 长视频转短视频输出 highlights/score/hook/reason JSON,并强调 highlight selection criteria 本项目已有 score/hook/reason;本次补 brief relevance 和 brief_match 字段
gyoridavid/short-video-maker 面向 TikTok/Reels/Shorts 的 MCP + REST 自动生成链路,说明 agent/API 双接口对视频生产有价值 本项目继续保持 CLI artifact-first;--render-config 直接交给 render_final.py
Anil-matcha/AI-B-roll 用 AI B-roll 增强短视频可看性,强调按内容补画面 本项目已有 auto_enrich.py / storyboard_assets.py,本次不新增付费 B-roll API
digitalsamba/claude-code-video-toolkit 把 voiceover、music、image/video generation 和 review 工具拆成 agent 可调用脚本 本项目已有音频 cue、视频 prompt pack 和生成任务台账,本次只补定向择段缺口

新增/调整能力:scripts/highlight_picker.py 新增 --brief / --query,可把“产品发布 用户反应”“find the product reveal”这类自然语言意图拆成英文关键词和中文短语片段,并把 brief_match.score 纳入原有 hook/value/duration/completeness 打分。输出 JSON 和 Markdown 会显示 brief_match.matched_termsscore_breakdown.brief 和弱匹配 warning;--render-config 也会保留 brief_match 供后续渲染/复核。

使用方式:常规自动找精华仍用 python3 scripts/highlight_picker.py --transcript work/long_transcript.json --output work/highlights.json --markdown work/highlights.md --platform douyin --strict;定向找片段用 python3 scripts/highlight_picker.py --transcript work/long_transcript.json --brief "产品发布 用户反应 价格对比" --video origin/long-talk.mp4 --output work/brief_highlights.json --markdown work/brief_highlights.md --render-config work/brief_render_config.json --platform douyin --num-clips 3 --strict。详细说明见 docs/prompts/31-highlight-picker.md

验证结果:新增/更新 tests/test_highlight_picker.py 2 项 brief/query 覆盖;.venv/bin/python -m pytest tests/test_highlight_picker.py -q 通过 9 passed in 0.07s.venv/bin/python scripts/highlight_picker.py --help smoke 验证 --brief/--query 参数正常;.venv/bin/python -m compileall scripts tests 通过;git diff --check 通过;完整 .venv/bin/python -m pytest tests -q 通过 371 passed in 3.71s

2026-06-18 自动化升级记录(FCPXML NLE Handoff)

本次联网研究的 GitHub 参考:

来源 值得借鉴的优点 本项目处理
WyattBlue/auto-editor 自动剪辑后可导出 Premiere / Resolve / Final Cut Pro / Shotcut / Kdenlive 时间线 在已有 EDL handoff 外补 FCPXML,延续同一份剪辑计划
leeyc09/Silence-Cutter 静音移除后直接输出 FCPXML,并强调 word-boundary / 字幕同步 本项目继续使用已有 rough/jump cut list;FCPXML 只做非破坏式 NLE 交接
AKMessi/vex typed shorts/edit plan、质量门禁、候选片段评分和 NLE handoff 思路清晰 复用本项目 manifest / QA / timeline_view gate,不新增云端依赖
browser-use/video-use transcript-first、EDL、render self-eval 的 agent 剪辑循环 FCPXML 继续从 transcript/render_config/cut-list artifact 派生,保持可审计
KyaniteLabs/mcp-video 把 FFmpeg、字幕、质量检查、repurpose package 包装为 typed/guardrailed 工具 本项目保持脚本式接口,但为 NLE handoff 增加更强格式覆盖

新增/调整能力:新增 scripts/export_fcpxml.py,可读取 render_config.jsonrough_cut.pyjump_cut.pykeep_segments,生成单 spine FCPXML 和 <output>.json manifest;支持 --fps--width--height--title--source--fcpxml-versionexport_edl.py 保留,二者共享同一套 segment/event 解析。

使用方式:从成片配置导出用 python3 scripts/export_fcpxml.py --config work/render_config.json --output work/day58_edit.fcpxml --fps 30 --width 1080 --height 1920;从粗剪 cut list 导出用 python3 scripts/export_fcpxml.py --cut-list work/rough_cut.json --output work/rough_cut.fcpxml --fps 30。详细说明见 docs/prompts/27-export-edl.md

验证结果:新增 tests/test_export_fcpxml.py 4 项;.venv/bin/python -m pytest tests/test_export_fcpxml.py -q 通过 4 passed in 0.06s;相关回归 .venv/bin/python -m pytest tests/test_export_fcpxml.py tests/test_export_edl.py tests/test_pipeline_manifest.py -q 通过 28 passed in 0.29s;完整 .venv/bin/python -m pytest tests -q 通过 369 passed in 4.76s.venv/bin/python -m compileall scripts tests 通过;git diff --check 通过。

2026-06-17 自动化升级记录(CapCut Subtitle Import)

本次联网研究的 GitHub 参考:

来源 值得借鉴的优点 本项目处理
mrbuslov/capcut-ai-editor 直接读取 CapCut 自动字幕,用字幕间隙和重复表达做 talking-head 智能粗剪 新增本地反向导入,不直接改草稿;输出 transcript 和可复核 cut list
danyfernandes/capcut-srt-extractor-python 从 CapCut 工程取回 SRT,解决剪映字幕难交付的问题 支持草稿 draft_content.json 和外部 SRT 两种入口
mutonby/openshorts 长视频切短视频流水线重视 Auto Subtitles、hook overlays 和发布前资产交付 本项目保持本地 transcript/artifact 交付,不接入云端发布 API
JiamanJemma/video-post-production-kit talking-head + screen recording 后期流程强调字幕校对和多轨可复核 新增 Markdown review + gap cut list,先复核再渲染/交给 NLE
jurczykpawel/reelstack 把外部生成器/编辑器当作内容来源,生产线负责统一 timing、caption、branding 剪映可作为字幕校对入口,回流后继续走本项目统一 pipeline

新增/调整能力:新增 scripts/import_capcut_subtitles.py,可从剪映/CapCut 草稿目录、draft_content.json 或 SRT 导入字幕,输出兼容本项目的 capcut_subtitle_transcript;可选 --cut-list 会按字幕间隙生成 keep_segments,供 timeline_view.pyexport_edl.py 或后续粗剪流程复核;默认只导入 subtitle 材料,避免封面标题/贴纸文字混入 transcript,必要时用 --include-overlays 兜底。

使用方式:从剪映草稿导入用 python3 scripts/import_capcut_subtitles.py --draft ~/Movies/JianyingPro/User\ Data/Projects/com.lveditor.draft/day58 --transcript work/capcut_transcript.json --cut-list work/capcut_gap_cut.json --markdown work/capcut_subtitles.md --source-media origin/talking.mp4;从 SRT 导入用 python3 scripts/import_capcut_subtitles.py --srt exports/capcut_auto_captions.srt --transcript work/capcut_transcript.json --srt-output output/subtitles/capcut_clean.srt。详细示例见 docs/prompts/50-import-capcut-subtitles.md

验证结果:新增 tests/test_import_capcut_subtitles.py 5 项;.venv/bin/python -m pytest tests/test_import_capcut_subtitles.py -q 通过 5 passed in 0.05s;完整 .venv/bin/python -m pytest tests -q 通过 365 passed in 4.87s.venv/bin/python -m compileall scripts tests 通过;git diff --check 通过;.venv/bin/python scripts/import_capcut_subtitles.py --help smoke 验证 CLI 参数正常。

2026-05-27 自动化升级记录(Subtitle Pack)

本次联网研究的 GitHub 参考:

来源 值得借鉴的优点 本项目处理
Huanshere/VideoLingo 关注字幕切分、对齐、单行字幕、翻译/配音交付质量 新增本地字幕包导出;本次不引入翻译/配音依赖
smacke/ffsubsync 把字幕文件和视频对齐当作独立交付能力 支持 --speed / --offset,让 sidecar 字幕对齐最终成片
ncounterspecialist/twick AI captions + timed tracks 可接入编辑器/SDK 输出 SRT/VTT/ASS/JSON,方便平台上传、网页播放和人工校对
vericontext/vibeframe agent-native 项目产物保留 build/review report JSON manifest 保留 cue 来源、时序参数和 warning
harry0703/MoneyPrinterTurbo topic-to-video 流水线包含字幕、素材和 BGM 交付 本项目已有完整短视频流水线,本次补齐平台字幕 sidecar

新增/调整能力:新增 scripts/subtitle_pack.py,可从 transcript.jsonrender_config.json 导出 SRT、VTT、ASS 和 JSON manifest;默认中文 18 字单行、英文 42 字单行,优先按标点/词边界切分;如果 transcript 带 words[],会用词级时间戳生成更准的 cue;--config 会按最终 clips 串接时间线,--speed--offset 用来对齐 render_final.py --primary-speed 和片头封面秒数。

使用方式:原始转写字幕用 python3 scripts/subtitle_pack.py --transcript work/day58_transcript.json --output-dir output/subtitles --basename day58 --formats srt vtt ass json;最终成片字幕用 python3 scripts/subtitle_pack.py --config work/render_config.json --output-dir output/subtitles --basename day58_master --speed 1.25 --offset 2.0。详细示例见 docs/prompts/29-subtitle-pack.md

验证结果:新增 tests/test_subtitle_pack.py 4 项;.venv/bin/python -m pytest tests/test_subtitle_pack.py -q 通过 4 passed in 0.06s;完整 .venv/bin/python -m pytest tests -q 通过 218 passed in 3.28s.venv/bin/python -m compileall scripts tests 通过;git diff --check 通过;.venv/bin/python scripts/subtitle_pack.py --help smoke 验证 CLI 参数正常。

2026-05-26 自动化升级记录(Media Library Recommend)

本次联网研究的 GitHub 参考:

来源 值得借鉴的优点 本项目处理
calesthio/OpenMontage agentic production pipeline、质量门禁、artifact 交付清晰 保持本地 JSON/Markdown artifact,不引入云端生成依赖
vericontext/vibeframe media/、storyboard、build/review report 串成 agent-native 项目循环 storyboard_assets.py --media-library 把素材索引结果写进 readiness manifest
AKMessi/vex transcript-aware B-roll / generated visual scoring,强调先规划再合成 新增透明 score / reasons 的本地候选排名
DojoCodingLabs/remotion-superpowers stock footage、视频 review loop、短视频 preset 集成 本项目只推荐本地素材;下载/生成仍走已有 storyboard / Dreamina / imagegen 路由

新增/调整能力:scripts/media_library.py 新增 recommend 子命令,可从 media_index.json / media_index.db 中按查询词、tag、文件名、metadata、关联 transcript、时长覆盖和目标画幅给本地素材打分;scripts/storyboard_assets.py 新增 --media-library,会把 media_library_broll shot 的 ranked B-roll 候选写入 candidate_pathscandidate_scores,Markdown 复核表会显示候选分数。

使用方式:先用 python3 scripts/media_library.py scan . 建索引,再跑 python3 scripts/media_library.py recommend "AI workflow dashboard" --project-dir . --category broll --target-duration 3 --target-aspect 9:16 --json;分镜预检时加 --media-library .,例如 python3 scripts/storyboard_assets.py --storyboard-plan work/storyboard_plan.json --asset-root work --media-library . --output work/storyboard_assets.json --markdown work/storyboard_assets.md

验证结果:新增 tests/test_media_library_recommend.py 3 项,并更新 tests/test_storyboard_assets.py.venv/bin/python -m pytest tests/test_media_library_recommend.py tests/test_storyboard_assets.py -q 通过 9 passed in 0.11s;完整 .venv/bin/python -m pytest tests -q 通过 214 passed in 2.21s.venv/bin/python -m compileall scripts tests 通过;git diff --check 通过;python3 scripts/media_library.py recommend --help smoke 验证 CLI 参数正常。

2026-05-25 自动化升级记录(Render QA Review Packet)

本次联网研究的 GitHub 参考:

来源 值得借鉴的优点 本项目处理
video-db/skills 视频理解后返回可搜索 moment、可播放 evidence clip 和可分享输出 新增本地 QA review packet,不引入外部服务
remotion-dev/skills 把渲染后检查做成明确的 inspect/fix 闭环 render_qa.py 现在可直接生成 Markdown/JSON 复核包
heygen-com/skills 通过可复用状态文件把 avatar/video/translate 串成生产链 本项目继续沿用 JSON/Markdown artifact 串联,不新增供应商状态
libtv-labs/libtv-skills / Wan-Video/Wan-skills 异步生成、轮询和下载结果的任务化交付 本次先补渲染后 evidence handoff;生成任务仍交给 storyboard/Dreamina 路由

新增/调整能力:scripts/render_qa.py 增加 --review-dir,可把黑屏、静帧、静音检测出的可疑区间汇总成 render_qa_review.jsonrender_qa_review.md;加 --review-clips 时会为每个可疑区间抽取带上下文的短 MP4 到 clips/。新增 build_review_segments() / write_review_packet(),便于自动化流水线复用。

使用方式:python3 scripts/render_qa.py output/day58_master.mp4 --platform douyin --json output/day58_qa.json --review-dir output/verify/day58_qa --review-clips;只想生成复核表、不抽视频片段时去掉 --review-clips。可用 --review-padding 1.0 调整前后文秒数,用 --max-review-segments 12 控制证据数量。

验证结果:新增/更新 tests/test_render_qa.py.venv/bin/python -m pytest tests/test_render_qa.py -q 通过 9 passed in 0.02s;完整 .venv/bin/python -m pytest tests -q 通过 210 passed in 2.20s.venv/bin/python -m compileall scripts tests 通过;git diff --check 通过;2 秒黑屏/静音合成视频 smoke 验证 --review-dir --review-clips 会写出 Markdown、JSON 和 2 个证据 MP4。

2026-05-25 自动化升级记录(Screen Focus)

本次联网研究的 GitHub 参考:

来源 值得借鉴的优点 本项目处理
luoluoluo22/jianying-editor-skill 剪映自动化覆盖录屏、智能变焦、红圈提示这类教程视频高频需求 新增本地 screen_focus.py,不依赖剪映桌面控制
njraladdin/screen-demo Screen Studio 替代品,强调录屏后的 zoom animation、cursor tracking、背景包装 新增点击/热点 → zoom cue 的可审计计划
webadderall/Recordly 自动 zoom suggestions、cursor polish、styled frame,面向产品 walkthrough focus_events[] 可叠加到现有 enrich-plan 渲染链路
Itz-Hex/hypr-obs-mouse-follow OBS 录制时跟随鼠标并平滑放大,适合教程录屏 本项目改为后期渲染时裁切放大,避免录制端绑定

新增/调整能力:scripts/screen_focus.py 可读取 JSON/CSV/inline 点击事件,把像素或 0-1 坐标标准化为 screen_focus_plan.v1,输出 focus_events[] 和 Markdown 复核表;render_final.py --enrich-plan 现在可重复传入,并能把 focus_events 转成 timed zoom crop、提示框和可选 label badge。

使用方式:先跑 python3 scripts/screen_focus.py --events work/clicks.json --screen-width 1920 --screen-height 1080 --output work/screen_focus_plan.json --markdown work/screen_focus_plan.md;渲染时追加 --enrich-plan work/screen_focus_plan.json,或和 work/enrich_plan.json 一起重复传入。

验证结果:新增 tests/test_screen_focus.py 6 项通过;相关回归 tests/test_render_enrich_plan.py 5 项通过;完整 .venv/bin/python -m pytest tests -q 通过 208 passed in 3.10spython3 -m compileall scripts tests 通过;git diff --check 通过;inline --event smoke 输出了有效 screen_focus_plan.v1,2 秒合成视频实测 focus_events 可成功渲染为有效 MP4。

2026-05-21 自动化升级记录

本次联网研究的 GitHub 参考:

来源 值得借鉴的优点 本项目处理
hoodini/ai-agents-skills 的 Yuv-Viral-Video 明确要求每次输出 _V<N>,旧成片不被覆盖 新增 render_final.py --versioned-output
video-db/skills “See → Understand → Act”、搜索/编辑/导出一体化 已有 transcribe/enrich/render/QA 链路,暂不引入外部服务
higgsfield-ai/skills 生成后评分与 branded video mode 本项目已有平台 lint 与 caption 规则,后续可加 hook/retention 评分
smixs/visual-skills 视频生成强调 shot card、连续性与模型路由 本项目已有 gpt-image-2 路由;视频生成路由保持 Dreamina/即梦外部 skill

新增/调整能力:next_versioned_output_path() 会扫描同目录已有 *_V<N>.mp4,自动选下一个版本;CLI 增加 --versioned-output,配置文件支持 "versioned_output": true;多平台 --formats 改为基于实际版本主文件导出。

使用方式:在最终渲染命令加 --versioned-output,或在 render config 写入 "versioned_output": true

验证结果:新增/相关测试 12 项通过;完整 .venv/bin/python -m pytest tests -q 通过 180 项;python3 -m compileall scripts tests 通过;真实 1 秒 ffmpeg 合成验证了 master.mp4 会输出为 master_V1.mp4

2026-05-22 自动化升级记录

本次联网研究的 GitHub 参考:

来源 值得借鉴的优点 本项目处理
calesthio/OpenMontage provider scoring、pipeline manifest、decision log、post-render gates 新增本地 shot-card 路由,不直接接云端 provider
HKUDS/ViMax shot-level storyboard、first/last frame、motion description、continuity 新增 first/motion/last frame 和 continuity anchors
trilogy-group/ttv-pipeline keyframe/chaining mode、长视频分段、backend fallback 新增 route fallback 与 Dreamina 额度提醒
vericontext/vibeframe brief → storyboard/design → validate/build 的 agent-native 项目循环 新增 storyboard_plan.md 供 agent/human review
dseditor/AI-storyboard-generator cut count、图片/视频重生成、ComfyUI 工作流配置 新增 --max-shots 和每镜头 prompt card
Forget-C/Jellyfish shot preparation、候选资产确认、统一 readiness state、任务状态 新增 storyboard_assets.py 素材 readiness manifest
samagra14/mediagateway 多 provider 状态、gallery 管理、成本统计 新增 paid_credit_tasksneeds_approval 状态
aaurelions/vidosy JSON 驱动视频结构与 media assets 约定 新增 work/imagegen / work/generated_video / work/motion 默认路径

新增/调整能力:scripts/storyboard_plan.py 可把 transcript.json 和可选 clean_script.md 转为 storyboard_plan.json / storyboard_plan.md,为每个 shot 标注时间码、叙事段落、画面语言、生成路由、fallback、连续性锚点和 review checks;scripts/storyboard_assets.py 可把分镜转成素材 readiness manifest,标出 ready / candidate_found / needs_generation / needs_approval / needs_render / search_needed,其中 dreamina_video 只做规划并明确提示可能消耗 credits。

使用方式:先跑 python3 scripts/storyboard_plan.py --transcript work/transcript.json --clean-script work/clean_script.md --output work/storyboard_plan.json --markdown work/storyboard_plan.md --max-shots 8 --target-aspect 9:16,再跑 python3 scripts/storyboard_assets.py --storyboard-plan work/storyboard_plan.json --asset-root work --output work/storyboard_assets.json --markdown work/storyboard_assets.md --strict 做渲染前素材预检。

验证结果:新增 tests/test_storyboard_plan.py 5 项和 tests/test_storyboard_assets.py 5 项通过;.venv/bin/python -m pytest tests/test_storyboard_assets.py tests/test_storyboard_plan.py -q 通过 10 项;完整 .venv/bin/python -m pytest tests -q 通过 190 passed in 1.51spython3 -m compileall scripts tests 通过。

2026-05-23 自动化升级记录

本次联网研究的 GitHub 参考:

来源 值得借鉴的优点 本项目处理
FireRedTeam/FireRed-OpenStoryline ASR speech rough cut:按时间戳去口头禅、卡壳和重复表达,并把结果交给后续 timeline 新增本地 rough_cut.py,用 transcript/filler metadata 生成可审计 cut list
WyattBlue/auto-editor 自动剪辑输出可交换时间线,强调先生成 timeline 再渲染/交给 NLE rough_cut.py 先产 decisions / keep_segments,再可选渲染
AcademySoftwareFoundation/OpenTimelineIO editorial timeline interchange 与 adapter 生态 本次暂不引入 OTIO 依赖,保留 JSON cut list 作为轻量交换层
calesthio/OpenMontage pipeline artifact / review gate / tool contract 新增 rough cut 计划里的 review_hint,继续走 timeline_view 人工复核

新增/调整能力:scripts/rough_cut.py 可读取 transcript.json,自动移除纯口头禅片段和相邻重复句,输出 rough_cut.json,其中包含每个删除决策、合并后的移除区间、保留区间、预计输出时长和节奏压缩比例;传入 --input/--output 时可直接复用现有 concat 渲染能力。

使用方式:先跑 python3 scripts/transcribe.py origin/voice.wav --language zh --word-timestamps --detect-fillers,再跑 python3 scripts/rough_cut.py --transcript work/transcript.json --cut-list work/rough_cut.json 审查计划;确认后用 python3 scripts/rough_cut.py --transcript work/transcript.json --input origin/talking.mp4 --output output/talking.roughcut.mp4 --cut-list work/rough_cut.json 渲染。

验证结果:新增 tests/test_rough_cut.py 5 项通过;python3 -m compileall scripts tests 通过;完整 .venv/bin/python -m pytest tests -q 通过 195 passed in 1.42sdocs/prompts/26-rough-cut.md 记录完整使用方式。

2026-05-24 自动化升级记录

本次联网研究的 GitHub 参考:

来源 值得借鉴的优点 本项目处理
WyattBlue/auto-editor 自动剪辑后可导出 Premiere / Resolve / Final Cut Pro / Shotcut / Kdenlive 等时间线 新增本地 EDL handoff,不改变现有渲染链路
AcademySoftwareFoundation/OpenTimelineIO editorial timeline interchange,支持 FCP XML / AAF / CMX 3600 EDL 等 adapter 生态 不引入重依赖,先实现单轨 CMX 3600 风格 EDL + manifest
Memories-ai-labs/vea-open-source agent 产出 FCPXML,并可交给 DaVinci Resolve 渲染 本项目补上 NLE 交接产物,保留专业软件精修入口
geerlingguy/final-cut-it-out 用 ffmpeg 检测 silence 后在 Final Cut Pro 时间线上移除片段 本项目保持非破坏式:先导出 EDL/manifest,由人确认后进 NLE

新增/调整能力:scripts/export_edl.py 可读取 render_config.jsonrough_cut.pyjump_cut.pykeep_segments,生成单轨 EDL 和 <output>.json manifest;支持 --fps--title--source 和可选 --include-transcript-comments

使用方式:从成片配置导出用 python3 scripts/export_edl.py --config work/render_config.json --output work/day58_edit.edl --fps 30;从粗剪 cut list 导出用 python3 scripts/export_edl.py --cut-list work/rough_cut.json --output work/rough_cut.edl

验证结果:新增 tests/test_export_edl.py 7 项通过;完整 .venv/bin/python -m pytest tests -q 通过 202 passed in 3.18spython3 -m compileall scripts tests 通过;git diff --check 通过;research archive validator 通过(4 个 repo、4 份 file tree)。

✅ Render QA — 渲染后质检回路

scripts/render_qa.py

借鉴 Remotion/视频生成类技能常见的“render → inspect → fix”闭环,以及 VideoDB 类项目的 playable evidence handoff,渲染完成后用 ffprobe/ffmpeg 自动检查并可生成复核包:

检查 目的
video/audio stream 防止导出空壳、无声视频
duration / dimensions / fps 防止平台尺寸错、时长异常
blackdetect 发现误裁、素材丢失导致的黑屏
freezedetect 发现长时间卡帧/静帧
silencedetect 发现人声链路丢失或长静音

常用:

python3 scripts/render_qa.py output/day58_master.mp4 --platform douyin --json output/day58_qa.json
python3 scripts/render_qa.py output/day58_xhs.mp4 --platform xhs
python3 scripts/render_qa.py output/day58_master.mp4 \
  --platform douyin \
  --json output/day58_qa.json \
  --review-dir output/verify/day58_qa \
  --review-clips
python3 scripts/timeline_view.py output/day58_master.mp4 --at 42.5 --radius 1.5 --output output/verify/qa_42_5s.png

--review-dir 会写 render_qa_review.jsonrender_qa_review.md,把黑屏、静帧、静音的可疑区间按 FAIL/WARN 排序;--review-clips 会额外抽取短 MP4 证据片段。只需要审阅清单时不加 --review-clips

📦 多平台导出

scripts/multi_export.py · 详细文档

平台 尺寸 时长 说明
小红书 / RED 1080×1440 (3:4) 占满 feed 缩略图 (+40% 显示面积)
抖音 / TikTok 1080×1920 (9:16) 全屏沉浸
微信视频号 1080×1920 (9:16) ≤60s 自动截断;社交链分发

✍️ Caption Generator — 标题 + 正文 + 标签

scripts/generate_caption.py

无 LLM 依赖,纯规则:

  • 标题 ≤18 字,前 18 字含 2 个 TF-IDF 关键词
  • 正文 200-500 字,每 ~60 字一个 emoji(📌✨💡🔥👇✅🚀📈
  • 3-6 个 # tag,混合垂类 + 长尾(避免纯热词堆叠被判搬运)
  • 发布时段建议来自所选 audience profile

📤 Publish Package — 最终上传包

scripts/publish_package.py · 详细文档

借鉴 vidpipe / OpenShorts / youtube-shorts-pipeline 这类项目的发布队列和多平台分发思路,但保持本项目本地优先:不登录平台、不调用上传 API,只把发布必需物料和 gate 状态整理成可审计的 JSON + Markdown。

常用:

python3 scripts/publish_package.py \
  --project-dir work/day58 \
  --platforms xhs douyin wxch \
  --output work/day58/publish_package.json \
  --markdown work/day58/publish_package.md \
  --strict

输出 publish_package.v1,包含每个平台的 MP4、封面图、SRT/VTT、标题、正文、tags、发布时间建议、上传 checklist、章节文本和 pipeline_manifest 阻塞状态。--strict 会在缺少平台视频、caption 不完整、或已有 gate blocked 时返回 2;pipeline_manifest.py 也会识别 publish_package.json 并把 summary.blocking > 0 列为 blocking gate。

🧭 Project Resume — 续跑上下文包

scripts/project_resume.py · 详细文档

借鉴 agent-native 视频工具的 project state / resume note 思路,但保持本项目本地 artifact-first:复用 pipeline_manifest.py 的 gate 判断,把状态、阶段、缺件、最近 artifacts 和下一步动作整理成可交给下一位 agent 的 JSON + Markdown。

常用:

python3 scripts/project_resume.py \
  --project-dir work/day58 \
  --target-stage publish_ready \
  --output work/day58/project_resume.json \
  --markdown work/day58/project_resume.md \
  --agent-note work/day58/CLAUDE.md \
  --strict

输出 project_resume.v1,包含 phaserecommended_first_actionnext_actions[]latest_artifacts[]、关键 gate snapshot 和一句 suggested_prompt--agent-note 可写出项目级 CLAUDE.md;不传路径时默认写到 --project-dir/CLAUDE.md。脚本不渲染、不上传、不提交任何生成任务,适合自动化收尾、上下文压缩后续跑和跨 agent 交接。

👤 受众 Profile

scripts/profiles/

预设镜头节奏、字幕密度、BGM 增益、目标比例:

  • tech_pro — AI/创业/效率向(90s 默认,每 2.5s 切镜,BGM -16dB,3:4 小红书首选)
  • lifestyle — vlog/穿搭/家居向(60s 默认,每 2.0s 切镜,BGM -10dB)

字体预设(5 套)在 profiles/_fonts.yaml:得意黑 / 阿里妈妈数黑体 / 阿里妈妈方圆体 / 思源黑体 Heavy / 奶酪体。


日常工作流

完整命令链见 docs/prompts/15-xhs-daily-tech-video.md

简化版(每天替换 <NN><主题>):

DAY=NN
WORK=~/Movies/xiaohongshu/day$DAY
SKILL=~/projects/video-editing-skill

# 1. 转写
python3 $SKILL/scripts/transcribe.py $WORK/origin/voice.mp3 \
  --word-timestamps --detect-fillers

# 1b. 可选:按 ASR 去纯口头禅/重复句,先审查 cut list 再渲染
python3 $SKILL/scripts/rough_cut.py \
  --transcript $WORK/work/transcript.json \
  --cut-list $WORK/work/rough_cut.json

# 2. 重组(手动喂 prompt 给 LLM,落地 JSON 后回放)
python3 $SKILL/scripts/rewrite_script.py \
  --transcript $WORK/work/transcript.json --emit-prompt > $WORK/work/prompt.md
# ...LLM 输出 work/llm.json 后...
python3 $SKILL/scripts/rewrite_script.py \
  --transcript $WORK/work/transcript.json \
  --llm-output $WORK/work/llm.json \
  --output $WORK/work/clean_script.md

# 3. 自动丰富(plan 里会有 broll / stickers / chapter_cards / imagegen 四列)
python3 $SKILL/scripts/auto_enrich.py \
  --transcript $WORK/work/transcript.json \
  --clean-script $WORK/work/clean_script.md \
  --bgm $WORK/origin/bgm.mp3 \
  --output $WORK/work/enrich_plan.json

# 3b. 先生成分镜 shot cards,审查 B-roll / 生图 / 生成视频 / 动效路由
python3 $SKILL/scripts/storyboard_plan.py \
  --transcript $WORK/work/transcript.json \
  --clean-script $WORK/work/clean_script.md \
  --output $WORK/work/storyboard_plan.json \
  --markdown $WORK/work/storyboard_plan.md \
  --max-shots 8 \
  --target-aspect 9:16

# 3c. 可选:把分镜转成 Dreamina/Veo/LTX/Wan/Sora 视频生成提示词包
python3 $SKILL/scripts/video_prompt_pack.py \
  --storyboard-plan $WORK/work/storyboard_plan.json \
  --asset-root $WORK/work \
  --output $WORK/work/video_prompt_pack.json \
  --markdown $WORK/work/video_prompt_pack.md \
  --strict

# 3d. 素材任务清单与预检:哪些已 ready,哪些要生图/审批/渲染/搜索
python3 $SKILL/scripts/storyboard_assets.py \
  --storyboard-plan $WORK/work/storyboard_plan.json \
  --asset-root $WORK/work \
  --output $WORK/work/storyboard_assets.json \
  --markdown $WORK/work/storyboard_assets.md

# 3e. 如果 imagegen[] 或 storyboard_assets 里的 needs_generation 非空,在 Codex 里直接调内置 imagegen 工具
#     生图优先使用 Codex 内置 `image_gen` 工具,即 OpenAI GPT Image 2(`gpt-image-2`)。
#     把每条 prompt_en 用 imagegen 生成 1024x1536,存到 $WORK/work/imagegen/
#     不需要 OPENAI_API_KEY;详见 docs/prompts/19-imagegen.md
#     如果 storyboard_assets 里有 needs_approval,提交 Dreamina/即梦前先确认,因为可能消耗 credits。

# 3f. 可选:软件教程/产品演示录屏,导入点击热点并生成自动聚焦计划
python3 $SKILL/scripts/screen_focus.py \
  --events $WORK/work/clicks.json \
  --screen-width 1920 \
  --screen-height 1080 \
  --output $WORK/work/screen_focus_plan.json \
  --markdown $WORK/work/screen_focus_plan.md

# 3g. 可选:录屏另有 facecam/camera,生成 PIP 小窗计划
python3 $SKILL/scripts/pip_overlay.py \
  --camera $WORK/origin/facecam.mp4 \
  --segment "0,42,bottom_right" \
  --sync-offset 0.18 \
  --output $WORK/work/pip_overlay_plan.json \
  --markdown $WORK/work/pip_overlay_plan.md

# 3h. 可选:生成调色计划,最终渲染时用 --color-grade 接入单次编码
python3 $SKILL/scripts/color_grade.py \
  --preset screen \
  --output $WORK/work/color_grade.json \
  --markdown $WORK/work/color_grade.md

# 4. 渲染前预检:先挡住缺文件、空剪辑、坏时间段和危险 overlay 参数
python3 $SKILL/scripts/edit_preflight.py \
  --config $WORK/work/render_config.json \
  --enrich-plan $WORK/work/enrich_plan.json \
  --output $WORK/work/edit_preflight.json \
  --markdown $WORK/work/edit_preflight.md \
  --strict

# 5. 渲染
#    如果生成了 screen_focus_plan.json,可额外追加:
#    --enrich-plan $WORK/work/screen_focus_plan.json
#    如果生成了 pip_overlay_plan.json,可额外追加:
#    --enrich-plan $WORK/work/pip_overlay_plan.json
#    如果生成了 color_grade.json,可额外追加:
#    --color-grade $WORK/work/color_grade.json
python3 $SKILL/scripts/render_final.py \
  --config $WORK/work/render_config.json \
  --enrich-plan $WORK/work/enrich_plan.json \
  --profile tech_pro \
  --primary-speed 1.25 \
  --subtitle-style karaoke \
  --output $WORK/output/day${DAY}_master.mp4

# 6. 主片质检
python3 $SKILL/scripts/render_qa.py \
  $WORK/output/day${DAY}_master.mp4 --platform douyin \
  --json $WORK/output/day${DAY}_master_qa.json \
  --review-dir $WORK/output/verify/day${DAY}_qa \
  --review-clips

# 6b. 如果 QA 有 WARN/FAIL,先看 review packet;想抽查关键切点再生成可视化复盘图
python3 $SKILL/scripts/timeline_view.py \
  $WORK/output/day${DAY}_master.mp4 --at 42.5 --radius 1.5 \
  --output $WORK/output/verify/day${DAY}_42_5s.png

# 6c. 可选:导出平台可上传字幕 sidecar
python3 $SKILL/scripts/subtitle_pack.py \
  --config $WORK/work/render_config.json \
  --output-dir $WORK/output/subtitles \
  --basename day${DAY}_master \
  --speed 1.25 \
  --offset 2.0

# 7. 多平台
python3 $SKILL/scripts/multi_export.py \
  $WORK/output/day${DAY}_master.mp4 --output-dir $WORK/output/

# 7b. 可选:交给专业剪辑软件继续精修/调色/混音
python3 $SKILL/scripts/export_edl.py \
  --config $WORK/work/render_config.json \
  --output $WORK/work/day${DAY}_edit.edl \
  --fps 30
python3 $SKILL/scripts/export_fcpxml.py \
  --config $WORK/work/render_config.json \
  --output $WORK/work/day${DAY}_edit.fcpxml \
  --fps 30 \
  --width 1080 \
  --height 1920

# 8. 平台导出质检
python3 $SKILL/scripts/render_qa.py \
  $WORK/output/day${DAY}_xhs.mp4 --platform xhs
python3 $SKILL/scripts/render_qa.py \
  $WORK/output/day${DAY}_douyin.mp4 --platform douyin
python3 $SKILL/scripts/render_qa.py \
  $WORK/output/day${DAY}_wxch.mp4 --platform wxch

# 9. 文案
python3 $SKILL/scripts/generate_caption.py \
  --script $WORK/work/clean_script.md --profile tech_pro \
  --output $WORK/output/day${DAY}_caption.json

# 10. 发布前 gate 汇总 + 最终上传包
python3 $SKILL/scripts/pipeline_manifest.py \
  --project-dir $WORK \
  --target-stage publish_ready \
  --output $WORK/work/pipeline_manifest.json \
  --markdown $WORK/work/pipeline_manifest.md \
  --strict

python3 $SKILL/scripts/publish_package.py \
  --project-dir $WORK \
  --platforms xhs douyin wxch \
  --output $WORK/work/publish_package.json \
  --markdown $WORK/work/publish_package.md \
  --strict

# 10b. 可选:自动化收尾或跨会话接手前生成续跑上下文包
python3 $SKILL/scripts/project_resume.py \
  --project-dir $WORK \
  --target-stage publish_ready \
  --output $WORK/work/project_resume.json \
  --markdown $WORK/work/project_resume.md \
  --agent-note $WORK/CLAUDE.md \
  --strict

测试

pytest tests/           # 394 测试,约 5 秒

按模块跑:

pytest tests/test_content_guard.py -v       # 80+ 规则的 38 个测试
pytest tests/test_rewrite_script.py -v      # Story Engine
pytest tests/test_auto_broll.py -v          # B-roll 调度
pytest tests/test_multi_export.py -v        # 多平台比例转换
pytest tests/test_render_qa.py -v           # 渲染后质检
pytest tests/test_render_enrich_plan.py -v  # enrich_plan 自动接入渲染
pytest tests/test_rough_cut.py -v           # ASR 粗剪:口头禅/重复句 cut list
pytest tests/test_timeline_view.py -v       # 切点/QA 可视化复盘图
pytest tests/test_generate_caption.py -v    # 文案合成
pytest tests/test_imagegen_hint.py -v       # gpt-image-2 提示词检测
pytest tests/test_storyboard_plan.py -v     # 分镜 shot cards + 生成路由
pytest tests/test_video_prompt_pack.py -v   # 视频生成提示词包 + 审批 gate
pytest tests/test_generation_task_log.py -v # 异步生成任务台账 + 下载 gate
pytest tests/test_video_understanding.py -v # 抽样帧 + 可选 YOLO 检测 artifact
pytest tests/test_storyboard_assets.py -v   # 分镜素材 readiness manifest
pytest tests/test_export_edl.py -v          # NLE handoff EDL + manifest
pytest tests/test_export_fcpxml.py -v       # NLE handoff FCPXML + manifest
pytest tests/test_screen_focus.py -v        # 录屏点击聚焦计划 + render 接入
pytest tests/test_subtitle_pack.py -v       # SRT/VTT/ASS/JSON 字幕交付包
pytest tests/test_audio_cue_sheet.py -v     # BGM/SFX 音频设计清单
pytest tests/test_color_grade.py -v         # 调色计划 + render_final 接入
pytest tests/test_edit_preflight.py -v      # 渲染前结构/路径/参数预检 gate
pytest tests/test_publish_package.py -v     # 最终上传包 + gate 状态汇总
pytest tests/test_project_resume.py -v      # 续跑上下文包 + agent handoff

2026-06-16 自动化升级记录(Publish Package)

本次联网研究的 GitHub 参考:

来源 看到的优点 本项目吸收方式
browser-use/video-use 输出固定落在项目 edit/ 目录,渲染前后有自评和持久化上下文 本项目保持 artifact-first,把发布前物料汇总为 publish_package.v1,不依赖聊天上下文
htekdev/vidpipe idea / platform / publish-by / output structure 进入内容生产管理 publish_package.py 输出平台级 checklist、caption copy 和发布时间提示
mutonby/openshorts YouTube Studio、title/description/chapter、社交自动发布和排期是一等能力 本项目先做本地发布包,不引入账号 token 或第三方上传 API
rushindrasinha/youtube-shorts-pipeline research → script → visuals → voice → captions → assemble → upload 的完整链路 multi_export / caption / subtitle_pack / pipeline_manifest 之后新增最终上传 handoff
Bomx/super-video-maker-skill paid-call、source deck、timestamp、layout、technical QC 都作为质量 gate publish_package.py 读取或构建 pipeline gate,把 blocked 状态带到上传包

新增/调整能力:新增 scripts/publish_package.py,支持 xhsdouyinwxchyoutube_shortstiktokinstagram_reels;自动发现平台 MP4、封面、SRT/VTT、caption JSON、章节文本和 pipeline manifest,输出 publish_package.json 与 Markdown checklist。pipeline_manifest.py 新增 publish_package artifact 类别;如果发布包 summary.blocking > 0,会作为 blocking gate。README、SKILL、docs/prompts/49-publish-package.md、提示词目录和 daily workflow 已更新。

使用方式:常规发布前跑 python3 scripts/publish_package.py --project-dir work/day58 --platforms xhs douyin wxch --output work/day58/publish_package.json --markdown work/day58/publish_package.md --strict;如果平台文件不在默认位置,用 --video xhs=/path/to/xhs.mp4 --video youtube_shorts=/path/to/shorts.mp4 覆盖。脚本不上传、不登录平台、不调用外部 API,适合手工上传或把 JSON 交给发布 connector。

验证结果:新增 tests/test_publish_package.py 7 项,更新 tests/test_pipeline_manifest.py.venv/bin/python -m pytest tests/test_publish_package.py tests/test_pipeline_manifest.py -q 通过 24 passed in 0.36s.venv/bin/python -m compileall scripts tests 通过;.venv/bin/python scripts/publish_package.py --help.venv/bin/python scripts/pipeline_manifest.py --list-categories | rg publish_package smoke 通过;git diff --check 通过;最终全量 .venv/bin/python -m pytest tests -q 通过 360 passed in 5.76s

2026-06-15 自动化升级记录(Color Grade)

本次联网研究的 GitHub 参考:

来源 看到的优点 本项目吸收方式
KyaniteLabs/mcp-video 把 color grading、effects、preflight guardrails、repurposing manifest 放进 agent tool surface 新增 bounded color_grade.py,不让 agent 手写不受控 FFmpeg filter
browser-use/video-use 把 color grade 与 transcript/cut/subtitles 并列为 conversational video editing 能力 在本 skill 的实际渲染链中加入 --color-grade,而不是只写成提示词建议
wizenheimer/vibestudio 视频 filters / color correction 作为本地、可追踪命令能力 输出 JSON + Markdown + FFmpeg filter,保持可审计和本地优先
aicw-io/aicw-video 先预览/确认 range、caption、privacy、format,再渲染 调色先产 color_grade.v1 review artifact,再由 render_final.py 接入

新增/调整能力:新增 scripts/color_grade.py,支持 naturalwarmcoolpunchysoftcinematicscreen 七个 preset;自定义 brightnesscontrastsaturationgammatemperaturetintsharpness 会被 clamp 到保守范围,--strict 在 clamp 时返回 2。render_final.py 新增 --color-grade,可读取 preset、FFmpeg 单链 filter 或 color_grade.v1 JSON,并在 B-roll/image/focus 之后、字幕/HUD 前应用,避免二次压缩改变字幕颜色。pipeline_manifest.py 新增 color_grade artifact 类别;README、SKILL、docs/prompts/48-color-grade.md 和提示词目录已更新。

使用方式:先跑 python3 scripts/color_grade.py --preset screen --output work/color_grade.json --markdown work/color_grade.md;最终渲染加 python3 scripts/render_final.py --config work/render_config.json --color-grade work/color_grade.json --output output/tutorial_master.mp4。如果只是给已完成 master 做复版,可用 python3 scripts/color_grade.py --preset cinematic --input output/master.mp4 --render-output output/master_grade.mp4 --output work/color_grade.json --markdown work/color_grade.md

验证结果:新增 tests/test_color_grade.py 7 项,更新 tests/test_pipeline_manifest.py.venv/bin/python -m pytest tests/test_color_grade.py tests/test_pipeline_manifest.py -q 通过 22 passed in 0.31s.venv/bin/python -m compileall scripts tests 通过;.venv/bin/python scripts/color_grade.py --help.venv/bin/python scripts/render_final.py --help.venv/bin/python scripts/pipeline_manifest.py --list-categories | rg color_grade smoke 通过;git diff --check 通过;最终全量 .venv/bin/python -m pytest tests -q 通过 351 passed in 3.88s

2026-06-14 自动化升级记录(Video Understanding + YOLO)

本次联网 research 参考:

来源 看到的要点 本项目吸收方式
Ultralytics YOLO Predict 文档 Results.boxes 提供 xyxyconfcls、可选 id 等字段 video_understanding.py --detector yolo 直接解析这些字段,输出统一 detections[]
Ultralytics YOLO Track 文档 Ultralytics 支持 BoT-SORT / ByteTrack 等 tracker,可用 tracker YAML 配置 README 说明高动态素材可用 model.track(..., tracker="bytetrack.yaml") 作为同一 JSON 的更密集上游
Norfair 文档 Norfair 可以给任意 detector 增加轻量多目标跟踪 本项目内置先做抽样帧 bbox 轻量关联;需要严格 MOT 时可用 Norfair 输出外部 tracks

新增/调整能力:新增 scripts/video_understanding.py,支持默认无 detector 抽样帧、--detector yolo 可选 Ultralytics YOLO 检测、--external-detections 合并已有检测 JSON、按场景边界和固定间隔抽帧、生成轻量 tracks[]scene_tags[]warnings[] 和 Markdown review。pipeline_manifest.py 新增 video_understanding artifact 类别,可作为可选或显式 required gate 被发现。README、SKILL、docs/prompts/47-video-understanding.md、smart reframe 和 privacy redaction 文档都已更新为同一条视觉理解路径。

使用方式:无 detector 时用 python3 scripts/video_understanding.py origin/talk.mp4 --output work/video_understanding.json --markdown work/video_understanding.md;启用 YOLO 时先 pip install ultralytics,再加 --detector yolo --model yolo11n.pt --scene-boundaries work/scene_boundaries.json --strict;下游用 smart_reframe.py --detections work/video_understanding.json 做主体感知裁切,或用 privacy_redact.py --detections work/video_understanding.json 生成隐私遮挡计划。

验证结果:新增 tests/test_video_understanding.py 8 项,更新 tests/test_pipeline_manifest.py.venv/bin/python -m pytest tests/test_video_understanding.py tests/test_smart_reframe.py tests/test_privacy_redact.py tests/test_pipeline_manifest.py -q 通过 36 passed in 1.12s.venv/bin/python scripts/video_understanding.py --help.venv/bin/python scripts/pipeline_manifest.py --list-categories | rg video_understanding smoke 通过;.venv/bin/python -m compileall scripts tests 通过;git diff --check 通过;最终全量 .venv/bin/python -m pytest tests -q 通过 343 passed in 3.63s

2026-06-14 自动化升级记录(Generation Task Log)

本次联网研究的 GitHub 参考:

项目 看到的优点 本项目吸收方式
PixVerseAI/skills 把 task status / wait 和 asset download 拆成独立 capability,适合异步生成和批量任务 新增本地 generation_task_log.py,保存 task id、轮询命令、下载命令和 blocking 状态
digitalsamba/claude-code-video-toolkit 用项目状态跟踪 scenes、asset status、phase,方便跨会话续作 generation_tasks.json 成为可恢复 artifact,并由 pipeline_manifest.py 汇总发布前状态
znyupup/ai-video-editing-skill 自动剪辑 workflow 强调素材理解、预览确认、再渲染 本次先补生成素材的 review/落盘闭环;交互式 dashboard 暂不引入
GoogleCloudPlatform/vertex-ai-creative-studio 视频生成和 FFmpeg 合成工具链分工明确 本项目继续保持 provider 生成与本地渲染分离,只记录生成任务,不提交 provider job

新增/调整能力:新增 scripts/generation_task_log.py,支持 addupdateimport-provider-decisionreport 四个子命令;可记录 Dreamina/即梦 submit_id、PixVerse task id 或其他 provider id,自动生成 Dreamina query_result 轮询/下载命令,导入 provider JSON 状态,并计算 readinesssummary.blockingpipeline_manifest.py 新增 generation_task_log 可选 gate,发现 generation_tasks.json 中存在未审批、未完成、未下载、失败或本地文件丢失的任务时会阻塞发布清单。新增 docs/prompts/46-generation-task-log.md,并更新 daily workflow、SKILL、提示词目录和 README 能力说明。

使用方式:从 provider 决策初始化台账用 python3 scripts/generation_task_log.py import-provider-decision --provider-decision work/provider_decision.json --log work/generation_tasks.json --markdown work/generation_tasks.md --strict;提交 Dreamina/即梦后保存任务用 python3 scripts/generation_task_log.py add --log work/generation_tasks.json --provider dreamina --task-id "<submit_id>" --shot-id shot_002 --expected-path work/generated_video/shot_002.mp4 --status submitted --markdown work/generation_tasks.md --strict;下载完成后用 python3 scripts/generation_task_log.py update --log work/generation_tasks.json --provider dreamina --task-id "<submit_id>" --status downloaded --asset-path work/generated_video/shot_002.mp4 --markdown work/generation_tasks.md

验证结果:新增 tests/test_generation_task_log.py 7 项,更新 tests/test_pipeline_manifest.py.venv/bin/python -m pytest tests/test_generation_task_log.py tests/test_pipeline_manifest.py -q 通过 20 passed in 0.21s.venv/bin/python -m compileall scripts tests 通过;.venv/bin/python scripts/generation_task_log.py --help.venv/bin/python scripts/generation_task_log.py add --help.venv/bin/python scripts/pipeline_manifest.py --list-categories | rg generation_task_log smoke 通过;git diff --check 通过;第一次全量测试因 macOS subprocess.Popen 临时返回 BlockingIOError: Resource temporarily unavailable 导致 5 个旧 CLI smoke 失败,单独重跑这 5 项通过 5 passed in 0.28s,随后最终全量 .venv/bin/python -m pytest tests -q 通过 334 passed in 3.30s

2026-06-12 自动化升级记录(Video Prompt Pack)

本次联网研究的 GitHub 参考:

项目 看到的优点 本项目吸收方式
Square-Zero-Labs/video-prompting-skill 支持 Seedance、LTX、Sora、Veo、Wan 等模型指南,并把 character sheet 作为 image-to-video 前置工作流 新增 provider-specific prompt pack,包含角色/风格 reference sheet、参考图路径和模型化 prompt
browser-use/video-use 强调确认策略、执行、迭代、持久化,以及字幕/剪辑等 production-correctness hard rules video_prompt_pack.py --strict 在 paid video generation 未审批时返回 2,生成前先持久化 review artifact
digitalsamba/claude-code-video-toolkit 用项目状态跟踪 scenes、audio、phase、asset status,适合跨会话续作 新增 video_prompt_pack.json/.md 作为可恢复 artifact,并接入 pipeline_manifest.py gate
calesthio/OpenMontage provider 选择、创意审批、自检和成本意识都进入生产流程 prompt pack 记录 approval_status、negative prompt、review checks 和 summary.blocking
SamurAIGPT/AI-Youtube-Shorts-Generator 长视频转短视频时输出 JSON,保留分数、hook、reason 等下游可自动化字段 本项目继续保持 JSON + Markdown 双输出,方便 agent 和人工同时复核

新增/调整能力:新增 scripts/video_prompt_pack.py,可从 storyboard_plan.json 生成 video_prompt_pack.v1,自动/指定输出 Dreamina/即梦 Seedance、Veo、LTX、Wan、Sora、Codex imagegen、Remotion 或本地 B-roll 的提示词;支持 --character--brand-anchor--animate-stills--approved--strict;新增 docs/prompts/45-video-prompt-pack.md,更新 daily workflow、SKILL、提示词目录;pipeline_manifest.py 新增 video_prompt_pack 可选 gate,发现 summary.blocking > 0 会阻塞发布清单。

使用方式:普通 review 用 python3 scripts/video_prompt_pack.py --storyboard-plan work/storyboard_plan.json --asset-root work --output work/video_prompt_pack.json --markdown work/video_prompt_pack.md --strict;要把 Codex imagegen still route 转成 image-to-video 提示词,加 --animate-stills;确认 Dreamina/即梦或其他 provider credits 后加 --approved 再进入提交/下载流程。

验证结果:新增 tests/test_video_prompt_pack.py 5 项,更新 tests/test_pipeline_manifest.py.venv/bin/python -m pytest tests/test_video_prompt_pack.py tests/test_pipeline_manifest.py -q 通过 17 passed in 0.23s;完整 .venv/bin/python -m pytest tests -q 通过 326 passed in 3.78s.venv/bin/python -m compileall scripts tests 通过;git diff --check 通过;.venv/bin/python scripts/video_prompt_pack.py --help.venv/bin/python scripts/pipeline_manifest.py --list-categories smoke 验证正常。

2026-06-10 自动化升级记录(Audio Cue Sheet)

本次联网研究的 GitHub 参考:

项目 看到的优点 本项目吸收方式
calesthio/OpenMontage 把 music、audio mixer、sound-design、预算和 stage gate 明确写进生产流程 新增本地 audio_cue_sheet.py,把 BGM/SFX 缺口变成 review artifact
vericontext/vibeframe storyboard cue、music/SFX/narration 生成和 build/review report 统一走 JSON 输出 audio_cue_sheet.v1,保留 cue 来源、状态、route、approval note 和 next actions
digitalsamba/claude-code-video-toolkit 把 voiceover、music、SFX、timing sync 作为项目阶段管理 先规划音频,再让 pipeline_manifest.py 拦截未解决音频任务
AIDC-AI/Pixelle-Video 自动短视频流程显式处理 narration、BGM 和音频/视频时长匹配 voice_track 记录口播主轨时长和响度目标,BGM/SFX 作为次级音频层审查

新增/调整能力:新增 scripts/audio_cue_sheet.py,可从 transcript.json 生成 BGM mood、BPM 范围、music prompt、SFX cue、生成审批和本地素材缺口;扫描 --asset-root 下的 .mp3/.wav/.m4a/.flac/.ogg 等音频,优先匹配本地 BGM/SFX;新增 docs/prompts/43-audio-cue-sheet.mdpipeline_manifest.py 新增 audio_cue_sheet 可选 gate,发现 summary.blocking > 0 会阻塞发布清单。

使用方式:普通 review 用 python3 scripts/audio_cue_sheet.py --transcript work/transcript.json --asset-root media/bgm --asset-root media/sfx --output work/audio_cue_sheet.json --markdown work/audio_cue_sheet.md;发布前严格门禁加 --require-local-music --require-local-sfx --strict。如果需要生成音乐或音效,先确认 provider credits 和素材授权,再提交生成任务。

验证结果:新增 tests/test_audio_cue_sheet.py 7 项,更新 tests/test_pipeline_manifest.py.venv/bin/python -m pytest tests/test_audio_cue_sheet.py tests/test_pipeline_manifest.py -q 通过 18 passed in 0.22s;完整 .venv/bin/python -m pytest tests -q 通过 312 passed in 3.65s.venv/bin/python -m compileall scripts tests 通过;git diff --check 通过;.venv/bin/python scripts/audio_cue_sheet.py --help smoke 验证 CLI 参数正常。

本次自动化更新记录(2026-05-20 UTC)

  • 调研来源:GitHub 搜索并对比 znyupup/ai-video-editing-skilledit_plan.json + DashboardFireRedTeam/FireRed-OpenStoryline 的节点化 workflow schema、taylorzhou16/video-gen 的 storyboard JSON / 一致性 review,以及 6missedcalls/video-editing-skill 的轻量 ffmpeg 编排。
  • 新增能力render_final.py 新增 --enrich-plan,可直接读取 auto_enrich.py 输出,把 B-roll cue 转成定时视频 overlay,把章节卡/贴纸转成 ASS badge,把带实际文件路径的 imagegen cue 转成定时图片 overlay;同时修复 text_badges 已检查但未写入字幕 ASS 的问题,普通字幕和 karaoke 字幕都支持 badge。
  • 使用方式python3 scripts/render_final.py --config work/render_config.json --enrich-plan work/enrich_plan.json --output output/master.mp4broll[].suggested_assetchapter_cards[].pngimagegen[].image_path/generated_path 支持相对 enrich_plan.json 的路径;没有生成文件的 imagegen cue 只提示,不阻塞。
  • 验证结果:新增 tests/test_render_enrich_plan.py 5 项通过;相关回归 tests/test_auto_enrich.py tests/test_render_guard_integration.py tests/test_render_content_guard_integration.py tests/test_audio_chain.py tests/test_primary_speed.py 共 15 项通过;全量 .venv/bin/python -m pytest tests 通过 176 passed in 1.94spython3 -m compileall scripts tests 通过;合成 4 秒视频实测 --enrich-plan 成功应用 1 个 B-roll、1 个章节卡图片 overlay、1 个 badge 并输出有效 MP4。

本次自动化更新记录(2026-05-19 UTC)

  • 新增能力:参考 GitHub 上 browser-use/video-usetimeline_view 复盘工作台、remotion-dev/skills 的单帧/预览验证习惯,以及 Agents365-ai/video-podcast-maker 的 Remotion Studio 预览迭代思路,新增 scripts/timeline_view.py
  • 使用方式:单点复盘用 python3 scripts/timeline_view.py output/master.mp4 --at 42.5 --radius 1.5 --output output/verify/42_5s.png;跳切批量复盘用 --cut-list work/jumpcut.json --output-dir output/verify/cuts
  • 验证结果pytest tests/test_timeline_view.py -v 通过 7 项;python3 -m compileall scripts tests 通过;合成 4 秒视频实测 --at 输出 1600×1120 PNG,--cut-list 批量输出 2 张 PNG;全量 .venv/bin/python -m pytest tests 通过 171 passed in 1.65s

提示词教程

# 主题 何时用
01 口播素材处理 第一次入门,完整 V2 流程
06 多平台导出(V2 版) 简易多比例(V3 推荐看 17)
14 导出剪映/CapCut 想在剪映里继续手工调
15 V3 完整流水线 每天做一条小红书视频 — 推荐入口
16 Content Guard 担心标题/正文限流
17 三平台导出 一次发小红书/抖音/视频号
18 Auto-Enrich 想让视频更"有质感"
19 AI 生图(gpt-image-2 / Codex imagegen) 抽象概念自动配图
20 Render QA 渲染后机器质检
21 Jump Cut 自动去停顿
22 Timeline View 切点/可疑区间人工复盘图
23 Versioned Output 避免覆盖旧成片
24 Storyboard Plan 分镜 shot cards + 生成路由
25 Storyboard Assets 分镜素材任务清单 + ready 预检
26 ASR Rough Cut 去口头禅/重复句粗剪
27 NLE Handoff 导出 EDL / FCPXML 给 Premiere/FCP/Resolve
28 Screen Focus 录屏点击/热点自动聚焦
29 Subtitle Pack 导出 SRT/VTT/ASS/JSON 字幕包
43 Audio Cue Sheet 规划 BGM/SFX 和生成审批
45 Video Prompt Pack 视频生成提示词包 + paid approval gate
46 Generation Task Log 跟踪 submit_id、轮询、下载和本地落盘
49 Publish Package 汇总平台视频、文案、字幕和发布 gate
50 CapCut Subtitle Import 剪映/CapCut 自动字幕反向导入
52 Project Resume 生成跨会话续跑上下文包

完整列表见 docs/prompts/README.md


平台支持

平台 Whisper 编码器 备注
macOS Apple Silicon mlx-whisper (Metal) VideoToolbox 主开发平台。large-v3-turbo 推荐
macOS Intel faster-whisper (CPU) VideoToolbox medium 模型推荐
Linux + NVIDIA faster-whisper (CUDA) NVENC RTX 40 系直通;50 系需 float16
Linux + Intel Arc faster-whisper (CPU) QSV iGPU/Arc 都走 QSV
WSL faster-whisper NVENC(如有) Windows 字体自动从 /mnt/c
Windows faster-whisper QSV/AMF 推荐 WSL2

中国用户:自动检测中国 locale,pip 走清华镜像、HuggingFace 走 hf-mirror.com,也可 --mirror 强制启用。


架构

每个脚本一个明确职责。没有"god script"。

scripts/
├── utils.py                    平台/字体/编码器自检
├── _internal_text_guard.py     内部 token 拦截器
├── transcribe.py               Whisper 转写
├── video_understanding.py      抽样帧 + 可选 YOLO 检测 artifact       [V3]
├── highlight_picker.py         长视频精华候选 / brief 定向找片段      [V3]
├── rough_cut.py                transcript 粗剪:去口头禅/重复句      [V3]
├── extract_audio.py            音频提取
├── split_video.py              按句切片(V2 兼容)
├── media_library.py            素材库索引(CLIP-ready)
├── merge_clips.py              合并片段(V2 兼容)
├── content_guard.py            平台雷区 lint                   [V3]
├── rewrite_script.py           Story Engine                    [V3]
├── auto_broll.py               B-roll 调度                      [V3]
├── auto_chapter_cards.py       章节卡渲染                       [V3]
├── beat_sync.py                BGM 卡点                         [V3]
├── audio_cue_sheet.py          BGM/SFX 音频设计清单               [V3]
├── auto_stickers.py            情绪→贴纸                        [V3]
├── imagegen_hint.py            抽象概念→gpt-image-2 提示词       [V3]
├── auto_enrich.py              丰富度编排                       [V3]
├── storyboard_plan.py          分镜 shot cards + 生成路由         [V3]
├── video_prompt_pack.py        多模型视频生成提示词包 + 审批 gate  [V3]
├── generation_task_log.py      异步生成任务台账 + 下载 gate         [V3]
├── storyboard_assets.py        分镜素材任务清单 + ready 预检       [V3]
├── stock_material_plan.py      远程 stock 搜索规划                 [V3]
├── screen_focus.py             录屏点击/热点聚焦计划              [V3]
├── color_grade.py              bounded 调色计划 + FFmpeg filter    [V3]
├── edit_preflight.py           渲染前结构/路径/参数预检 gate       [V3]
├── render_final.py             单次编码渲染 + enrich_plan 接入(V3 强化)
├── render_qa.py                渲染后黑屏/静帧/静音/尺寸质检       [V3]
├── timeline_view.py            filmstrip+waveform 可视化复盘图     [V3]
├── subtitle_pack.py            SRT/VTT/ASS/JSON 字幕交付包        [V3]
├── import_capcut_subtitles.py  剪映/CapCut 字幕反向导入 + gap cut [V3]
├── project_resume.py           续跑上下文包 + agent handoff           [V3]
├── burn_subtitles.py           字幕 ASS 生成
├── generate_cover.py           封面生成
├── generate_cover_image.py     Chrome-rendered 封面
├── add_chapter_bar.py          章节进度条
├── export_capcut.py            剪映工程导出
├── export_edl.py               NLE handoff EDL + manifest          [V3]
├── export_fcpxml.py            NLE handoff FCPXML + manifest       [V3]
├── generate_standup_timeline.py Remotion timeline
├── multi_export.py             三平台导出                       [V3]
├── generate_caption.py         标题/正文/标签                   [V3]
├── publish_package.py          最终上传包 + gate 状态汇总           [V3]
├── prompts/
│   ├── hook_templates.yaml     8 钩子模板                       [V3]
│   ├── cta_templates.yaml      5 CTA 模板                       [V3]
│   └── imagegen_templates.yaml gpt-image-2 提示词模板 + 7 sample [V3]
└── profiles/
    ├── __init__.py             加载器                           [V3]
    ├── tech_pro.yaml           AI/创业 profile                   [V3]
    ├── lifestyle.yaml          vlog profile                      [V3]
    └── _fonts.yaml             5 套字体预设                     [V3]

实施记录:docs/plans/2026-05-17-v3-xhs-improvements.md


Linux GPU 配置

NVIDIA 40 系(RTX 4060/4070/4080/4090)

开箱即用,CUDA 12.4+ + 驱动 535+:

sudo apt install nvidia-driver-535 nvidia-cuda-toolkit
pip install faster-whisper
nvidia-smi   # 验证

NVIDIA 50 系(RTX 5070/5080/5090)

需要最新 CUDA + 强制 float16 防止 INT8 cuBLAS 报错。scripts/utils.py 自动检测 50 系列并使用 float16 精度。

Intel Arc / iGPU

走 QSV 编码:

pip install faster-whisper   # CPU 模式跑 Whisper
ffmpeg -hwaccels  # 应该列出 qsv

详细分卡指南:python3 scripts/utils.py 会按你的硬件给具体提示。


贡献

V3.2+ 路线图后续可能加:

  • spaCy 中文 NER → 更精准的 B-roll 实体匹配(升级当前的关键词列表)
  • CLIP embedding 跨段比对 → 自动匹配最贴合段落内容的素材
  • librosa real beat detection 作为默认(当前回落到 120 bpm 固定网格)
  • zxing-cpp QR 码扫描 + 外站 logo OCR → 画面级 Content Guard
  • gpt-image-2 character anchor 一致性(多张图同一人物形象保持一致)

V3 已完成:Phase 1-5 + imagegen 集成(#9 #11 #12 #13 #14 #15 #16)。

PR 欢迎。新功能必须带测试,每个新脚本至少 5 个测试,全套应保持在轻量本地运行范围内。


License

MIT.


BestAI Labs · 2026

About

OpenClaw/Codex Skill: Auto video editing for talk/vlog videos — speech recognition, sentence splitting, subtitle burning, and clip merging

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors