Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add zenstory-ai/oh-story-dsh --skill video-assemblegit clone --depth 1 https://github.com/zenstory-ai/oh-story-dshWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/zenstory-ai/oh-story-dsh/video-assemble)<a href="https://agentmods.dev/skills/zenstory-ai/oh-story-dsh/video-assemble"><img src="https://agentmods.dev/badge/skills/zenstory-ai/oh-story-dsh/video-assemble/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/zenstory-ai/oh-story-dsh/video-assemble"><img src="https://agentmods.dev/badge/skills/zenstory-ai/oh-story-dsh/video-assemble.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00109 | $0.02010 |
| Opus 5 | $0.00055 | $0.01005 |
| Sonnet 5 | $0.00022 | $0.00402 |
| Haiku 4.5 | $0.00011 | $0.00201 |
Grade A, and why
video-assemble scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 7d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
This is a copy
100% identical to video-assemble — 0 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.
How it starts
The opening of the file, as written. The whole thing — 98 lines — stays where its author put it; the contents beside it link to each section on GitHub.
1. 定位
本技能负责最终合成:
- 把各段旁白音频放到视频时间线上。
- 在旁白窗口内压低原声,支持 fixed / sidechain / zone 模式。
- 根据旁白位置生成
subtitles.srt;默认同时生成并烧录subtitles.ass,--no-burn-subtitles可关闭。 - 可选把最终响度标准化到目标 LUFS。
2. 声音收尾契约
合成阶段只实现创作决定,不凭空制造决定。Agent 在写旁白位置前,已在 visual_audio_board.json 为每个 beat 指定 audio_owner:
original_dialogueaction_soundambience/musicsilencenarration
因此,旁白间隙是主动选择,不是必须填满的空白。不要为了“更满”而加入通用 BGM、压住必须听见的台词或消除有意义的沉默。
当前渲染器不解析 visual_audio_board.json;Agent 通过旁白时间、overlaps_speech、原声留白与现有混音参数落实这些决定。
3. 输入契约
<video>:源视频;cut 模式下为edited_source.mp4。work_dir/tts_meta.json:配音阶段写出的{segments: [...]}。每段包含audio_path、时间、pause_after_ms、overlaps_speech和用于混音/字幕的位置。
下面的 scripts/... 均相对于本技能目录。若执行器从仓库根目录启动,请给脚本路径加上本技能的绝对目录。脚本不从其他技能目录读取文件;外部输入仅限命令显式传入的视频、参数与 work_dir 产物。
4. 运行命令
python3 scripts/assemble.py <video> --work-dir <work_dir> \
[--recap-stem <name>] [--output-dir <dir>] [--no-burn-subtitles] \
[--subtitle-y-top <inclusive-y> --subtitle-y-bot <exclusive-y>] \
[--source-video <orig.mp4>] [--export-jianying [--jianying-out <dir>]]
5. 输出契约
recap_<stem>.mp4:稳定的最终输出别名;每次运行覆盖更新。work_dir/output.mp4:工作目录内成片。subtitles.srt:旁白字幕;烧录时另有subtitles.ass。timeline.json:后端无关的多轨模型,包含视频、原声、旁白、BGM、字幕和 ducking 自动化。_placed_*.wav:实际写入主混音的完整逐段旁白 PCM;时间线与剪映只引用这些文件。assembly_manifest.json:输入来源、cut 来源指纹、渲染设置与最终输出路径。assembly_qc.json:旁白完整性、原声句末交接、时间线素材时长与交付质量的发布门禁。- 剪映草稿目录:仅
--export-jianying时生成,包含draft_content.json、draft_info.json与draft_meta_info.json。
6. 合成规则
- 音频按轨道混合:原声、可选 BGM 与旁白各自独立。
- 旁白不做任何容差裁尾;温和加速后仍放不下即
no_safe_fit。每段_placed_*.wav必须与序列化后的时间线区间等长或更短,否则timeline_audio_mismatch阻断。 - 原声在旁白结束后保持压低到下一可靠句末的
pause_start,只在实测停顿内渐强, 于source_restore_at回满;无后续锚点时保持压低到时间线末端,而不是放出半句。 --export-jianying/EXPORT_JIANYING=1可把timeline.json导出为可编辑草稿。cut 模式应传--source-video <orig>,让草稿引用真实原片区间。- 剪映导出默认把视频、音频与图片复制到
Resources/local/{video,audio,image},保持草稿可搬迁;--jianying-no-bundle-media只适合原路径始终可访问的情况。 - 重叠覆盖物会拆到编号轨道;非空目标目录不会覆盖,而会创建编号兄弟目录。
- 常速、倒放、变换、富文本、转场、蒙版、LUT、绿幕复合草稿及显式特效轨道通过 timeline v2 扩展表达。需要素材包的功能只接受调用方合法提供的离线资源。
- 剪映草稿引用未烧录的源视频,因此原片硬字幕仍会保留,必要时在剪映内另行遮罩。
- 字幕外观可用
SUBTITLE_FONT_SIZE、SUBTITLE_MARGIN_V、SUBTITLE_MAX_CHARS等控制。 SUBTITLE_Y_TOP/BOT把 ASS 基线放到测得的原片字幕区域,坐标为半开[top, bot);显式遮罩策略下默认SUBTITLE_MASK_OPACITY=0.6,SOURCE_SUBTITLE_MASK_TIMING=narration。- 原声在旁白间隙回到
IDLE_ORIG_VOLUME,旁白下压到SPEECH_DUCKING_VOLUME;DUCK_FADE_SECONDS控制过渡。还可配置DUCKING_MODE、ZONE_DUCKING_VOLUME、FINAL_LOUDNORM与TARGET_LUFS。 - 可通过
BGM_PATH指定 BGM;它会循环到成片长度,并按BGM_VOLUME/BGM_DUCKING_VOLUME混音。不要在没有创作依据时设置通用 BGM。 - 烧录字幕需要带
subtitles/ libass 的 ffmpeg;合成阶段会预检并在缺失时明确失败。 - 原声留白中的对白字幕优先读取 Agent 校对的
original_subtitles.json;否则保守映射 ASR。只有遮罩覆盖留白或用户字幕明确要求替换时才烧录原声对白,并用「」与旁白区分。
What ships with it
39 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- references/jianying/empty_draft_meta_info.json 1.7 KB
- references/jianying/empty_jy_combination_segment.json 1.6 KB
- references/jianying/empty_jy_combination_video_material.json 2.2 KB
- references/jianying/empty_jy_draft.json 5.4 KB
- references/jianying/empty_jy_material_video.json 1.8 KB
- references/jianying/empty_jy_meta_material_value.json 358 B
- references/jianying/empty_jy_project_info.json 3.6 KB
- references/jianying/empty_jy_segment.json 1.3 KB
- references/jianying/empty_jy_text_styles.json 440 B
- references/jianying/empty_yj_material_audio.json 865 B
- references/jianying/empty_yj_material_text.json 2.4 KB
- references/jianying/LICENSE.duo-video 1.0 KB
- references/jianying/SOURCE.md 728 B
- scripts/artifacts.py 2.7 KB runs code
- scripts/assemble_constants.py 1.0 KB runs code
- scripts/assemble.py 16 KB runs code
- scripts/assembly_contract.py 11 KB runs code
- scripts/assembly_settings.py 4.4 KB runs code
- scripts/audio_automation.py 6.7 KB runs code
- scripts/audio_mix.py 19 KB runs code
- scripts/export_jianying.py 8.7 KB runs code
- scripts/jianying_builders.py 31 KB runs code
- scripts/jianying_model.py 3.7 KB runs code
- scripts/jianying_optional.py 1013 B runs code
- scripts/jianying_schema.py 5.6 KB runs code
- scripts/jianying_templates.py 1.2 KB runs code
- scripts/jianying_timeline_contract.py 8.5 KB runs code
- scripts/jianying_tracks.py 2.6 KB runs code
- scripts/jianying_writer.py 15 KB runs code
- scripts/lib.py 13 KB runs code
- scripts/media.py 8.5 KB runs code
- scripts/narration_audio.py 18 KB runs code
- scripts/render_preflight.py 1.3 KB runs code
- scripts/source_subtitles.py 19 KB runs code
- scripts/subtitle_core.py 13 KB runs code
- scripts/subtitle_render.py 3.3 KB runs code
- scripts/timeline_emit.py 3.6 KB runs code
- scripts/timeline.py 10 KB runs code
- scripts/visual_render.py 16 KB runs code
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 7d ago First seen · 98 lines · 109 tokens per session scan A e0771facf681
video-assemble is a skill published in the GitHub repository zenstory-ai/oh-story-dsh (338 stars, last pushed yesterday), licensed MIT. It adds 109 tokens to every session and 2,010 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it A with 0 findings. It is 100% identical to video-assemble, differing in 0 lines, and is treated as a copy.
Other skills, from other repositories
story-import
A tool for turning an existing novel into a structured writing project. It analyzes the book and organizes its characters, settings, plot plans, chapters, and tracking data for later writing.
story-long-analyze
A long-form fiction analysis workflow for breaking down a novel’s opening chapters, characters, pacing, turning points, relationships, and overall structure.
story-deslop
A writing editor for Chinese web novels that detects writing patterns often associated with AI-generated text and makes the prose feel more natural.
story-short-analyze
A Chinese-language guide for analysing short popular web fiction, such as stories published on 番茄, 故事会, or 知乎盐选. It examines the core premise, plot structure, emotional arc, twists, writing techniques, and reader appeal.
browser-cdp
Use this skill when you need to control a Chrome browser via CDP (Chrome DevTools Protocol) to reuse existing login sessions. Covers: launching Chrome in debug mode, opening URLs, waiting for page load, evaluating JavaScript, taking snapshots, and extracting auth tokens. Trigger phrases: browser automation, CDP…
novel-language-style
A guide to choosing and controlling the writing style of online fiction. It covers narration, word choice, figurative language, dialogue, and techniques for making scenes easier to picture.