Communitygithub.com

一句话视频

把一句话需求做成带配乐和字幕的 MP4 短视频:讲解、科普、产品介绍、数据播报、知识卡片,20 到 90 秒,横屏或竖屏。只需要填一份 video.json,一条命令出片;能把实拍素材的片段剪进去,能导出 Final Cut Pro 和剪映的工程接着剪;不用视频生成模型,Windows、macOS、Linux 通用。当用户想要根据一句话、一个主题、文本或数据制作视频时使用——“做个视频”、“生成一个短视频”、“讲解视频”、“宣传片”、“动画视频”、“make a video / explainer / short clip”——即使他们只给了一个主题;也用于将现有素材的片段剪辑成视频(“剪辑”、“混剪”、“把这段视频剪进去”)并导出 Final Cut Pro / 剪映 (CapCut China) 项目。不适用于 AI 生成的画面。

一句话视频란 무엇인가요?

「一句话视频」是一款轻量级、全平台的 AI 辅助短视频制作技能。它允许用户仅通过一句话描述,即可快速生成带有配乐和字幕的 MP4 视频,时长介于 20 到 90 秒之间,支持横屏(16:9)和竖屏(9:16)两种画幅。该技能的核心能力在于,它不会直接生成 AI 视频画面,而是通过引导用户(或 AI 代理)编写一个结构化的 `video.json` 文件来定义视频的每个场景,包括布局、文本、字幕和计时。用户可以自由选择十余种预设的风格包(如纸艺、黏土定格、信息仪表板、新闻演播室、复古录像带等)或内置主题来定制视觉风格,也可以编写自定义的“画面代码”来绘制具体物体、过程或结构。此外,它还支持将用户提供的实拍视频片段(clip)剪辑进去,并能导出 Final Cut Pro 和剪映的工程文件,方便后续精修。此技能覆盖了从技术科普、产品介绍到数据播报等多种内容类型,是开发者和内容创作者快速制作演示视频、教程或社交媒体短片的强大工具。

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/li2092/one-prompt-video/tree/HEAD

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

一句话视频은(는) 무엇을 하나요?

用户给一句话,你先做设计:定风格,定每一场画面上看到什么。然后写一份 video.json,题材里看得见的东西由你写画面代码画出来。脚本负责排时间、配乐、字幕、编码、自检。

下文命令里的 SKILL 要换成本文件所在目录的绝对路径(例如 /home/me/skills/one-prompt-video)。所有命令在用户的当前工作目录里跑,文件路径都相对它。

五步

1. 准备环境(每个工作目录跑一次)

node "SKILL/scripts/setup.mjs"

它检查 Node、画图库、ffmpeg、中文字体,缺的会装或告诉你怎么装。全部 [通过] 再往下走。有 [缺少] 时把那几行原样告诉用户。

2. 设计(不反问用户,自己定,最后告诉用户你定了什么)

在当前工作目录新建一个文件夹(用片名,下面叫 片名/),先把设计写进 片名/方案.md,十几行就够。写完方案再写别的。只有文字卡片的片子观众看不下去,这一步决定片子好不好看。

补齐用户没说的

用户没说的默认
多长30 秒左右,5 到 8 场
横屏竖屏横屏 16:9;提到手机、竖屏、抖音、小红书、视频号用 9:16
语言和用户说话的语言一致
人声不要。默认是字幕加配乐。本技能不带配音服务:用户要人声时,先告诉他配音要自己准备(一个能从命令行出声的 TTS,或自己的录音),再照 references/voice.md 接

定风格

  1. 用户要的是氛围、故事、场景、角色,或者说了「不要讲解」「要画面感」「像电影」:这支片子不用版式,整支由你画。改读 references/film.md,照它做。
  2. 其余的片子从下面的风格包表里选一个。风格包自带场景、道具、角色、转场和音效,画面比内置主题丰富得多。按题材选:先看「适合」一栏;对得上不止一个时,选和题材里的实物最近的(手作、食物、生活小事选 papercraft 或 clay,设备和流程选 isometric,账目和业绩选 dashboard)。用户点名了一种样子(「像打游戏」「做成聊天记录」「新闻播报那种」)就用对应的风格包。
  3. 内置主题只在两种情况用:用户明说要简洁、克制、商务;或者内容严肃,装饰会妨碍阅读。用内置主题的片子,自己画的场要占到一半。
  4. 定一样贯穿全片的东西:题材里的一件实物(机翼、咖啡豆、月亮、店铺的门脸)。它在片头出现,在后面几场里再出现,片子才连得起来。

