- 后端·可插拔 Provider 层:通用 OpenAICompatibleProvider(tokenssr 等中转站,base_url+api_key,零改代码换站)+ ModelProvider.api_key - 后端·脚本 agent:结构化 ScriptDraft 契约 + 加载电商 skill + 出稿/改稿一体对话 agent(3模式/多模型)+ 流式 SSE 端点(DRF SSE renderer) - 后端·图像:gpt-image-2 参考图出图 + 故事板 @图1@图2@图3 多锚点合成(锁脸锁商品);Seedance 打开 generate_audio - 后端·模特库:gpt-image-2 生成器(9:16氛围图→16:9白底三视图)+ seed_demo_models 管理命令 - DB·迁移:tokenssr 中转站 + 多模型 seed(豆包/GPT-5.5/Gemini + gpt-image-2);ScriptSegment 结构化字段 - 前端·脚本趴:接真 SSE(工具卡 + 思考流)+ 模型下拉 + 3模式 + 改稿;agentScriptStream - skills/ecommerce-video-script 电商脚本技能(运行时依赖) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
3.0 KiB
3.0 KiB
输出前自检清单
输出 JSON 之前必读。逐条内部过一遍,命中问题先改再输出。 自检过程不展示给用户。 任一"硬校验"不通过 = 不合格,必须修。
A. 输出契约校验(硬,必须全过)
- 最终只输出一个 JSON 对象,无 schema 外的多余文字/注释。
tone∈{种草, 测评, 剧情, 痛点}。aspect_ratio存在;输入指定了就用输入值,未指定为"9:16"。total_duration∈{15, 30, 60, 90}。segment_count == total_duration / 15,且segments数组长度等于它。- 每个
segment.duration == 15;index从 0 连续递增无跳号。 - 每个
segment.role∈{钩子, 痛点, 卖点, CTA}。 - 首镜
role == 钩子;末镜收 CTA(独立 CTA 镜,或末镜旁白末尾含明确行动指令)。 entities每项type∈{character, scene, product},id全局唯一。entity_refs与speaker引用的 id 都已在 entities 中声明(无悬空引用)。- 每个声明的 entity 至少被一个 segment 引用(无孤儿 entity)。
speaker要么为null,要么指向一个type==character的 id。- 必填字段无缺失:顶层
hook/tone/aspect_ratio/total_duration/segment_count/entities/segments; 每 entity 有id/type/name/visual_prompt/ref_index; 每 segment 有index/duration/role/narration/visual/product_exposure/entity_refs。
B. 内容质检(钩子 / 结构 / 一致性)
- 钩子镜第一句在前 3 秒抛出钩子,套用了
hook-library.md的某个公式。 - 顶层
hook与钩子镜口径一致。 - 卖点镜的卖点挂在前面铺的痛点上,不是干罗列参数。
- CTA 给了明确动作(点小黄车/领券/主页链接)。
- 档位映射正确:role 序列符合
methodology.md「档位 × 黄金结构映射」表。 - 90s 的多个卖点镜各有侧重不重复。
- 同一角色/场景/商品全程复用同一 entity(没有给同一对象写出两份 visual_prompt)。
- 每个
visual_prompt信息足够喂图模型(角色/场景/商品的外观特征写清)。 - 每镜
product_exposure自然、与 role 匹配(参考方法论露出表)。
C. 旁白红线扫描(逐镜)
- 每镜
narration≤ 55 字(硬上限;目标 ≤50 留缓冲,逐字数一遍,别凭感觉)。 - 口语化,无书面腔/AI 腔("综上""不仅…而且""值得一提"等已清除)。
- 违规词扫描:无医疗功效词(治疗/根治/抗癌/消炎/排毒/速效…)。
- 绝对化用语扫描:无 最/第一/唯一/100%/国家级/永久/绝对/史上 等。
- 无虚假承诺(三天见效/永不反弹/包治…)。
通过标准
A 区全部通过 + B/C 区无红线命中 → 可输出。 任何一条不过:先改,再重跑本清单,直到全过,才输出最终 JSON。