AgentStack
SKILL verified MIT Self-run

Autodsj

skill-dabaoagent-autodsj-autodsj · by DaBaoAgent

AutoDSJ 电视剧/短剧全自动解说剪辑工作流。用户说“AutoDSJ”“剪辑某剧”“跑第N集”“出成片”,或 asks to automate drama recap video editing, diagnose mismatched visuals, build a scene map, or rerun an episode 时使用。强制使用完整大场景地图、字幕/剧本混合检索、父段全局序列解码和60~240帧选择性云端视觉复核。

No reviews yet
0 installs
3 views
0.0% view→install

Install

$ agentstack add skill-dabaoagent-autodsj-autodsj

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Autodsj? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

AutoDSJ 工作流

唯一技能源与同步

只修改 Git 仓库中的 skills/autodsj。它是 Claude Code、Codex、Hermes、OpenCode 和 OpenClaw 共用的唯一源;不得把任一 Agent 的部署目录当作源文件直接迭代。每次修改后先校验并提交 Git,再运行:

cd 
python scripts\install_autodsj_skill.py --agent all
python scripts\install_autodsj_skill.py --agent all --check

安装器按每个文件 SHA-256 镜像校验目标目录。可传入 --agent claude|codex|hermes|opencode|openclaw|shared 只安装一个 Agent;shared 写入 ~/.agents/skills,适合 OpenCode/OpenClaw 的通用发现路径。旧 Hermes 目录仅在必须兼容既有安装时使用 --agent legacy-hermes

项目根目录和 Python 环境必须从当前工作区发现,不得照抄任何机器的绝对路径。换电脑或项目路径变化时,先读 [portable-deployment.md](references/portable-deployment.md)。

本工作流无 WebUI、无端口,只走 autodsj.py 这一条 CLI 管线。配音只用百炼 Qwen 克隆音色。音量硬性规范:voice.volume=100drama.source_play_volume=100,配音与原片再分别经 loudnorm=I=-16:TP=-1.5:LRA=11 归一化到 -16 LUFS 等响。不得用 120%/50% 等纯增益组合代替响度归一化。

不可跳过的顺序

1. 先审校文案

读取目标单集目录及子目录的 .txt/.md/.docx 源文案,不得直接开跑。检查:

  • 原片: / 解说: 结构完整;
  • 开头冲突或悬念足够强,信息递进、因果和结尾追更钩子合理;
  • 角色名、他/她、人物关系、动作主体和字幕同音字正确;
  • 每段主要推进一个事件,只有尾句可承接下一场景。

《玫瑰的故事》必须读 references/rose-story-knowledge.md,并查 references/rose-story-episodes.json 的对应集。

2. 先建文本和物理镜头索引

cd D:\@kaifa\AutoDSJ\project
$PY = ".\.venv\Scripts\python.exe"
& $PY autodsj.py preflight --folder ""
& $PY autodsj.py script --folder ""
& $PY autodsj.py shots --folder ""

不要恢复旧的每 8~10 秒抽一帧、全片约 280 帧的 VL 扫描。先以 SRT、审校剧本和物理镜头关键图编完整场景地图;昂贵视觉只在文本缩小候选后运行。

新集还没有 ★ 匹配报告.json 时,允许一次不渲染引导:

& $PY autodsj.py run --folder "" --skip-visual --no-render

3. 建完整大场景地图

在正式匹配或渲染前,必须完整查看原片时间轴,写好 \_scene_map.json。原片有多少个完整大场景,scenes 就必须有多少个;不得只画文案提到的几个。

必须满足:

  • coverage_reviewed: true
  • scene_count == scenes.length
  • coverage_ranges 全部被各大场景连续覆盖,无空洞;
  • 每个解说镜头只能落在唯一的父段场景计划中;
  • 一段解说默认只有一个主场景;
  • 最多允许“整段主场景 → 更短的尾句承上启下场景”;
  • 禁止三场景跳转、短前导后长跳转、候选扩窗越出指定大场景。

效率技巧:建场景地图时用 execute_code 批处理——一次性读取视觉索引用 print 输出完整时间轴(time+people+caption),据此划分场景边界,然后写 JSON 到磁盘并立即 from backend.scene_map import validate_scene_map 验证,避免多轮 terminal/read_file 来回。

