Back to skills
SKILL.md
Promo Video
ASecurity产品宣传片:开头一张表单定时长画幅,出竖横多版成片、3 封面、3 标题和各平台文案
- 262 stars
- 0 votes
- 0 copies
- 0 views
- Added September 27, 2026
Security analysis
100/100npx -y skills add CatCatUncle/openworkbuddy --skill promo-video --agent claude-codeAre you the author of Promo Video?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/catcatuncle-promo-video)---
name: promo-video
description: 产品宣传片:开头一张表单定时长画幅,出竖横多版成片、3 封面、3 标题和各平台文案
---
# 产品宣传片(15–60 秒,多画幅)
## 适用场景
「给这个产品做条宣传片」「出一条 30 秒的带货短片,抖音视频号都要」。
产出 = 表单里选的每个画幅各一条成片 + 3 张封面候选 + 3 个标题 + 各平台文案 + 一页 交付.html。
## 第 0 步:开头一张表单,把岔路一次定完
第一件事调 `ask_user`,带上 `form: "promo-video"`:
```
ask_user({ question: "开工前把这几项定下来", form: "promo-video",
defaults: { product: "用户原话里的产品名", duration: "15", aspects: ["9:16"] } })
```
- `defaults` 只填用户原话里**明确说过**的项(产品、时长、画幅、平台……),没说的留给表单默认值。
- 表单返回的就是定稿:时长、画幅、画面、声音、封面、平台,后面**一律不再问**。表单没覆盖的小事自己定。
- 返回里写了「用户补充:…」的,补充跟默认值冲突时以补充为准。
- 表单填完,步数和时长上限会自动放宽到 150 步 / 60 分钟,不用让用户去设置里调。
- 没有 `ask_user` 表单可用(外部引擎、老版本):按用户原话 + 上面的默认值开工,替用户定的每一项都写进交付清单的 `assumptions`。
## 第 1 步:脚本和分镜
- 30 秒约 6–8 个镜头,每个 3–5 秒;15 秒 3–4 个;60 秒 10–14 个。
- 开头 3 秒必须是钩子:痛点、反差或结果先行,别从品牌名开始。
- 口播一句不超过 15 个字,一个镜头只讲一件事。
- 出一张分镜表:序号 / 时长 / 画面 / 口播 / 屏幕大字。卖点从表单的「主打卖点」来,没填就从任务目录的资料里挑,**不编造功效和数据**。
- 这一步只出脚本和分镜,先别做画面。
## 第 2 步:画面(照表单的「画面」)
- **图文卡片**:每个画幅一套 HTML 卡片,尺寸 竖版 1080×1920 / 横版 1920×1080 / 方版 1080×1080,用 `html_to_image` 截图。
排版规矩照 xhs-cards(大字、系统字体、≤4 色、间距用 4 的倍数)。模板 HTML 放 `素材/` 下,成片重拼时能直接改字。
命令行里没有 `html_to_image` 时,卡片照样写成 HTML:有 `compose_video` 就在 timeline 里把这段画面写成 `{"file": "素材/s1.html", "kind": "html"}`;只有 `render_motion` 就传 `html_files` 出无声 mp4 再拼。这两个走本机 Chrome,不花钱。
两样都没有时,先跑 `ffmpeg -hide_banner -filters` 看有没有 drawtext:有才用纯色底 + drawtext,中文要写 `fontfile=` 中文字体路径;没有就别试 ffmpeg 写字,把 HTML 交付,这几个镜头写进 `missing`,告诉用户在桌面版截图。
- **AI 生成画面**:`generate_video`,`aspect_ratio` 和 `duration` 照表单。每个镜头提交一次。
**上游已经收单(拿到任务号)之后报错,不许自动重试**——重试等于再花一次钱。把任务号和报错原样告诉用户,让用户决定。
- **用我的素材**:先列出任务目录里的视频和图片,按分镜对号入座;缺的镜头用图文卡片补,并在交付清单里写明。
## 第 3 步:声音(照表单的「声音」)
- **配音+字幕**:一次 `text_to_speech`,传 `segments`(每个镜头一项,按分镜顺序)和 `filename: "旁白.wav"`,出整轨 `旁白.wav`、句级 `旁白.srt`、时长清单 `旁白.json`。用表单或设置里的音色,不擅自换。改了哪句就原样再调一次,只有那一句重新花钱。
- 语音合成没配,表单上已经跟用户说过:这次不配音,只出字幕 + 音乐。**不拿系统自带的朗读凑数**。
- **只要字幕+音乐**:任务目录里有音乐就用;没有就只出字幕,交付清单里写明没有背景音乐。
## 第 4 步:拼成片
- 照 video-compose 第 5 步:写 `timeline.json`,`aspects` 照表单,第 N 段的 `voice.sentences` 抄 `旁白.json` 的 `segments[N-1]`;先 `dry_run: true` 看一眼,再正式跑 `compose_video`。一次出齐表单里的每个画幅,字幕和封面帧它也一起出。
- 成片路径以 `compose_video` 报回来的为准,交付清单照抄,别自己改名。
- 工具里没有 `compose_video` 时才走 video-compose 的手工路线:画面按 `旁白.json` 的时长切,整轨配音一次配上,**不逐镜配音再 concat**(越往后声音越晚)。每个画幅一条,命名 `成片_9x16.mp4` / `成片_16x9.mp4` / `成片_1x1.mp4`。
- **成片不加任何「AI 生成」水印或角标**。平台要求的 AI 声明是发布时勾选的,不是烧进画面里的。
- 中间产物(HTML、PNG、旁白整轨和分句、timeline.json)留在任务目录,用户要改某一段时能重拼。
## 第 5 步:封面、标题、各平台文案
- 3 张封面候选 `封面_A.png` / `封面_B.png` / `封面_C.png`,各用一个不同的钩子(痛点 / 结果 / 反差),照表单的「封面」出。
- 表单上封面是「这次不做」:用成片里截的帧当封面候选,**不改用 AI 生图**(这笔钱没人点过头),交付清单 `assumptions` 里写一句。
- 3 个标题候选,每个 20 字以内。
- 表单里选的每个平台一份文案:
| 平台 | 标题 | 正文 | 标签 |
|---|---|---|---|
| 抖音 | 20 字内带钩子 | 1–2 句 | 3–5 个 |
| 视频号 | 可以稍长、说清是什么 | 2–3 句 | 2–3 个 |
| 小红书 | 20 字内 | 100–300 字 | 5–8 个 |
| B站 | 信息量大一点 | 简介 + 分段时间点 | 3–5 个 |
## 第 6 步:交付清单和交付页
写 `交付清单.json`,再调 `delivery_page` 出 `交付.html`:
```
{ "title": "…宣传片", "recipe": "promo-video",
"videos": [{ "aspect": "9:16", "file": "compose_video 报回来的路径" }, …],
"covers": [{ "file": "封面_A.png", "note": "痛点钩子" }, …],
"titles": ["…", "…", "…"],
"platforms": [{ "name": "抖音", "title": "…", "body": "…", "tags": ["…"] }, …],
"assumptions": ["替用户定的项"], "missing": ["没做出来的,照实写"],
"cost": { "text": "这次实际花的生成费;查不到单价就写单价未知" } }
```
- 文件缺了就写进 `missing`,不拿占位图、占位视频充数。
- 最后回一句:交付页做好了,点「在浏览器打开」就能播、能一键复制文案。
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.