chanjing-one-click-video-creation
速查
| 内容 | 位置 |
|---|
工作流、duration_sec、null/合并、选题校验 | §4.1 |
切段、奇偶镜、scenes[]、scene_count/ INLINECODE4 |
storyboard_prompt.md 篇首;
video_brief_plan.md |
| 渲染技术、状态、
partial/success、硬约束 |
render_rules.md §1–§4;
§7、
§8 |
|
ref_prompt / 文生提示词 |
storyboard_prompt.md +
history_storyboard_prompt.md;
§4.2 指针 |
| 请求体字段与默认 |
§6 |
|
run_render.py |
§5 |
冲突:渲染实现以 render_rules.md 为准;ref_prompt 条文以 storyboard_prompt.md / history_storyboard_prompt.md 为准(§4.2 汇总指针)。run_render.py 只实现 §5 + render_rules.md,不增业务规则。执行:完整工作流编排、仅 run_render 渲染、或混用。
1. 做什么
- 1. 选题或全文 →
video_plan、口播全文、分镜 - TTS:通过当前 skill 内
clients.tts_client 创建与轮询语音任务;整段优先;超长按分镜少批合并(细则与字数见 render_rules.md §3·C.4) - 按镜切音频
- 数字人分镜:通过当前 skill 内
clients.avatar_client 上传音频、创建数字人视频任务并轮询结果(音频驱动) - AI 分镜:
ref_prompt → 当前 skill 内 clients.ai_creation_client → 与镜内音频合成 - 封装:对齐公共数字人轨 → ffmpeg concat → 本地 mp4
2. 何时用 / 何时不用
| |
|---|
| 适合 | 要成片;口播与画面混剪;用户明确要生成短视频 |
| 不适合 |
仅文案/标题;未要视频;只剪已有素材 |
3. 前置条件
- - 鉴权:当前 skill 通过环境变量
CHANJING_APP_ID / CHANJING_SECRET_KEY 获取蝉镜凭证。凭证缺失或失效时按鉴权逻辑提示重新配置。 - Plan/Script/分镜:本地 Agent 逻辑,无需外部 LLM API key(本 skill 必选路径不依赖外部 LLM)
- 本机:
ffmpeg、 INLINECODE29 run_render:当前版本主渲染链已内聚实现,不要求外部 chanjing-tts / chanjing-video-compose / chanjing-ai-creation 目录存在,也不再依赖 CHAN_SKILLS_DIR 指向包含其它 skill 的仓库根- 数字人与音色:勿用环境变量或仓库内缓存文件保存跨任务的「默认」
audio_man / person_id / figure_type。每次任务在 workflow.json 根级显式填写;由 Agent 按 video_plan(如 video_type)、口播人设与选题语义,调用当前 skill 内的音色与数字人查询能力选型后写入;audio_man 宜与所选形象的 audio_man_id 一致。 - 公共数字人选型(禁止「只取列表前几项」):须拉取
source="common" 的公共数字人候选(必要时增大分页或翻页,覆盖足够条目),在候选内逐项对比后再定稿:name、figures[].type(→ figure_type)、figures[].width/height(画幅与 D.1c 一致)、audio_man_id、audio_name(若有)与 video_plan/口播人设(性别、气质、行业、年龄感)是否匹配。默认偏好年轻、有活力的形象:名称或 audio_name 中含青年/少女/小哥哥/小姐姐/学生/元气/青春/年轻等正向信号时优先;仅当选题或用户明确要求成熟、权威、中老年等气质时,再选对应人设。定制源 customised 同样对比 name、width/height、audio_man_id 等,勿未经比较直接取页首。 - 运行行为说明:运行过程中会调用蝉镜开放 API、上传切段音频、下载生成媒体,并在本地输出目录写入中间文件与最终 mp4。
4. 规则汇编
4.1 工作流编排
合并:null = 不覆盖。顺序:默认铺底 → 非 null 覆盖 → 布尔/整数校正。字段默认见 §6;未在表中展开的缺省由 run_render.py(及当前 skill 内 clients/)按实现与环境变量读取(不含音色/数字人:audio_man、person_id/avatar_id、figure_type 仅来自 workflow.json,见 §3)。
duration_sec:策划参考,非 ffmpeg 上限。成片时长以 TTS+ffprobe 为准。scene_count 见 video_brief_plan.md;切段与 AI 条数依实测与字幕轴(render_rules.md §3·C.5)。禁止为凑时长裁已定稿口播(除非用户要求)。
选题:去空白 <5 字、占位串(如「你好」「test」)拒收;可扩写;严格模式模糊则失败。
步骤:1) Plan → video_brief_plan(败则全败;模板见 video_brief_plan.md)2) Script 3) Storyboard:语义切分;storyboard_prompt.md;非当代 history_storyboard_prompt.md;DH 与 AI 渲染能力均由当前 skill 内 clients/ 承载;TTS/多段 AI/mux render_rules.md §3、§5 4) Render:render_rules.md §3(含 §3·C.6)、§4(表 4–6);ref_prompt 质检见 storyboard_prompt.md / history_storyboard_prompt.md(§4.2);重试/partial render_rules.md §1 5) 成功:render_rules.md §1
仅渲染:run_render.py + full_script + scenes[]。顺序:Plan → Script → Storyboard → Render(各阶段用哪份模板见上列步骤)。
4.2 文生视频提示词(ref_prompt)— 指针
唯一条文真值(修订以模板为准,本文不重复 D.1–D.4 表文):
| 范围 | 模板 |
|---|
当代向、D.0 语境缺省与文明圈推断、D.1 长度、D.1a、D.1b(易幻觉,全 skill 共用)、D.2 当代、手工 visual_prompt、D.3、D.4 当代装配与 7 要素 / 题材簇 / 单镜拼装 / 自检 | templates/storyboard_prompt.md → 「文生视频提示词(当代向真值)」 |
| D.2 非当代路由、历史流程层、文明圈与国别自洽、占位符纪律、与 D.3/D.4 衔接说明 |
templates/history_storyboard_prompt.md |
| 族裔、
历史/非当代中式造型与出现人物时的英文短语 |
templates/visual_prompt_people_constraint.md(显式族裔锚定、
历史 / 非当代节;兼
render_rules.md §4 表 4–6) |
仍仅在此处索引:长音频多段 render_rules.md §3·C.6;字数上限环境变量 整段 ref_prompt 长度上限为 **8000** 字符。。模板与 render_rules.md 实现冲突时以 render_rules.md 为准。
5. 自动化编排(run_render.py)
依赖:鉴权;本机 ffmpeg / ffprobe;当前 skill 内 clients.tts_client / clients.avatar_client / clients.ai_creation_client
职责:① 通过 clients.tts_client 创建与轮询 TTS 任务(含 audio_task_state);批合并与单批字数上限见 render_rules.md §3·C.4(TTS_BATCH_MAX)② 切段(render_rules.md §3·C.5)③ 有 AI 镜时先完成首条数字人并 ffprobe(含 rotate)→ 再按映射提交文生 aspect_ratio/clarity(见 render_rules.md §3·C.6、debug.ai_video_submit_params)④ 与其余 DH/AI 并行 poll ⑤ AI 轨对齐该参照 ffprobe ⑥ ffmpeg concat ⑦ 多段文生在 ref_prompt 后追加英文分层;总长 整段 ref_prompt INLINECODE119
不做:不产 plan/script/storyboard;不自动非当代/当代;不用 list_tasks 当代次(render_rules.md §4 表项 8)
手工编排:仍须满足 render_rules.md §3、§4 与 §5;§3 细化(如 silencedetect、minterpolate、参照轨码率、同套切段音频换形象、TTS 批间静音等)全部保留。
输入 MVP
| 字段 | 必填 | 说明 |
|---|
| INLINECODE125 | 是 | 与各镜 voiceover 按 scene_id 拼,norm 一致 |
| INLINECODE129 |
是 |
scene_id、
voiceover、
use_avatar;AI 镜
ref_prompt(
storyboard_prompt.md /
history_storyboard_prompt.md;§4.2);可选
subtitle |
|
audio_man | 是 | 宜与所选数字人形象的
audio_man_id 一致 |
|
person_id/
avatar_id | 条件 | 有 DH 镜必填 |
|
figure_type | 否 | 与当次数字人候选中所选形象行的
figure_type 一致(公共多形态时必填) |
|
subtitle_required | 否 | 默认 false;为 true 时数字人镜烧录字幕(
show) |
|
speed/
pitch | 否 | 默认 1/1 |
|
ai_video_duration_sec | 否 | 5 或 10,默认 10 |
|
model_code | 否 | 默认
AI_VIDEO_MODEL 或
Doubao-Seedance-1.0-pro;creation_type=4;不传
ref_img_url |
|
max_retry_per_step | 否 | 默认 1(§6) |
CODEBLOCK0
输出:final_one_click.mp4;workflow_result.json; INLINECODE155
实现说明:当前版本 run_render.py 不再通过子进程调用外部 skill 脚本;TTS、数字人视频与 AI 文生视频能力均由当前 skill 内 clients/ 实现。
6. 输入(请求体)
norm:去 \r、首尾空白;空→空串;与 run_render.py 一致。口播:先 full_script,再 script→copy_text→input_script→content 首个非空。无 topic:首句代选题(40 字内遇句末标点截,否则 24 字)。null/合并 §4.1。
| 字段 | 必填 | 说明 |
|---|
| INLINECODE167 | 条件 | 无则见首句规则;建议 ≥5 字 |
INLINECODE168 /platform/ INLINECODE170 |
否 |
industry 空;platform/style:
DEFAULT_* 或
douyin/
观点型口播 |
|
duration_sec | 否 |
DEFAULT_DURATION 或 60;策划参考 |
|
use_avatar | 否 | 默认 true |
|
avatar_id/
voice_id | 否 | 空;
不得用环境变量兜底音色或数字人;须在
workflow.json 写明
audio_man/
person_id(及有 DH 镜时的
figure_type),由 Agent 按当次任务调用当前 skill 内的音色与数字人查询能力
对比 name、形态、画幅、audio_name 等后选型;
禁止未比较即取列表最前几条;
默认偏好年轻数字人(见
§3) |
|
subtitle_required | 否 | 默认 false(数字人成片不烧录字幕;
run_render 传
hide) |
|
cover_required | 否 | 默认 true |
|
strict_validation/
allow_auto_expand_topic/
max_retry_per_step | 否 | true/false/1 |
|
full_script | 否 | 默认空 |
|
script_title/
script_hook/
script_cta | 否 | 默认空 |
|
script/… | 否 | 见上文口播顺序 |
7. 输出 JSON
| 键 | 含义 |
|---|
| INLINECODE198 | success / partial / failed |
| INLINECODE199 |
Plan |
|
script_result | title、hook、full_script、cta |
|
storyboard_result.scenes[] | scene
id、durationsec、voiceover、subtitle、visual
prompt、useavatar |
|
render_result | video
file、scenevideo
urls、renderpath、degrade_log |
| 其它 | error、debug… |
渲染无降级:任一步失败即中断,不自动改为仅 DH 或仅 AI 成片。partial:未成 success(如 run_render 异常仍写 workflow_result.json);不表示允许上述降级,不免 storyboard_prompt.md·D.1b 类质检。成功 degrade_log=[];失败尽量保留已产出文案与分镜。
8. 硬性约束
表在 templates/render_rules.md §4;与 ref_prompt 交叉见 storyboard_prompt.md / history_storyboard_prompt.md(§4.2 指针)。本节为锚点。
9. 限制
- - 本地 mp4;不上传
- AI 单段常 5–10s;长口播多段
- 成片时长=TTS 总轨;可与
duration_sec 不符 - TTS:整轨优先、超长少批合并;单批上限与合并策略(含
TTS_BATCH_MAX)以 render_rules.md §3·C.4 为准 - 文生失败可能为平台/模型;试增
max_retry_per_step、短 ref_prompt、拆镜;查 INLINECODE217
chanjing-one-click-video-creation
速查
| 内容 | 位置 |
|---|
| 工作流、durationsec、null/合并、选题校验 | §4.1 |
| 切段、奇偶镜、scenes[]、scenecount/videotype |
storyboardprompt.md 篇首;
videobriefplan.md |
| 渲染技术、状态、partial/success、硬约束 |
render_rules.md §1–§4;
§7、
§8 |
|
refprompt / 文生提示词 |
storyboardprompt.md +
historystoryboardprompt.md;
§4.2 指针 |
| 请求体字段与默认 |
§6 |
| run_render.py |
§5 |
冲突:渲染实现以 renderrules.md 为准;refprompt 条文以 storyboardprompt.md / historystoryboardprompt.md 为准(§4.2 汇总指针)。runrender.py 只实现 §5 + renderrules.md,不增业务规则。执行:完整工作流编排、仅 runrender 渲染、或混用。
1. 做什么
- 1. 选题或全文 → videoplan、口播全文、分镜
- TTS:通过当前 skill 内 clients.ttsclient 创建与轮询语音任务;整段优先;超长按分镜少批合并(细则与字数见 renderrules.md §3·C.4)
- 按镜切音频
- 数字人分镜:通过当前 skill 内 clients.avatarclient 上传音频、创建数字人视频任务并轮询结果(音频驱动)
- AI 分镜:refprompt → 当前 skill 内 clients.aicreation_client → 与镜内音频合成
- 封装:对齐公共数字人轨 → ffmpeg concat → 本地 mp4
2. 何时用 / 何时不用
| |
|---|
| 适合 | 要成片;口播与画面混剪;用户明确要生成短视频 |
| 不适合 |
仅文案/标题;未要视频;只剪已有素材 |
3. 前置条件
- - 鉴权:当前 skill 通过环境变量 CHANJINGAPPID / CHANJINGSECRETKEY 获取蝉镜凭证。凭证缺失或失效时按鉴权逻辑提示重新配置。
- Plan/Script/分镜:本地 Agent 逻辑,无需外部 LLM API key(本 skill 必选路径不依赖外部 LLM)
- 本机:ffmpeg、ffprobe
- runrender:当前版本主渲染链已内聚实现,不要求外部 chanjing-tts / chanjing-video-compose / chanjing-ai-creation 目录存在,也不再依赖 CHANSKILLSDIR 指向包含其它 skill 的仓库根
- 数字人与音色:勿用环境变量或仓库内缓存文件保存跨任务的「默认」audioman / personid / figuretype。每次任务在 workflow.json 根级显式填写;由 Agent 按 videoplan(如 videotype)、口播人设与选题语义,调用当前 skill 内的音色与数字人查询能力选型后写入;audioman 宜与所选形象的 audiomanid 一致。
- 公共数字人选型(禁止「只取列表前几项」):须拉取 source=common 的公共数字人候选(必要时增大分页或翻页,覆盖足够条目),在候选内逐项对比后再定稿:name、figures[].type(→ figuretype)、figures[].width/height(画幅与 D.1c 一致)、audiomanid、audioname(若有)与 videoplan/口播人设(性别、气质、行业、年龄感)是否匹配。默认偏好年轻、有活力的形象:名称或 audioname 中含青年/少女/小哥哥/小姐姐/学生/元气/青春/年轻等正向信号时优先;仅当选题或用户明确要求成熟、权威、中老年等气质时,再选对应人设。定制源 customised 同样对比 name、width/height、audioman_id 等,勿未经比较直接取页首。
- 运行行为说明:运行过程中会调用蝉镜开放 API、上传切段音频、下载生成媒体,并在本地输出目录写入中间文件与最终 mp4。
4. 规则汇编
4.1 工作流编排
合并:null = 不覆盖。顺序:默认铺底 → 非 null 覆盖 → 布尔/整数校正。字段默认见 §6;未在表中展开的缺省由 runrender.py(及当前 skill 内 clients/)按实现与环境变量读取(不含音色/数字人:audioman、personid/avatarid、figure_type 仅来自 workflow.json,见 §3)。
durationsec:策划参考,非 ffmpeg 上限。成片时长以 TTS+ffprobe 为准。scenecount 见 videobriefplan.md;切段与 AI 条数依实测与字幕轴(render_rules.md §3·C.5)。禁止为凑时长裁已定稿口播(除非用户要求)。
选题:去空白 <5 字、占位串(如「你好」「test」)拒收;可扩写;严格模式模糊则失败。
步骤:1) Plan → videobriefplan(败则全败;模板见 videobriefplan.md)2) Script 3) Storyboard:语义切分;storyboardprompt.md;非当代 historystoryboardprompt.md;DH 与 AI 渲染能力均由当前 skill 内 clients/ 承载;TTS/多段 AI/mux renderrules.md §3、§5 4) Render:renderrules.md §3(含 §3·C.6)、§4(表 4–6);refprompt 质检见 storyboardprompt.md / historystoryboardprompt.md(§4.2);重试/partial renderrules.md §1 5) 成功:render_rules.md §1
仅渲染:runrender.py + fullscript + scenes[]。顺序:Plan → Script → Storyboard → Render(各阶段用哪份模板见上列步骤)。
4.2 文生视频提示词(ref_prompt)— 指针
唯一条文真值(修订以模板为准,本文不重复 D.1–D.4 表文):
| 范围 | 模板 |
|---|
| 当代向、D.0 语境缺省与文明圈推断、D.1 长度、D.1a、D.1b(易幻觉,全 skill 共用)、D.2 当代、手工 visualprompt、D.3、D.4 当代装配与 7 要素 / 题材簇 / 单镜拼装 / 自检 | templates/storyboardprompt.md → 「文生视频提示词(当代向真值)」 |
| D.2 非当代路由、历史流程层、文明圈与国别自洽、占位符纪律、与 D.3/D.4 衔接说明 |
templates/historystoryboardprompt.md |
| 族裔、
历史/非当代中式造型与出现人物时的英文短语 |
templates/visual
promptpeople_constraint