executing-plans
executing-plans
Use when executing an implementation plan in the current session as the implementer yourself — your human partner chose inline execution, or no subagent tool is available
video-understand拉片——把一条对标视频拆成可复刻 SOP。管线:下载→whisper逐字稿→抽帧(粗览+按需密抽)→判型→逐段填表→产出①逐段拉片报告(它怎么做的,工具链带置信度)+②复现SOP(你怎么抄)。用于"学习/复刻优秀博主的爆款视频"。触发词:"拉片"、"拉这条视频"、"拆解爆款视频"、"复刻对标博主"、"理解这条视频"、"这个视频在讲什么"、"学习博主视频"、"video understand"、"看懂小红书视频"。
Independent GitHub snapshot · Automated classification · Original documentation governs
crawler 只能拿到视频的直链 + 元数据,给不了"理解"。真正读懂一条视频要走多模态管线, 而且分工明确:口播交给 whisper,画面交给视觉模型(就是你/agent 直接 Read 关键帧),两条模态合起来才叫理解。
"拉片"= 把一条对标视频拆成可复刻的 SOP。它拉的是两层:
STEP1 定维度 → STEP2 拆素材(脚本) → STEP3 判型 → STEP4 两遍细看(粗览→密抽) → STEP5 逐段填表 → STEP6 双报告+复现SOP
先定这次要拉哪些维度,勾什么出什么:台词 / 节奏卡点 / 特效动效 / 版式镜头 / 字体 / 调色 / 配乐 / 工具链。默认全勾;只关心某几个就只拉那几个(省 token、更聚焦)。
# 三选一来源;note 模式自动取直链下载(需 RNOTE_API_KEY)
python3 prep_video.py --note 6a0b295c00000000350296a1
python3 prep_video.py --url http://...rednotecdn.com/...mp4
python3 prep_video.py --file ./clip.mp4
# 可选: --model medium(更准) --frames 12 --scene 0.25 --out-dir DIR
产出 clip.mp4 / audio.txt / audio.json(带时间戳) / kf-*.jpg(粗帧) / aligned.md(★音画对齐) / manifest.json。
音画对齐:帧时间戳(ffmpeg)+ 口播分段时间(whisper json)融合进 aligned.md——每帧标"该时刻在说什么"。
先判这是哪类片,选对应"眼光"——三类三套拆法:
| 类型 | 长什么样 | 重点看什么 |
|---|---|---|
| 口播/教程 | 录屏 ± 露脸、讲操作 | 工具链 / 操作步骤 / 屏幕信息 → 配合下面【枚举软件模式】抓工具指纹 |
| 叙事/剧情/vlog | 实景、有情节 | 镜头/运镜/转场/配乐/情绪曲线 → 重画面与节奏,whisper 次要 |
| 混剪/图文卡点 | 快切、卡点、大字版式 | 卡点节奏 / 字体版式 / 转场样式 |
均匀稀疏抽帧会漏关键段(实测漏过绑骨段、视频里展示的 blog 段)且贵。改两遍:
aligned.md + 粗帧(kf-*.jpg,约每 9s),标出有戏/看不懂的时间段(动效在变、版式在切、出现新软件 UI、信息密集处)。python3 prep_video.py --file clip.mp4 --out-dir <与粗览同目录> --densify "65-80,120-135" --densify-fps 5
→ dense.md(密帧 d-*.jpg ↔ 时间 ↔ 口播,复用同目录 whisper 分段)。还看不懂就调高 --densify-fps 或缩窄区间。按段对齐成表,每段一行:时间码 | 画面(代表帧) | 台词 | 图形/特效 | 节奏 | 作用。
产出① 逐段拉片报告(它怎么做的)
产出② 复现 SOP(你怎么抄)
逐字稿 → 实拍 → 图形层 → 剪辑 → 收尾)方法论来源:对标博主 yan的ai世界《用 Claude Code 拉片》(2026-06)。成本参考:30min 视频全量拉片 ≈ $25(Opus 主力 + Haiku 跑杂活),普通视频约 40 万 token;拆一个博主 3–5 条即可摸清其工作流。
这是一个独立模式,不要用上面的稀疏关键帧来做。 实测教训:要列全一条教程视频用到的所有软件 (如"混元3D网页 + 桌面DCC + ..."),稀疏场景帧(十来张、还缩到640宽)必漏——因为软件常出现在 静态/过渡帧,而判定软件靠的是窗口标题栏/菜单栏这种小字,缩放后糊掉、稀疏采样跳过。 症状就是"软件一个一个挤出来、永远列不全"。
正确三步:
bash enumerate_tools.sh <video.mp4> <out> 1/2(每2秒一帧,不缩放)。ocr.swift(macOS Vision,中英)抓屏上文字/面板名 → <out>/ocr.txt。
OCR 抓得到网页面板文字,但桌面软件的窗口标题/菜单是小字,OCR 常漏 → 必须第3步。Read 所有 d-*.jpg,
对每帧判"哪个软件的UI"(窗口标题/菜单/面板布局/时间线样式);桌面 DCC 判到具体是
Blender/Maya/C4D/3ds Max/Houdini/ZBrush 哪个;最后合并去重。两种并行编排方式(都验证过,结论一致=本视频2个软件:混元3D网页+Cinema 4D):
A. harness dynamic workflow(首选,可复现+落 dashboard):video_understand.star,一条命令跑完
全片视觉枚举 + 内容理解,run 被 journal、能在 Agent Dashboard 回看:
需先安装
harnessCLI(workflow 工具),来自 https://github.com/cyl19970726/multi-agent-harness; 见author-workflowskill 与该仓库 README。版本要与该仓库的 workflow API 对应。
# 1) 先抽密集帧+OCR
bash skills/video-understand/enumerate_tools.sh <video.mp4> /tmp/vu_dense 1/2
# 2) 从 harness 仓库 cwd 跑(run 才落到 dashboard 的 store)
harness workflow run-script <此目录>/video_understand.star \
--args '{"frames_dir":"/tmp/vu_dense/","frame_count":72,"aligned":"/tmp/vu_hunyuan/aligned.md","batch":8}' \
--start-runtime --progress
# 结果在 stdout 的 run.final_output.result(software_count/all_software/desktop_dcc/steps/...)
程序里:视觉 scan 批用 provider="claude",合并去重 + 读逐字稿做内容理解用 provider="codex"(省成本)。
--dry-run 可先验证语法;--start-runtime 自动拉起 provider runtime。
B. Workflow 工具(ultracode 下临时 fan-out):parallel 分批,schema 用标准 JSON Schema
({type:'object',properties:{...},required:[...]}),再一个 synthesize agent 合并。
⚠️ 两个坑:① codex 不能读图,视觉枚举必须 claude;codex 只跑文本/合成步。
② schema 约定不同:harness run-script 用扁平 {key:"hint"}(列表靠"每行一个"+splitlines);
Workflow 工具用标准 JSON Schema。别混。
download_video 已带 UA+Referer;note 模式会逐个试 best+backup 直链。rnote API 偶发 502/503/429 时,可改用上一轮抓到的 CDN 直链走 --url。data.data[0].note_list[0]、note/video=data.data[0]直接是note);mp4 有的在 n['video'] 有的散在别处。_find_note/extract_video 已兼容(搜整条 note)。--initial_prompt 引导简体;要更准用 --model medium。