具体 JSON 契约见 references/hierarchical-shot-matching.md。新集从零编写场景地图的实操 (先跑 run --skip-visual --no-render 引导出 ★匹配报告.json,据它定 parent_scene_plans 的键=tts_parent_idto_shot=各段真实分镜数;交叉剪辑剧集用「多 range 场景按剧情线分组」 但所有 range 须划分时间轴不重叠),以及渲染后用人脸库核验成片的完整方法,见 references/scene-map-authoring-and-verification.md

4. 建分层镜头并影子匹配

& $PY autodsj.py events --folder ""
& $PY autodsj.py shadow-match --folder ""
& $PY autodsj.py visual --folder "" --target-frames 90
& $PY autodsj.py shadow-match --folder ""

固定层级:大场景 → 连续事件块 → 物理镜头 → 动作瞬间

固定证据顺序:SRT/审校剧本 BM25 → 文本向量 → 可选 CAM++ 角色声纹 → 父段 Viterbi → 60~240 帧选择性云端视觉复核 → 高风险候选前/中/后三帧对比。所有证据只能在父场景内排序,不能将镜头拉到场景外。详细契约见 references/hybrid-evidence-matching.md

narration_intent.py 必须区分检索扩展词和视觉硬条件。关系“靠近”、心理“后退”等隐喻可以辅助文本召回,但不得写进 hard_requirements.actions;只有明确可见动词、人物、地点和道具才能成为 must_have。显式“不是/并非/不要/没有/而非”写入 must_not_have,不得反向扩展成正向要求。

时间线固定使用两轮分配:第一轮在全部候选中选择全局未用画面;只有第一轮完全无解时,父段计划才允许第二轮复用已引用的原片对白画面。planning_summary.strict_fresh 应尽量等于解说镜头数,source_reuse_fallback 应为 0 或极小。广告区在两轮中都是绝对硬禁区,父段计划、人工 override 和复用降级均不得绕过。

shadow-match 会生成 _selective_visual_plan.json。计划按风险在 60/90/120/180/240 帧间自主选择(上限 240);计划未完成时,候选或场景图变化会使旧视觉索引失效;一旦同一素材、同一场景地图的计划完整识别,后续影子匹配必须锁定该通用计划,禁止因新视觉描述改变候选排序后反复推翻整套计划。人工修改场景地图 SHA 时锁定自动失效;普通候选变化交给 _candidate_visual_review.json 的独立多帧复核处理。运行 visual 后必须再跑一次 shadow-match。视觉 API 运行期间可读 _source_visual_index.jsonstatus/message 监控进度。

高风险候选复核最多处理 matching.candidate_review_max_segments 个解说句;基础层每个候选取物理镜头前/中/后三帧,候选数不足时允许单候选硬确认,但绝不越过 _scene_map.json 补候选。人物身份只认 InsightFace;云端只能确认动作、地点、道具和可见事实。完整结果可缓存,partial 结果续跑时只重试失败组。

基础层仍 unresolved 时,默认只对这些段运行二级复核:把同一场景内候选从3个扩大到5个,每候选取7帧(8%~92%均匀覆盖),写入 _candidate_visual_escalation.json,不得重跑已通过段或锁定的120帧通用索引。超大多图请求被远端断开时,保持本地7帧人脸核验,但云端可均匀降为每候选5帧、再降为3帧;基础请求可降为2帧、再降为1帧,候选数量与身份硬门禁不变。候选缓存只有在候选 ID 顺序和帧数完全一致时才可复用。加帧后仍稳定出现错误人物,说明候选镜头错,应扩大同一父场景内候选数量或修正场景地图,禁止继续无上限加帧或跨场景搜索。candidate_visual_review_ready=false 或任一复核句 unresolved 时,safe_to_render 必须为 false。

有干净角色对白参考时启用 CAM++:

uv pip install --python $PY -r requirements-audio.txt
uv pip install --python $PY --no-deps speakerlab==0.0.6
# \_voices\\*.wav
& $PY autodsj.py voices --folder ""

speakerlab 或参考音频时允许字幕/剧本路径运行,但报告必须显示 voice_index=false,不得声称声纹已生效。

必须检查:

  • ★ 分层影子匹配报告.json
  • ★ 新旧匹配并排对比.json
  • ★ 分层接管预演报告.json
  • _subtitle_event_index.json_selective_visual_plan.json;有声纹时还要 _source_voice_index.json

