用户输入一个选题或口播稿,自动生成完整短视频成片(文案、分镜、数字人口播 + AI 画面混剪)。适用于「一键成片」「根据选题做视频」等场景。当前 skill 已内聚 TTS、数字人视频生成与 AI 文生视频调用能力。
内容位置工作流、 duration_sec、 null/合并、选题校验**§4.1切段、奇偶镜、 scenes[]、 scene_count/ video_typestoryboard_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 渲染、或混用。
video_plan、口播全文、分镜clients.tts_client 创建与轮询语音任务;整段优先;超长按分镜少批合并(细则与字数见 render_rules.md §3·C.4)clients.avatar_client 上传音频、创建数字人视频任务并轮询结果(音频驱动)ref_prompt → 当前 skill 内 clients.ai_creation_client → 与镜内音频合成适合要成片;口播与画面混剪;用户明确要生成短视频不适合仅文案/标题;未要视频;只剪已有素材
CHANJING_APP_ID / CHANJING_SECRET_KEY 获取蝉镜凭证。凭证缺失或失效时按鉴权逻辑提示重新配置。ffmpeg、 ffproberun_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 等,勿未经比较直接取页首。合并: 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(各阶段用哪份模板见上列步骤)。
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 为准。
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 长度上限为 **8000** 字符。
不做:不产 plan/script/storyboard;不自动非当代/当代;不用 list_tasks 当代次( render_rules.md §4 表项 8)
手工编排:仍须满足 render_rules.md §3、§4 与 §5;§3 细化(如 silencedetect、 minterpolate、参照轨码率、同套切段音频换形象、TTS 批间静音等) 全部保留。
输入 MVP
字段必填说明full_script是与各镜 voiceover 按 scene_id 拼, norm 一致scenes是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/1ai_video_duration_sec否5 或 10,默认 10model_code否默认 AI_VIDEO_MODEL 或 Doubao-Seedance-1.0-pro;creation_type=4;不传 ref_img_url``max_retry_per_step否默认 1(§6)bash
python scripts/run_render.py --input workflow.json --output-dir ./outputs/run1
输出: final_one_click.mp4; workflow_result.json; work/
实现说明:当前版本 run_render.py 不再通过子进程调用外部 skill 脚本;TTS、数字人视频与 AI 文生视频能力均由当前 skill 内 clients/ 实现。
norm:去 \r、首尾空白;空→空串;与 run_render.py 一致。口播:先 full_script,再 script → copy_text → input_script → content 首个非空。无 topic:首句代选题(40 字内遇句末标点截,否则 24 字)。 null/合并 §4.1。
字段必填说明topic条件无则见首句规则;建议 ≥5 字industry/ platform/ style否industry 空;platform/style: DEFAULT_* 或 douyin/ 观点型口播``duration_sec否DEFAULT_DURATION 或 60;策划参考use_avatar否默认 trueavatar_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否默认 truestrict_validation/ allow_auto_expand_topic/ max_retry_per_step否true/false/1full_script否默认空script_title/ script_hook/ script_cta否默认空script/…否见上文口播顺序
键含义statussuccess / partial / failedvideo_planPlanscript_resulttitle、hook、full_script、ctastoryboard_result.scenes[]scene_id、duration_sec、voiceover、subtitle、visual_prompt、use_avatarrender_resultvideo_file、scene_video_urls、render_path、degrade_log其它error、debug…
渲染无降级:任一步失败即中断,不自动改为仅 DH 或仅 AI 成片。 partial:未成 success(如 run_render 异常仍写 workflow_result.json); 不 表示允许上述降级, 不 免 storyboard_prompt.md·D.1b 类质检。成功 degrade_log = [];失败尽量保留已产出文案与分镜。
表在 templates/render_rules.md §4;与 ref_prompt 交叉见 storyboard_prompt.md / history_storyboard_prompt.md( §4.2 指针)。本节为锚点。
duration_sec 不符TTS_BATCH_MAX)以 render_rules.md §3·C.4 为准max_retry_per_step、短 ref_prompt、拆镜;查 workflow_result.json