定每一场

方案里列一张表,每场一行,按这个顺序想:

这一场要让观众明白的一件事画面上看到什么怎么做(哪种版式,或自己画)旁白

「画面上看到什么」写的是图:一样东西、一个过程、一张图表、一个结构。先想图,再想字。照下面八条定:

  1. 遮字看。 把这一场的字全部遮掉,剩下的画面还看得出在讲什么,这一场才成立。讲机翼,画面上要有机翼和气流;讲咖啡订阅,画面上要有盒子、豆袋和冲煮卡片。
  2. 看得见的东西自己画。 题材里的实物、过程、结构,用 layout: "custom" 写画面代码画出来,写法见 references/custom-scenes.md。全片最要紧的那一场必须是自己画的;一支片子至少两场自己画,三分之一以上更好。
  3. 版式按信息的形状选,让版式自己说明关系。 比大小用 bars,先后顺序用 steps,两方对照用 compare,一个真实的量用 number(序号、钟点、编号不是量,不用 number)。statement 全片最多一场,bullets 最多一场,quote 只放真实的引语。
  4. 不写次要的标签和说明。 kicker、subtitle、note、label、cta 和每一场的 title 默认都不写。只有去掉它观众就看不懂这一场时才写。版式已经表达的关系不用文字再说一遍:柱状图不用起「四个季度对比」这样的标题,步骤不用写「第一步」,对比卡不用写「对比」。
  5. 画面和旁白分工。 旁白(say)讲完整的句子,讲的是画面上正在出现的东西;画面上只留图、关键词和数字。同一句话不既排成大字又放进字幕。
  6. 相邻两场不一样。 同一种版式不连用两场;上一场是居中的大字,下一场就换成图或图表。
  7. 重点省着用。 大数字、金句全片各一次。
  8. 头尾。 第一场用 title,开头两场内说清这支片子讲什么。最后一场用 end,落在一句结论或一个行动上;结尾比开头小、比开头短:一句话,加上那样贯穿全片的东西。

你看不了图、也写不了画面代码时,第 2 条做不到:照常用风格包和版式做,回报时如实告诉用户这支片子以文字版式为主。

3. 写 video.json 和画面代码

照方案写 片名/video.json:

{
  "title": "一句话,出一支片",
  "theme": "papercraft",
  "aspect": "16:9",
  "seconds": 30,
  "scenes": [
    { "layout": "title", "title": "一句话,出一支片", "say": "说一句话,就能拿到一支短视频。" },
    { "layout": "custom", "module": "scenes/pipeline.mjs", "seconds": 7, "cues": 3, "say": "你说一句话,模型做设计、填表,脚本把它变成片子。" },
    { "layout": "bars", "unit": "秒", "items": [{ "label": "第 1 次", "value": 68 }, { "label": "第 2 次", "value": 51 }, { "label": "第 3 次", "value": 57 }], "say": "小模型测了三次,每次一分钟左右。" },
    { "layout": "custom", "module": "scenes/laptop.mjs", "seconds": 6, "say": "一台普通的笔记本电脑就能出片。" },
    { "layout": "end", "title": "现在试试", "say": "现在就试一次吧。" }
  ]
}
  • seconds 是全片的目标时长,脚本会按它分配每一场的时间,成片和它差三秒以内是正常的(每场要凑成整数拍,片尾还有一秒多淡出)。不写就按字数自动估。
  • say 是这一场的字幕(有配音时也是配音稿)。每场一句,30 个汉字以内(英文 12 个词以内)。
  • 自己画的场,画面代码放在 片名/scenes/ 里。每写完一场先出静帧看(--still),认得出画的是什么再写下一场。
  • 画面上的字是给人扫一眼的,要短。写不下就拆成两场,不要把一场塞满。
  • 不编事实。用户没给的数字、引语、人名、公司名不要写成真的;要举例的数字,在旁白里说明是示意。产品的功能和效果只用用户给的说法;你自己补的解释,在最后回报时逐条列出来请用户核对。