只有 safe_to_render=trueunresolved=0 才能渲染。地图、文案、分镜或配音变化后必须重跑 shadow-match;不得手改报告绕过哈希和时间线校验。

5. 先预跑,再成片

& $PY autodsj.py run --folder "" --skip-visual --no-render --hierarchical-match
& $PY autodsj.py run --folder "" --skip-visual --hierarchical-match

正式渲染不带 --hierarchical-match、缺场景地图、地图不完整或预演哈希失效时,必须停止,不允许降级到旧匹配方法。

人脸库

换新剧或人物容易混淆时,在剧集根目录放 _faces//*.jpg,每个主要角色 3–5 张清晰正脸,再运行:

& $PY autodsj.py faces build --folder ""

成片交付

正式渲染完成后,管线必须自动执行发布交付,不得等用户再次提醒。只有以下文件全部生成并通过门禁,才允许报告“成片完成”:

  • ★ 成片.mp4:可读取时长和视频流;
  • ★ 字幕.srt:可解析,末条字幕不得越过片尾;
  • ★ 匹配报告.json
  • ★ 发布信息.txt:3 个标题、剧情简介、互动问题、严格 5 个标签、封面文案和实际成片参数;
  • ★ 剪映字幕导入.txt:同时包含原片对白和解说,删除分段标签与空行,保持源文案顺序;
  • ★ 交付清单.json:记录上述文件、视频参数、字幕/文案行数及待复核指代词行数,状态必须为 ready

交付门禁通过后,单集根目录必须只保留原片、原片字幕、源文案、★ 成片.mp4★ 发布信息.txt★ 剪映字幕导入.txt_AutoDSJ工作文件★ 字幕.srt、匹配报告、场景地图、索引、TTS、裁切片及交付清单全部自动移入 _AutoDSJ工作文件。下一次执行处理命令时自动恢复这些资产,成片后再次归档;禁止因整理目录而删除可复用的场景图、声纹或缓存。

交付门禁已接入 autodsj.py run 的正式渲染末尾。已有成片缺交付文件、或人工修改文案后只需重建发布包时,运行:

& $PY autodsj.py deliver --folder ""

scripts/audit_pronouns.pyscripts/make_jianying_srt_txt.py 仅用于人工诊断/单文件修复,不再是正式流程的必需手工步骤。向用户交付时报告成片、SRT、匹配报告、发布信息、剪映字幕和交付清单路径。

用户要求保留旧成片时,先复制到单集子目录,再渲染;不要在主目录放多个可被误识别的源视频。

安全清理

只在成片存在且验收后执行:

& $PY autodsj.py clean --folder ""

该命令不再删除资产,而是把根目录中的工作文件统一归档到 _AutoDSJ工作文件。必须保留原片、原片字幕、源文案和三项公开交付文件。

快速排错

  • 整段乱跳:先查 _scene_map.jsonparent_scene_plans,不要扩大时间窗。
  • 人物错:检查父场景是否选错,再补人脸参考照。
  • 动作错:检查事件块、物理镜头的多关键帧和 SRT,不得跳出父场景找高分帧。
  • 动作句的人工 override 必须锚定动作起点而非动作后的对白/反应字幕;渲染前抽取该源片范围和对应成片范围的连续帧,确认动作起势、发生、结果都落入计划片段。只看到动作结果(例如人已在水里)不能算命中“推入水里”。
  • 独立 quality 复查必须按 _AutoDSJ工作文件、素材根目录、旧 _DY工作文件 的顺序寻找最新报告与索引;HIGH 人物缺失是人工复核告警,不能替代候选门禁,也不能仅凭云端未写角色名就判定真实错配。
  • 改了文案:重跑脚本表与 shadow-match。若新的 _selective_visual_plan.json 使视觉索引过期,再跑默认 visual(风险自适应60~240帧),不要恢复固定间隔密集全片扫描。
  • 匹配慢:先检查 _event_text_embeddings.json_query_text_embeddings.json 是否存在;内容不变时第六集93镜实测重匹配约7秒。
  • 多集任务:串行渲染,不要同时吃满笔记本 CPU/内存/磁盘。
  • 场景地图覆盖空洞validate_scene_map覆盖存在空洞 时,常见原因:(a) coverage_ranges 包含了没有视觉帧的广告区间——把广告区从 coverage_ranges 移除,或拆成多段 [[150, 978], [1001, 2668]];(b) 某场景 ranges 结尾与下个场景开头有间隔——逐场景检查 scenes[].ranges 的连续性,确保相邻场景首尾相接(允许广告区打断)。excluded_ranges 不影响覆盖校验,只影响匹配,广告区必须从 coverage_ranges 移出而非只写在 excluded_ranges
  • 场景地图写入顺序:先用 Python 写 _scene_map.json 到磁盘,再 validate_scene_map 验证。validate_scene_map 从磁盘读取场景地图,不是从内存。先写后验,不要反过来。

