Skip to content
Back to skills

Promo Video

ASecurity

产品宣传片:开头一张表单定时长画幅,出竖横多版成片、3 封面、3 标题和各平台文案

  • 262 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 27, 2026
ai-agents

Security analysis

A100/100

Scanned September 27, 2026

npx -y skills add CatCatUncle/openworkbuddy --skill promo-video --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Promo Video?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Promo Video
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/catcatuncle-promo-video/badge)](https://www.skillsdirectory.com/skills/catcatuncle-promo-video)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
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

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.