只用版式的完整例子在 SKILL/assets/example.video.json。

4. 校验,出片

node "SKILL/scripts/make.mjs" 片名/video.json --check    # 先校验,几秒钟
node "SKILL/scripts/make.mjs" 片名/video.json --sheet    # 出总览图,看过再出片
node "SKILL/scripts/make.mjs" 片名/video.json            # 出片
  • --check 报 [出错] 时,每一条都写了第几场、哪个字段、正确的写法。照着改,再跑,直到通过。
  • 你能看图的话,打开 片名/out/sheet.jpg 逐格看。每场两格:第一格是入场到一半,第二格是全部到齐,以第二格为准。每一格问四件事:遮掉字还看得出在讲什么吗;主体够不够大(占画面宽或高的六成以上);有没有一大片空着;有没有字挤在一起或一个词被折成两行。有一条不过就改,改完重出总览图。
  • 出片后读它打印的报告(也存在 片名/out/report.txt)。有 [问题] 或 [注意] 就改了重跑;最常见的是「字太多」,把那段字缩短。

5. 告诉用户

说清四件事:成片在哪(报告里「成片:」那一行的路径,文件名是 title 加 .mp4);你替用户定了什么(时长、画幅、风格、哪几场是自己画的);片子里哪些内容是你补的;画面好不好看、配乐好不好听你没法判断,请用户看一遍。成片没有人声时顺带提一句:想加配音,要他自己找一个 TTS 接进来。

风格包

每个风格包是一整套画面:九种版式各按自己的样子重画,带自己的场景、道具、转场、字幕和音效。theme 写它的名字就行。

theme样子适合
papercraft多层卡纸的景箱、纸片小人、定格抖动轻松的科普、产品介绍、小故事、生活类
clay暖色黏土定格,圆润的小角色入门讲解、习惯和健康、给孩子看的内容
collage牛皮纸、撕纸、胶带、剪下来的字轻松的科普、盘点、栏目开场
skit扁平插画的办公室,两个小人对内容有反应给非专业观众讲道理、职场话题
isometric2.5D 的机器、传送带、检查站讲流程、讲原理、讲系统怎么运转
cosmos深空、星云、发光的星体和轨道讲全局、讲层次、系列开篇
dashboard暗色数据大屏:面板依次点亮、仪表弧、柱状图业绩、评测、监控、成本这类带数字的内容
news演播室、标题条、滚动字幕条要点速递、周报、数据播报
chat手机里的一段聊天记录,内容是一条条气泡口语化讲解、案例、问答
comic黑框分格、网点、速度线、拟声字有转折的故事、前后反差
detective软木板、拍立得、便签、红线排查问题、复盘一件事的来龙去脉
arcade8-bit 像素游戏:砖块、金币、关卡地图讲步骤、比高低、轻松的产品介绍
variety多层描边花字、放射线、吉祥物、弹幕条最热闹的短视频、吐槽、盘点
vhs录像带:扫描线、换台、老电视、走带计时怀旧向、系列节目的片头和预告
chrome镀铬立体字、流动的液态渐变、星形闪光年轻向的短句、潮流话题,不适合严肃内容

预览图在 SKILL/assets/styles.jpg,能看图就先看一眼再选。风格包的装饰多,一场里的字要更短;news 会把内容排成新闻节目的样子,内容不是真新闻时在回报里提醒用户一句。

这些只是现成的起点,风格不设上限:要一整套新的样子(手账、黑胶唱片、地铁线路图,什么都行)照 references/style-packs.md 写一个自己的风格包。

十二种内置主题

主题只换颜色、背景和线条,画面里没有场景和道具。用它的条件见第 2 步「定风格」第 3 条。