三个「别慌」信号(都不是故障,详见 references/scene-map-authoring-and-verification.md):

  • 渲染日志刷 [场景锁定] 行N-镜M → 「场景」 且与 parent_scene_plans 不符——那是旧分配器过渡噪声,随后的 分层匹配正式接管:N 个解说分镜 会整段覆盖,以接管后置信度全 H★匹配报告.json 为准。
  • 接管后必须分别检查解说复用和原片明确复引。解说画面与任何已用片段重叠都应先消除;只有文案明确重复引用同一句原片对白、且必须保持口型与原声时,才允许记录为必要例外。
  • 「独立爆款版」短文案出片仅 2-3 分钟——正确。成片时长 = Σ解说配音 + Σ原片对白,由文案长度决定;引导日志「解说目标约2490s(90%)」只是按原片长度的默认假设,不代表漏渲染。
  • 广告禁区误封:当前 backend/ad_filter.py 会把“墙上的小广告、办证刻章、柱子上的广告字迹”等场景陈设排除,只把明确的广告插播、品牌/产品展示或字幕商业话术设为硬禁区;shadow-match 也会根据当前字幕和视觉索引重新生成 _source_ad_intervals.json,不得复用陈旧广告缓存。若正式预跑仍报广告冲突,检查该文件的 reasons:纯视觉信号必须包含明确商业语境,不能只有墙面招贴。详细诊断见 references/ad-filter-false-positive-fix.md

项目的完整命令与数据结构以 D:\@kaifa\AutoDSJ\project\README.md 为准。

耗时参考

单集全流程端到端耗时约 40-80 分钟,主要瓶颈:

| 阶段 | 耗时 | 备注 | |------|------|------| | 初始 visual(36帧) | 5-10分钟 | SiliconFlow Qwen VL API | | 引导 scaffold(TTS+匹配) | 5-10分钟 | 百炼 TTS 偶尔 SSL 重试 | | 场景地图编写 | 1-2分钟 | execute_code 一次性完成 | | events + shadow-match | 2-5分钟 | 文本嵌入是主要开销 | | 选择性 visual(60~240帧) | 5-45分钟 | 取决于帧数、并发与云端长尾;可续跑 | | shadow-match 再跑 | 2-3分钟 | | | 预跑 + 正式渲染 | 20-40分钟 | TTS 复用缓存 + FFmpeg 编码 |

多集批量(4集实测):串行交错模式,总耗时约 4-5小时。 具体做法:在上一集渲染(FFmpeg 编码约15-30分钟)期间,为下一集做全部准备工作(preflight→visual→script→shots→scaffold→场景地图→events→shadow-match→visual selective),等上一集成片时下一集已就绪可立即开跑。

常见延时因素

  • 视觉 API 超时(SiliconFlow 429/500),重试可续跑
  • 百炼 TTS SSL EOF 错误,管线内置重试自动恢复
  • 广告误封先检查 _source_ad_intervals.jsonreasons;当前管线会自动排除墙面小广告/办证招贴等场景陈设,无需改写视觉索引

新集并行准备(2026-07)

新集默认先运行:

$PY autodsj.py prepare --folder ""

该命令并行建立脚本表与物理镜头索引,生成事件索引、 _scene_map.draft.json 和风险自适应的 60/90/120/180/240 帧云端视觉计划,再以有界并发执行 稀疏抽帧和批量视觉识别。视觉完成后自动把识别证据回填到镜头/事件索引,不重跑镜头边界。

草案始终为 coverage_reviewed=false,不得直接用于正式成片。人工核对完整覆盖、场景边界、 广告排除和父段计划后,另存为 _scene_map.json 并设置 coverage_reviewed=true。 只生成索引和草案时使用 autodsj.py prepare --skip-visual;显式固定视觉预算时使用 --target-frames 60..240,否则保持风险自适应。

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.