name: 一句话出片一条龙
slug: yijuhua-chupian-yitiaolong
displayName: "一句话出片一条龙"
summary: "给一句话主题,一条龙做完:选题与钩子 → 台词稿(情绪+语速)→ 画面 → 配音 → 字幕合成 → 全平台发布包,最后直接产出可发布的竖版 MP4。"
description: "给一句话主题,直接做出可发布的竖版短视频成片(MP4),并把八个平台的发布包一起配齐。能力:选题与黄金3秒钩子、台词字数按语速实算、画面卡或 AI 图、免费配音、字幕烧入合成、八平台标题标签。触发词:一条龙、全平台一条龙、一句话出片、从零做条片、主题到成片。不出镜、不做口型同步、不承诺流量;只推正版工具。本技能按次计费,0.5元/次。"
description_zh: "一句话主题 → 选题脚本 → 画面配音 → 合成成片 → 全平台发布包,直接出可发布的竖版 MP4。"
description_en: "One-line topic to a publish-ready vertical short video: hook, script, visuals, TTS, burned-in subtitles, FFmpeg compositing, plus a publishing pack for eight platforms."
version: 1.3.0
author: "茶云堂"
category: content-creation
tags:
- 短视频
- 一条龙
- 成片
- 全平台
- 配音
- 字幕
- 发布name: yijuhua-chupian-yitiaolong
slug: yijuhua-chupian-yitiaolong
displayName: "一句话出片一条龙"
summary: "给一句话主题,一条龙做完:选题与钩子 → 台词稿(情绪+语速)→ 画面 → 配音 → 字幕合成 → 全平台发布包,最后直接产出可发布的竖版 MP4。"
description: "给一句话主题,直接做出可发布的竖版短视频成片(MP4),并把八个平台的发布包一起配齐。能力:选题与黄金3秒钩子、台词字数按语速实算、画面卡或 AI 图、免费配音、字幕烧入合成、八平台标题标签。触发词:一条龙、全平台一条龙、一句话出片、从零做条片、主题到成片。不出镜、不做口型同步、不承诺流量;只推正版工具。本技能按次计费,0.5元/次。"
description_zh: "一句话主题 → 选题脚本 → 画面配音 → 合成成片 → 全平台发布包,直接出可发布的竖版 MP4。"
description_en: "One-line topic to a publish-ready vertical short video: hook, script, visuals, TTS, burned-in subtitles, FFmpeg compositing, plus a publishing pack for eight platforms."
version: 1.3.0
author: "茶云堂"
category: content-creation
tags:
- 短视频
- 一条龙
- 成片
- 全平台
- 配音
- 字幕
- 发布name: 一句话出片一条龙
slug: yijuhua-chupian-yitiaolong
displayName: "一句话出片一条龙"
summary: "给一句话主题,一条龙做完:选题与钩子 → 台词稿(情绪+语速)→ 画面 → 配音 → 字幕合成 → 全平台发布包,最后直接产出可发布的竖版 MP4。"
description: "给一句话主题,直接做出可发布的竖版短视频成片(MP4),并把八个平台的发布包一起配齐。能力:选题与黄金3秒钩子、台词字数按语速实算、画面卡或 AI 图、免费配音、字幕烧入合成、八平台标题标签。触发词:一条龙、全平台一条龙、一句话出片、从零做条片、主题到成片。不出镜、不做口型同步、不承诺流量;只推正版工具。本技能按次计费,0.5元/次。"
description_zh: "一句话主题 → 选题脚本 → 画面配音 → 合成成片 → 全平台发布包,直接出可发布的竖版 MP4。"
description_en: "One-line topic to a publish-ready vertical short video: hook, script, visuals, TTS, burned-in subtitles, FFmpeg compositing, plus a publishing pack for eight platforms."
version: 1.3.0
author: "茶云堂"
category: content-creation
tags:
- 短视频
- 一条龙
- 成片
- 全平台
- 配音
- 字幕
- 发布name: yijuhua-chupian-yitiaolong
slug: yijuhua-chupian-yitiaolong
displayName: "一句话出片一条龙"
summary: "给一句话主题,一条龙做完:选题与钩子 → 台词稿(情绪+语速)→ 画面 → 配音 → 字幕合成 → 全平台发布包,最后直接产出可发布的竖版 MP4。"
description: "给一句话主题,直接做出可发布的竖版短视频成片(MP4),并把八个平台的发布包一起配齐。能力:选题与黄金3秒钩子、台词字数按语速实算、画面卡或 AI 图、免费配音、字幕烧入合成、八平台标题标签。触发词:一条龙、全平台一条龙、一句话出片、从零做条片、主题到成片。不出镜、不做口型同步、不承诺流量;只推正版工具。本技能按次计费,0.5元/次。"
description_zh: "一句话主题 → 选题脚本 → 画面配音 → 合成成片 → 全平台发布包,直接出可发布的竖版 MP4。"
description_en: "One-line topic to a publish-ready vertical short video: hook, script, visuals, TTS, burned-in subtitles, FFmpeg compositing, plus a publishing pack for eight platforms."
version: 1.3.0
author: "茶云堂"
category: content-creation
tags:
- 短视频
- 一条龙
- 成片
- 全平台
- 配音
- 字幕
- 发布
一句话出片一条龙
用户丢一句主题过来,你交一条能直接发布的竖版成片,外加八个平台的发布包。全程不用他碰剪映。
一句话记法:选题脚本我来写,画面配音我来搭,字幕合成我来合,发布清单我来配 —— 他只负责给主题和按发布键。
什么时候会用到我(触发示例)
| 用户原话(举例) | 命中的场景 | 会走的路径 |
|---|---|---|
| 「一条龙:明前龙井怎么挑」 | 全链路出片 | 六步全跑 → 出 MP4 + 发布包 |
| 「一句话出片:店里的新品到了」 | 全链路出片 | 六步全跑 → 出 MP4 + 发布包 |
| 「全平台一条龙:读书笔记怎么整理」 | 全链路 + 八平台适配 | 六步全跑 → 每平台一套标题标签 |
| 「我这有个主题,从选题到发布都帮我弄了」 | 全链路出片 | 六步全跑 |
| 「只有一句话想法,能直接出片吗」 | 全链路出片 | 缺省值顶上,标注后开工 |
| 「上次那条改改再出一条」 | 复用 + 出新片 | 换主题重跑,复用模板 |
| 「我自己剪,你只要把字幕和分镜给我」 | 只要素材包 | 转 jianying-import-pack |
| 「只想要成片,其他不用」 | 只要合成 | 转 slideshow-video-pipeline |
触发词:一条龙 / 全平台一条龙 / 一句话出片 / 出片一条龙 / 主题到成片 / 从零做条片 / 直接出成片 / 选题到发布 / 一条龙出片 / 帮我做条视频 / 一句话做视频 / 从选题到发布全包 / 不用剪映直接出片 / 成片加发布 / 我要一条成片 / 一条龙做视频。
命中任一条即可启动,不需要用户说出「一条龙」三个字。
与「幻灯片视频流水线」的分工(必读,别抢活)
这两个技能都会出 MP4,触发词容易撞。判据:
| 用户说 | 走谁 | 为什么 |
|---|---|---|
| 「出片:X」「出片」 | slideshow-video-pipeline |
它的一等触发词,只管合成,不管选题与发布 |
| 「一条龙」「全平台」 | 本技能 | 从选题管到发布 |
| 只给主题 + 要成片,没说别的 | 本技能 | 用户要的是成品,不是半成品 |
| 已经有图和配音,只缺合成 | slideshow-video-pipeline |
本技能的第 1–4 步是多余的 |
关系是上下游,不是竞争:本技能的第 4–5 步直接复用它的引擎与脚本(make_ass.py / dewatermark.py 已随包携带)。用户若明确只要合成,不要揽下来,转过去。
适用范围
处理什么:一句话主题(或一个产品、一个知识点、一段素材)→ 竖版短视频成片 + 全平台发布包。默认不出镜、纯画面卡或 AI 图 + 配音 + 烧入字幕。题目里给了平台、时长、音色偏好就照用户来。
不承担什么:不做真人口播的口型同步;不做需要真实动作连贯性的实拍型片子;不代用户发布、不登录用户账号;不承诺播放量、涨粉、收益;不生成违法、暴力、色情、政治敏感内容。用户要的不是本技能能干的活,先说清并给替代路径,不要硬套流程。
硬性纪律
- 一句话主题就开工。 缺省值顶上并在交付里标注(「平台按缺省全平台适配」「时长按缺省 30 秒」)。最多只问一轮,且问题附在交付末尾,绝不用提问挡住干活。
- 台词字数必须脚本实算,跑
scripts/count_words.py,不许手数、不许凭感觉估。上限判据是「字数 ÷ 秒数 落在 4–6」,超 6 判念不完,必须删字,不许靠加快语速硬塞。 - 时间轴必须由配音实际时长反推,不许用策划案的理论时长。 TTS 实测永远不等于理论值(实测 30.0 秒 → 30.888 秒),直接烧理论轴会让字幕越往后偏得越多。
- 字幕必须自己折行。
WrapStyle必须是 0(不是 2),每行 ≤16 字,字号 56、MarginLR 50 —— 三个数联动,改一个必须重算另外两个。这是踩过两次的坑:24 字长句会横向溢出、两端被裁字,验收图不放大看不出来。 - 画面张数必须等于镜数。 出完图立刻
ls images/*.png | wc -l核对。并行出图会因提示词首句相同导致文件名撞车、后写覆盖先写(实测 5 张只剩 4 张)—— 不是运气问题,是必查项。 - 合成后必须抽帧目视验收,不许只看脚本没报错就宣布完成。 抽 4 个画面帧 + 2 个转场帧拼一张验收图,逐项看:画面干净 / 无方框(缺字体)/ 转场生效 / 字幕与画面同步。
- 交付前必跑
scripts/qc_check.py。 任一 FAIL 不许交付。它专抓四类「看着正常其实已漏」:图片少一张、字幕超行、成片比音轨短、封面或标题超字。 - 成片只复制一份进桌面;素材、配音、字幕、脚本一律留在工作盘。 桌面同名旧版先清掉再复制,复制后自验字节数与可读时长(否则用户点到的可能是上一版)。
- 发布必须提醒勾选平台的「含有 AI 生成内容」标签。 配音与画面都是 AI 产出的,这是硬要求,不勾不发。
- 工具只推荐正版。 不推荐破解版、注册机、搬运音色、盗版素材站。数据类信息(工具价格、免费额度、音色数量)一律提示「以你打开时官方页面为准」,不背会过期的数字。
执行流程
第 0 步 · 分诊与缺省值
从用户那句话里能读到什么就读什么;读不到的按缺省值顶上,并在交付开头一行标注。
| 缺省项 | 默认值 | 说明 |
|---|---|---|
| 平台 | 全平台适配 | 一次成片 + 八平台发布包 |
| 时长 | 30 秒 | 可选 15 / 45 / 60 |
| 形式 | 画面卡 + 配音 | 不出镜;要 AI 图则走第 3 步 B 路 |
| 音色 | 女声知性 | zh-CN-XiaoxiaoNeural |
| 画幅 | 9:16 竖版(1080×1920) | 八平台通用 |
| 镜数 | 5 镜 | 30 秒片;每镜 ≥3 秒 |
出口条件:五项都有取值。用户补了偏好就按用户来,不再标注缺省。
开工前先体检(一条命令,缺东西早发现):
python scripts/preflight.py
四样齐全(FFmpeg 带 ass/xfade、edge-tts 可用、中文字体在、工作盘有余量)才往下走;缺哪样按报告里的提示补,不要带病开工。
第 1 步 · 选题与钩子
从四类钩子里选一个,不许堆叠:
| 钩子类型 | 逻辑 | 句式 |
|---|---|---|
| 悬念 | 制造信息缺口 | 「挑龙井看三个地方,第二个最容易被忽略。」 |
| 痛点 | 戳具体场景的难受 | 「花大价钱买的龙井,泡出来一股涩味?」 |
| 反常识 | 打破默认认知 | 「明前龙井不一定比雨前好喝。」 |
| 利益诱惑 | 给可验证的收益 | 「记住这一招,下次买茶不会被宰。」 |
硬要求:3 秒内必须出现核心冲突或承诺;不许出现「大家好我是XX」式开场。
结构按四段搭(大段永远 4 段,镜数随时长变):
| 结构大段 | 作用 | 时长占比 |
|---|---|---|
| 痛点引入 | 让人对号入座 | 10% |
| 情绪共鸣 | 建立「我懂你」 | 20% |
| 干货高潮 | 每 8–15 秒给一个能带走的东西 | 50% |
| 引导互动 | 只引导一个动作 | 20% |
时间轴按目标时长选一套(钩子段不许压缩):
| 总时长 | 钩子 | 转折 | 展示 | 号召 |
|---|---|---|---|---|
| 15 秒 | 0–3 | 3–6 | 6–11 | 11–15 |
| 30 秒 | 0–3 | 3–10 | 10–20 | 20–30 |
| 45 秒 | 0–3 | 3–13 | 13–33 | 33–45 |
| 60 秒 | 0–4 | 4–16 | 16–44 | 44–60 |
第 2 步 · 台词稿(情绪 + 语速)
四段台词按情绪与语速倍率写,倍率直接换算成 TTS 参数:
| 段 | 情绪 | 语速倍率 | 换算 --rate |
|---|---|---|---|
| 钩子 | 低沉、悬念、慢起 | 0.85–0.95× | -10% ~ -5% |
| 转折 | 上扬、加快 | 1.05–1.15× | +5% ~ +15% |
| 展示 | 平稳、自信 | 1.00× | +0% |
| 号召 | 热情、干脆 | 1.15–1.25× | +15% ~ +25% |
写完必跑字数核算,这是闸门不是装饰:
python scripts/count_words.py --target 30 "钩子那句" "转折那句" "展示那句" "号召那句"
输出每段字数、实际时长区间、是否超标。判定:每段与合计的「字数 ÷ 秒数」都要落在 4–6。超过 6 字/秒判念不完 → 删形容词和过渡句,不许加语速。低于 4 偏拖,酌情压缩。
三条台词铁律:口语化(写完念一遍,别扭就改);单句 ≤20 字;数字要具体(说「省了两百块」而不是「省了不少」)。
第 3 步 · 画面方案(A 路出 AI 图 / B 路出画面卡)
先定走哪条路:
| 路 | 什么时候用 | 要什么 |
|---|---|---|
| A · 本地画面卡(默认) | 知识科普、观点、清单、对比 | 无,纯本地渲染,最快最稳 |
| B · AI 生图 | 需要氛围、场景、实物质感 | 生图额度;先定妆图锁一致性 |
A 路 · 画面卡:改 assets/画面卡模板.html 的文案 → 用无头 Edge 按 1080×1920 截图。模板已带安全区(底部 1/3 留给字幕)与中文字体栈。
node <html-render-verify>/scripts/fullpage-shot.js "file:///…/cards/01.html" "images/01.png" 540 "<工作目录>/_profile" 960
(fullpage-shot.js 来自 html-render-verify 技能;没有就装一个无头浏览器截图工具,或调高窗口宽度到 ≥1080。截完必须 ffprobe 核尺寸是否 1080×1920。)
B 路 · AI 生图:绝不能 5 张各生成一次 —— 每张都会重编主体,5 次调用 = 5 套布景,成片必崩。正确做法:
- 先出 1 张定妆图,把「主体 + 布景 + 色温 + 光影」全锁进提示词
- 其余各镜全部走图生图,提示词以「保持参考图的…完全不变」开头,只改主体
- 让每条提示词的首句各不相同(把画面主体写最前面),否则文件名前 30 字相同会互相覆盖
构图铁律(A、B 路都要守):主体在画面中上部,底部 1/3 干净留白给字幕。出完第一张先目视验收构图再出其余 —— 构图错了,全部重出。
第 4 步 · 配音
"<装了 edge-tts 的 python>" -m edge_tts --voice zh-CN-XiaoxiaoNeural --rate "+12%" \
--text "第一段台词" --write-media 01.mp3
按第 2 步的倍率逐段定 --rate,按镜分段生成,命名 01.mp3 02.mp3 …。常用音色:zh-CN-XiaoxiaoNeural(女·温暖)、zh-CN-YunxiNeural(男·阳光)、zh-CN-YunjianNeural(男·磁性)。
> ⚠️ 负语速必须写成 --rate=-8%(带等号)。
> 写成 --rate "-8%" 会被命令行解析器当成选项,报 argument --rate: expected one argument。
> 而钩子段「慢 5%~10%」正是负值 —— 每条片子都会踩这一下。冒烟测试实测栽在这里。
生成后立刻核每段实际时长:
for f in audio/*.mp3; do printf "%s " "$f"; <ffprobe> -v error -show_entries format=duration -of csv=p=0 "$f"; done
这几段时长是第 5 步时间轴的唯一依据。
第 5 步 · 字幕折行 + 合成成片
5a · 时间轴重映射。 把策划案的理论区间映射到配音的实际区间:
python scripts/make_ass.py --srt "剪映导入包/01-字幕.srt" --audio-dir audio \
--orig "0,3;3,10;10,20;20,30" --out subs.ass
脚本读 audio/*.mp3 实际时长,把每段字幕严格锁进该段配音区间,并打印每段行数与每行字数。逐行核对:出现任何超上限的行就必须停下来重算,不要往下合成。
5b · 合音轨 + 合成。
# 音轨(用 filter concat,不要用 mp3 copy 拼)
<ffmpeg> -y -i audio/01.mp3 -i audio/02.mp3 -i audio/03.mp3 -i audio/04.mp3 -i audio/05.mp3 \
-filter_complex "[0:a][1:a][2:a][3:a][4:a]concat=n=5:v=0:a=1[aout]" \
-map "[aout]" -c:a aac -b:a 192k voice.m4a
# 合成(时长/offset 用 5a 算出的值)
<ffmpeg> -y -loop 1 -t <t1> -i images/01.png … -loop 1 -t <t5> -i images/05.png -i voice.m4a \
-filter_complex "[0:v]scale=-1:1920:flags=lanczos,crop=1080:1920,setsar=1,fps=30[v0];…;\
[x3][v4]xfade=transition=fade:duration=0.6:offset=<o4>[x4];[x4]ass=subs.ass[vout]" \
-map "[vout]" -map 5:a -c:v libx264 -preset medium -crf 20 -pix_fmt yuv420p \
-c:a aac -b:a 192k -movflags +faststart -shortest 成片.mp4
xfade offset 公式:offset_i = Σ(前 i 张图时长) − i × 转场时长(make_ass.py 会算好,直接抄)。末镜时长要把转场重叠加回去,否则成片会比音轨短、最后一句被切(实测栽过 0.6 秒)。
> ⚠️ 合成命令必须在项目目录里执行。
> 滤镜里的 ass=subs.ass 是相对路径,ffmpeg 按它自己的工作目录去找,不是按输入文件的位置。
> 不在目录里跑会报 ass_read_file(subs.ass): fopen failed → Error initializing filters。
> 要么 cd 进工作目录再跑,要么给 ASS 绝对路径并把盘符冒号转义:ass='C\:/…/subs.ass'。
> 冒烟测试实测栽在这里。
>
> 画面全是满屏大字时,转场用 fadeblack(隐黑)而不是 fade —— 详见 references/踩坑清单.md 第 9 条。
5c · 抽帧验收(不许跳过)。
for t in 1.0 3.5 6.0 10.0 14.5 17.5; do
<ffmpeg> -ss $t -i 成片.mp4 -frames:v 1 -vf scale=540:960 "_frames/f$t.jpg"
done
# 拼成一张验收图,逐帧目视
看过四项:画面干净 / 字幕中文正常(无方框)/ 转场生效不糊字 / 字幕与画面同步。
5d · 机械检测(闸门)。
python scripts/qc_check.py --images-dir images --shots <镜数> --ass subs.ass --max-chars 16 \
--video 成片.mp4 --audio voice.m4a --ffprobe <ffprobe> --publish "剪映导入包/04-封面与标题.md"
任一 FAIL 先修再交付。若你确信是检测器误报,先证伪检测命令(取行错位、空行未过滤都是假阳性常见来源),再怀疑产出物 —— 并且把该形态补进 self_test.py。
第 6 步 · 全平台发布包 + 剪映包
6a · 八平台适配。 一套成片,八个平台各给一份发布信息(画幅、时长、标签、发布时间、AI 标注、该平台红线)。逐平台填写规范见 references/平台适配表.md。
必须写进每份的要紧三条:
1. 勾选平台「含有 AI 生成内容」标签 —— 配音和画面都是 AI 产出的,这是硬要求
2. 标题不用夸张词(震惊、必看、100%、全网最好)—— 极限词是限流红线
3. 站外导流零容忍 —— 不留微信号、不贴站外链接,尤其小红书
6b · 剪映包(顺手给,不额外收费)。 用 scripts/srt_gen.py 出 SRT,四件齐:
| 文件 | 内容 |
|---|---|
01-字幕.srt |
标准 SRT,可直接导入剪映字幕轨 |
02-口播稿.txt |
分段,一段一镜,粘进剪映「文本朗读」 |
03-分镜表.md |
镜号 / 时间 / 画面 / 字幕 / 音效 |
04-封面与标题.md |
封面大字 + 3 条备选标题 + 标签 + 发布时间 + 发布前必做 |
6c · 交付落盘。
D=$(date +%F) # 日期必须用命令取,不许手写
cp 成片.mp4 "C:/Users/<用户名>/Desktop/${D}_<片名>.mp4"
# 复制后自验:字节数一致 + 桌面这份能被 ffprobe 读出时长
成片一份进桌面,素材/配音/字幕/脚本一律留工作盘。桌面同名旧版先清掉。
输出契约
固定六段,标题照写。括号内为说明,不输出:
一句话出片一条龙 · 交付单
(缺省值标注一行,如「平台按缺省全平台适配、时长按缺省 30 秒」)
一、选题与钩子
钩子类型: 钩子句:
四段结构: 时间轴:
二、台词稿(含情绪 + 语速)
| 段 | 时间轴 | 台词 | 情绪 / 语速 | 字数 | 字/秒 | 判定 |
三、画面方案
| 镜 | 时间轴 | 画面内容 | 路(画面卡 / AI 图)| 依据 |
四、成片
路径: 规格:1080×1920 / 30fps / h264 时长: 音轨:
验收图: 机械检测:全部通过 / 不过项
五、全平台发布包
| 平台 | 标题 | 封面大字 | 标签 | 建议发布时间 | 该平台红线提醒 |
六、剪映包(想自己改的人用)
四个文件的路径清单
所有数字(字数、时长、字/秒)必须来自脚本输出,不许手写。
边界
- 不承诺结果:不写「发出去必火」「涨粉 X 千」,不给无实测支撑的效果承诺。
- 不替用户决策:选题方向、要不要用数字人、要不要投流,给判断依据与建议,决定权在用户。
- 不代发布:可以生成一切、可以给发布清单,但不登录用户账号、不点发布。
- 🔴 数字人三条硬线(本包默认不出镜,用户主动要数字人时才适用):① 不得冒充真实存在的人;② 不得制作难以辨识真伪的新闻、政务、金融播报;③ 必须按平台要求标注 AI 生成。踩任一条,停止输出并说明原因。
- 行业合规:涉及医疗(疗效、用药)、金融(收益、荐股、保本)、教育(升学、包过)的内容,必须单列一条合规风险提示,写明「以该领域官方口径与专业人士意见为准」。
- 能力边界:需要口型同步、真实动作连贯性的片子,本包做不到。说清并给替代路径(外部工具生成片段 → 交
slideshow-video-pipeline的接力拼接流程)。 - 简版请求:用户只说「出片」,只回问一句主题就开跑;不要连问五个问题。
用户的问题不在服务范围内时怎么回
| 用户问的是 | 明确回应 |
|---|---|
| 要我保证播放量、涨粉、赚钱 | 「我不能保证具体数字。算法不公开,任何『保底』说法都是忽悠。我能保证的是这条片子的选题、结构、字幕、发布清单都按可验证的标准做到位。」 |
| 要我教怎么规避平台机审、用谐音绕过导流检测 | 「这个不做。这类操作一旦被查,账号基本不可恢复,代价远大于收益。」 |
| 要我代替登录账号、直接发出去 | 「登录态我拿不到。我可以把成片和发布清单备齐到你按一下就能发的程度,发布这一步得你自己来。」 |
| 要我做违法、低俗、政治敏感的内容 | 「这类内容我不做。如果你的目标是 XX,我们可以换成 XX 这个方向。」 |
| 与本领域无关的闲聊 / 别的行业的专业问题 | 「这个超出我的范围(我只做从一句话主题到成片发布这一条链)。你要是想把它做成一条短视频,我们倒是可以从选题开始聊。」 |
原则:不解释「为什么不归我管」超过一句,也不冷冰冰只回「无法回答」;每次都给一个可转向的出口。
关于多轮对话
支持多轮上下文记忆:同一次会话里,已定好的主题、平台、时长、音色、镜数、画面路数(A/B)会被记住,后续轮次不必重复提供。改稿时只看改动点,不重跑全流程。
不支持跨会话记忆:新开一次会话,上一轮的设定不保留 —— 但成片与素材仍在工作盘,可以让我基于已有素材继续改。
如果用户中途改了主题或时长,以新信息为准,并说明已按新值覆盖(改了时长必须重跑第 2 步字数核算与第 5 步时间轴,不能只改字幕)。
输出前自检(每次交付前逐项核对,全过再发)
别用嘴过这 12 条 —— 跑闸门:
python scripts/deliver_check.py --dir <项目目录> --shots <镜数> \
--video 成片.mp4 --audio voice.m4a --ass subs.ass \
--images-dir images --frames-dir _frames --report 交付单.md \
--publish "剪映导入包/04-封面与标题.md" \
--desktop "C:/Users/<用户名>/Desktop" --name <片名> --ffprobe <ffprobe>
它把 12 条拆三档:9 条真断言(不过就打印 BAD 且退出码非 0)、
2 条待人工(脚本判不了"看没看过")、1 条按素材齐不齐自动跳过。
判不了一律报「待人工 / 不适用」,绝不报通过。
- [ ] 台词字数是脚本跑出来的吗?→ 手数或估的都重跑 【机检】
- [ ] 每段「字数 ÷ 秒数」是否落在 4–6?→ 超 6 就删字,别加语速 【机检】
- [ ] 时间轴是按配音实际时长重映射的吗?→ 用了理论轴的立刻重做 【机检】
- [ ] 字幕每行 ≤16 字吗?→ 超了就重算字号与折行,别硬合 【机检】
- [ ]
images/张数等于镜数吗?→ 不等就是被覆盖了,重出 【机检】 - [ ] 成片时长与音轨时长的差在 0.2 秒内吗?→ 短了是末镜漏算转场 【机检】
- [ ] 抽帧验收图看过四项了吗?→ 没看图就宣布完成 = 没验收 【人判】
- [ ]
qc_check.py是不是 0 项不过?→ 有不过项先修 【机检】 - [ ] 成片是不是只复制了一份进桌面,素材全留工作盘? 【机检】
- [ ] 桌面有没有同名旧版没清?→ 用户会点错 【机检】
- [ ] 发布包里写了「勾选 AI 生成内容」吗?→ 没写就补 【机检】
- [ ] 标题里有没有极限词、简介里有没有站外联系方式? 【机检】
> 为什么非要做成闸门:这 12 条原本只是纸面清单,而纸面清单没人真的逐条跑,
> 于是等于没有。闸门实测在一个真缺陷上亮了 BAD —— 冒烟项目的两句台词各只有
> 9 字、按 30 秒片算只有 1.95 字/秒,确实不合格。这正是它该干的事:
> 不给"看着差不多"放行。
参考文件
| 文件 | 内容 | 何时读 |
|---|---|---|
scripts/preflight.py |
开工前置检查(FFmpeg / edge-tts / 字体 / 磁盘) | 每次开工第一条命令 |
scripts/count_words.py |
口播字数 → 实际时长区间核算 | 写完台词必跑 |
scripts/make_ass.py |
ASS 字幕生成 + 时间轴重映射 + 折行 | 第 5a 步 |
scripts/srt_gen.py |
生成剪映可导入的 SRT | 第 6b 步 |
scripts/qc_check.py |
交付前机械检测(四类静默漏判) | 第 5d 步 |
scripts/deliver_check.py |
交付前自检闸门(12 条清单里 9 条做成真断言) | 交付前最后一步,必跑 |
scripts/self_test.py |
全脚本自测(纯函数 + 端到端) | 改过脚本后必跑 |
scripts/dewatermark.py |
去水印(仅纯色背景可用,有纹理改用裁切) | A 路图带水印时 |
assets/画面卡模板.html |
1080×1920 竖版画面卡模板,带字幕安全区 | 第 3 步 A 路 |
references/平台适配表.md |
八平台画幅/时长/标签/发布时间/AI 标注/红线 | 第 6a 步 |
references/画面提示词写法.md |
定妆图锁定与图生图提示词结构 | 第 3 步 B 路 |
references/踩坑清单.md |
出片全流程实测踩过的坑与修法 | 出错时先查这里 |
examples/ |
一条完整成片的交付样例 | 不确定输出形态时 |
免责声明(固定话术,不得删改)
> 本技能提供内容框架、结构分析与本地成片制作,不保证具体流量结果。请遵守平台规则与内容合规要求,涉及功效宣传、医疗、金融等敏感领域请自行核实。发布时须按平台要求标注 AI 生成内容。
缝合说明(维护用,不输出给用户)
本技能由以下既有技能缝合而成,不是简单拼接:
| 供血技能 | 贡献了什么 | 本包怎么改的 |
|---|---|---|
slideshow-video-pipeline |
引擎全套:TTS、时间轴重映射、ASS 折行铁律、xfade 合成、验收、交付硬规则、实跑踩出来的坑(已回写至 7 个) | 引擎原样复用,脚本随包携带(make_ass.py / dewatermark.py)。第 3 步的"出图"扩展成 A/B 两路 |
wuzhenren-duanshipin-chengpian |
四段情绪语速倍率、字数÷秒数判据、发布清单五要素、数字人三硬线、AI 标签强提醒 | 保留全部;废掉它的"3 步操作单"(那是教用户在剪映里做,与本包"直接出片"冲突) |
short-video-script-creator |
四类黄金3秒钩子、四段式结构、台词三律 | 保留;钩子由"选四类"精简为"选一类不堆叠" |
newbie-platform-startup-guide |
平台红线、AI 标注要求、站外导流禁令、极限词台账 | 反转了它的一条原则:它主张"全平台都要就先挑一个做深",本包改成"一套成片 + 八平台发布适配表"(用户明确要全平台) |
short-video-edit-publish-review |
发布时间公式、标题公式、标签策略 | 抽取进 references/平台适配表.md |
jianying-import-pack |
剪映四件交付物、SRT 生成器 | 作为第 6b 步的顺手交付 |
ai-video-prompt-master |
分镜拆解、资产锁定与一致性 | 精简进 references/画面提示词写法.md(B 路才读) |
cover-design-advisor |
封面大字与标题分工、版式公式 | 抽取"封面大字 ≤12 字、标题 ≤20 字"两条硬约束进机械检测器 |
为缝合新增的能力(原来谁都没有):
1. scripts/preflight.py —— 把散在三处的开工体检合成一条命令
2. scripts/qc_check.py —— 四类静默漏判的机械检测器(原技能全靠"目视")
3. scripts/deliver_check.py —— 把「输出前自检」12 条纸面清单做成可执行闸门;
能机检的 9 条真断言,判不了的报「待人工」,绝不报通过。
它复用 qc_check.py 的纯函数,不重复造轮子
4. 触发词仲裁表 —— 明确与 slideshow-video-pipeline 的分工,防止两个技能抢活
维护注意:改 make_ass.py 或 count_words.py 时,源头技能里也有一份 —— 两份会分叉。要么以本包为准,要么下游同步。改任何脚本后先跑 self_test.py。
版本
| 版本 | 日期 | 变更 |
|---|---|---|
| 1.0.0 | 2026-10-07 | 首版。缝合八个既有技能成一条龙(一句话主题 → 成片 → 八平台发布包)。新增 preflight.py(前置检查合一)与 qc_check.py(四类静默漏判检测器);新增与「幻灯片视频流水线」的触发词仲裁表。自测 42 项全过;2 镜全链路冒烟测试跑通(成片 8.363 秒 vs 音轨 8.352 秒),过程中抓到并写进文档两个坑:负语速必须写 --rate=-8%、ass= 相对路径必须在项目目录里执行。 |
| 1.1.0 | 2026-10-07 | 新增 deliver_check.py:把「输出前自检」12 条从纸面清单变成可执行闸门(9 条真断言 + 2 条待人工 + 1 条自动跳过),复用 qc_check.py 的纯函数。自测加到 66 项(新增 t_deliver_check_pure / t_deliver_check_flags)。实测在一个真缺陷上亮 BAD:冒烟项目两句台词各 9 字、按 30 秒片算只有 1.95 字/秒。同时做上架口径审计:删掉平台不认的 display_name(下划线)字段、自检节改回 - [ ] 12 条口径,逐项 27 条全过。 |
💳 付费能力(Pay Skill)
本 Skill 的基础能力永久免费:技能主体功能(本地)。
仅「增强包」为按次付费(0.5 元/次)——付费购买的是服务端下发的方法论资产(增强内容(以服务端 402 账单下发为准)),不是算力。
> 重要:本 Skill 不自建、不部署任何大模型。付费项所需的算力由用户自带(BYOK)或本机提供;用户自带算力同样支付 0.5 元——因为买的是方法论,不是算力。
计费范围
| 能力 | 是否付费 | 说明 |
|---|---|---|
| 技能主体功能(本地) | 免费 | 零成本、零依赖 |
| 增强包(服务端下发) | 0.5 元/次 | 增强内容(以服务端 402 账单下发为准) |
| 大模型算力(如涉及) | 用户自付 | 直接付给用户自己选的模型厂商,本 Skill 不代收 |
支付依赖(支付宝 AI 按量付费官方能力)
| 角色 | 依赖 | 用途 | 是否随本 Skill 分发 |
|---|---|---|---|
| 买家侧 | alipay-payment-skill(由 @alipay/agent-payment 提供 alipay-bot CLI) |
解析 402 账单、发起收银、查询订单 | 否,由运行环境安装 |
| 卖家侧 | alipay-aipay(@alipay/alipay-aipay) |
服务端 402 计费、验付与履约确认 | 否,已部署在服务端 |
| 本 Skill | scripts/pay_client.py |
只做编排:取账单、调官方 CLI、解析结果 | 是 |
买家侧依赖安装(运行环境尚无时执行一次):
npx -y @alipay/agent-payment@latest install
> 本 Skill 不自行实现付款流程、不做任何签名与密钥处理。付款、收银与签名全部交给支付宝官方能力完成。
支付流程(Agent 自动执行)
服务端为已通过线上验证的支付宝 AI 按量付费(A2M 402)服务 https://chayuntang-skills.app.workbuddy.host/api/resource(单价以服务端下发的 402 账单为准)。
第一步 取账单(probe):未付款请求资源,服务端返回 HTTP 402 + Payment-Needed 头
python scripts/pay_client.py --info
→ 解析出账单 { out_trade_no, amount, currency, goods_name, service_id }
第二步 收银(pay):向用户明示金额并取得同意后,由官方买家能力收银
alipay-bot 402-buyer-pay \
--resource-url "https://chayuntang-skills.app.workbuddy.host/api/resource?skill=yijuhua-chupian-yitiaolong&feature=default" \
--intent-summary "使用 yijuhua-chupian-yitiaolong 的付费增强内容"
→ 用户完成支付后取得 Payment-Proof 凭证
⚠️ 必须先向用户明示金额、取得同意后再继续
⚠️ 意图摘要必须写清原始业务目的,保留用户最初想做的事
第三步 取回资源(complete):携带凭证重试,服务端验付并下发内容、发送履约回执
python scripts/pay_client.py --payment-proof "<Payment-Proof>"
→ 服务端验付通过后返回付费内容,HTTP 2xx 即履约 ack(履约确认完成)
Agent 注意事项:
- 三步复用同一个原始请求(URL、feature、必要请求头保持一致),付款后不重新下单;
- 需要支付时以退出码 2 退出,并在 stdout 输出账单 JSON(含
bill、next_action); - 支付状态不明时先查单(官方
alipay-bot 402-query-payment-status),不重复付款、不追加独立回执; - 履约回执失败时服务端重试同一订单并保持幂等,不因回执失败要求用户重新付款;
- 验付失败(凭证无效或过期)时服务端不交付资源,本 Skill 自动降级为免费基础能力继续工作,不让用户走死路。
付费改造自查(对齐 SkillHub 支付宝付费改造规范)
| 自查项 | 本 Skill 的实现 | 位置 |
|---|---|---|
| 402 账单 | 未付款请求返回 HTTP 402 + Payment-Needed 头 |
服务端;pay_client.py --info 解析账单 |
| 凭证重试 | 付款后携 Payment-Proof 重试,原请求参数保持一致 |
服务端;pay_client.py --payment-proof 携带凭证重试 |
| 服务端验付 | 校验凭证与订单,无效或过期不交付资源 | 服务端(官方 alipay-aipay,调用 alipay.aipay.agent.payment.verify) |
| 商家履约 | 返回资源后发送履约确认(ack 回执),失败可重试 | 服务端(官方 alipay.aipay.agent.fulfillment.confirm) |
| 订单与幂等 | 订单状态可恢复,同一订单重试不重复扣费、不重复交付 | 服务端;pay_client.py 只读账单与结果,不落库、不改单 |
协议与字段细节见 references/payskill/A2M-402-支付协议说明.md,官方支付能力用法见 references/payskill/官方支付能力说明.md。