theme样子适合
grid米色网格纸、紫色、白卡片讲概念、讲原理
minimal大面积留白、细线、一个蓝点安静克制的品牌片、片头
pop撞色、放射线、粗黑描边热闹、快节奏、短视频平台
keynote深色渐变、玻璃卡片、发光新品、重大结论、科技话题
blueprint蓝图纸、白线、黄色标注讲结构、架构、怎么组装
whiteboard白板、马克笔、手画的框老师边画边讲,讲流程和因果
chalk墨绿黑板、粉笔线、木边框课堂板书,讲题、讲公式、讲步骤
neon深紫夜色、发光线条、透视网格科技、游戏、电子音乐
terminal黑底绿字、等宽字、闪烁的光标代码、命令行、开发工具
paper米色纸面、衬线大标题、红色评论、读书、人文话题
ink宣纸、远山、朱红印章传统文化、诗词、历史
bold黑白粗体、硬切、一种红色观点、口号、榜单

预览图在 SKILL/assets/themes.jpg。用户要别的颜色用 colors 换。

版式

每一场选一种,或者自己画。一场只讲一件事。

layout什么时候用必填默认不写的限制
custom题材里看得见的东西:实物、过程、结构module、secondscues、data见 references/custom-scenes.md
title开头titlesubtitle、kicker标题 12 字以内
bars比大小items(2 到 6 项,每项 label 和数字 value)title、unit(接在每个数后面)、highlight(第几根用强调色,从 1 数;不写是最高的那根)label 8 字以内
steps先后步骤、流程items(2 到 5 步)title每步 12 字以内
compare两样东西对照left、right(各有 title 和 1 到 4 条 items)title每条 12 字以内
number一个真实的量,全片一次valueunit、label、notevalue 写成 "25"、"80%"、"1,280"
statement一句要让人记住的话,全片最多一场texthighlight(text 里要上色的词)24 字以内
bullets并列的几个要点,全片最多一场items(2 到 5 条文字)title每条 18 字以内
quote真实的引语textby40 字以内
end结尾titlesubtitle、cta(按钮上的字)标题 14 字以内
  • unit 是数字的一部分,该写就写。number 的 label 只在光看数字和单位不知道它量的是什么时才写。
  • 每种版式都可以加 say(字幕)和 seconds(这一场固定多少秒)。

用户给了视频素材(实拍、录屏、已有的片子)时,还有一种 clip:把素材里的一段放进来,和上面的版式混着排,整支片子全是 clip 就是剪辑。写法:{ "layout": "clip", "file": "素材/采访.mp4", "from": 12.4, "to": 18 }。怎么看素材、怎么定取哪一段,见 references/editing.md。

要更多的时候

需要读
自己画一场:实物、过程、结构(每支片子都要用到)references/custom-scenes.md
用户要的是氛围、故事、场景、角色,或整支片子都是自己设计的画面references/film.md(你写每一帧怎么画,脚本管镜头、配乐、出片和自检;要能看图)
全部字段、换颜色、换字体、固定某一场的秒数references/video-json.md
加人声(配音要用户自己找 TTS 或自己录),换成自己的配乐文件references/voice.md、references/video-json.md
用户给了视频素材要剪进去,或者要剪辑已有的视频references/editing.md
用户要在 Final Cut Pro、剪映里接着剪(出片命令加 --project)references/editing.md
现成的主题和风格包都不对,要一整套新的样子references/style-packs.md(写一个风格包,要自己写几百行画面代码并对着图改,先确认自己做得了)
安装失败、字体方框、ffmpeg 报错references/troubleshooting.md
用户明确要 3D 场景、全屏着色器的自然风景这类画布画不了的片子references/pipelines.md(参考生产线,要自己写代码,先确认自己做得了)
用户机器上有 Blender、库乐队,或有豆包语音的密钥,想要写实渲染、真实乐器的配乐、自然的人声references/external-tools.md(借助外部工具,给能力强的模型,先确认自己做得了)

这个技能做不了的:凭空生成真人或实拍的画面(实拍只能用用户给的素材)、对素材做调色抠像这类精修(导出工程交给剪辑软件做)。遇到这类需求如实告诉用户。

관련 스킬