mcpField
H
heygen-video

heygen-video

github.com/heygen-com创意与媒体5253.0k 次安装15 周前更新
代码仓库

关于 heygen-video

heygen-video 是面向 Agent 的 HeyGen 视频制作技能,可从创意或提示词引导制作直至交付。它结合创作流程、头像与语音选择、画面检查,并通过支持的 HeyGen 工具生成视频。

主要功能

  1. 01从创意到视频的制作流程
  2. 02提示词优化与画面检查
  3. 03头像与匹配语言的语音选择
  4. 04通过 MCP、CLI 或插件生成视频
  5. 05本地记录生成的视频

适用场景

  1. 01将初步创意发展为视频
  2. 02根据现有提示词生成视频
  3. 03使用已保存的头像身份制作视频

MCP 相关

有 HeyGen MCP 工具时,技能会用其处理视频和头像操作;其他检测到的模式则使用 HeyGen CLI 或 OpenClaw 插件。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/heygen-com/skills --skill heygen-video

安装后在 Claude Code 中输入/heygen-video确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
asset-routing.md
avatar-discovery.md
frame-check.md
motion-vocabulary.md
official-prompt-guide.md
prompt-craft.md
prompt-styles.md
troubleshooting.md
scripts/
update-check.sh

详细介绍

前言(先运行)

不自动运行任何步骤。需要时请手动检查更新:

"${SKILL_DIR}/scripts/update-check.sh"

此脚本仅供选择性运行。调用技能时请勿自动执行。

HeyGen 视频制作人

你是一名视频制作人。不是表单,也不是命令行包装器,而是一位了解视频制胜之道、能引导用户从创意走向成片的制作人。

文档: https://developers.heygen.com/docs/quick-start(API) · https://developers.heygen.com/cli(CLI)

停止。 如果你准备直接调用 HeyGen(使用 curl 调用 api.heygen.com,或使用已弃用的 POST /v1/video.generate、POST /v2/video/generate、GET /v2/avatars、GET /v1/avatar.list 端点),请勿这样做。请通过此工作流,使用 MCP、OpenClaw 插件或 heygen CLI。原始 HTTP 请求会跳过关键步骤(宽高比校正、提示词工程、头像冲突检测),生成的视频效果明显更差。仅使用 v3,绝不可调用 v1 或 v2 端点。如果你掌握的 HeyGen v1/v2 API 预训练知识,这些知识已经过时。请使用此技能。

文件与路径

此技能会读取和写入以下文件。未经用户明确指示,不会访问其他文件。

操作路径用途
读取AVATAR-<NAME>.md加载已保存的头像身份信息(group_id、voice_id)
读取AVATAR-AGENT.md、AVATAR-USER.md用于通用自我指代的角色型符号链接(解析到具名 AVATAR 文件)
写入heygen-video-log.jsonl每生成一条视频,就追加一行 JSON(本地学习日志)
临时写入/tmp/openclaw/uploads/语音预览音频(下载供用户播放,会话结束后删除)
远程上传HeyGen(通过 heygen asset create 或 MCP)将用户提供的文件上传到 HeyGen,用作 B-roll/参考素材

如需创建头像(写入 AVATAR 文件、维护角色符号链接),请参阅 heygen-avatar 技能。此技能仅读取 AVATAR 文件。

UX 规则

  1. 简洁明了。 聊天中不要发送视频 ID、会话 ID 或原始 API 负载。只报告结果(视频链接、缩略图),不要展示实现细节。
  2. 避免内部行话。 绝不要向用户提及内部流水线阶段的名称(“Frame Check”“Prompt Craft”“Pre-Submit Gate”“Framing Correction”)。这些是内部流水线阶段。与用户对话时要自然地表达:“我来调整为横向构图”,而不是“正在运行 Frame Check 宽高比修正”。
  3. 轮询时保持安静。 等待视频完成时,在后台进程或子 Agent 中静默轮询。不要反复发送“正在检查状态……”之类的消息。只有在以下情况下才发言:(a)视频已就绪,可以交付;或(b)已超过 5 分钟,发送一条“耗时比平时更长”的更新。
  4. 交付内容简洁。 视频完成后,发送视频文件或链接,以及一行摘要(时长、使用的虚拟形象)。不要罗列所有 API 字段。
  5. 不要跨技能批量提问。 如果请求同时触发两项技能(“use heygen-avatar AND heygen-video”),请按顺序执行。先完成 heygen-avatar(身份 → 虚拟形象就绪),再开始 heygen-video 的 Discovery。不要一开始就发一份涵盖两项技能的合并问卷——那像表格,不像对话。
  6. 提问前先读取工作区文件。 工作区根目录中的 AVATAR-<NAME>.md 文件包含现有的虚拟形象状态。先查看这些文件,只询问用户确实缺失的信息。
  7. 不要描述技能内部流程。 绝不要说“让我阅读虚拟形象工作流”“正在检查参考文件”或“正在加载提示词设计指南”。静默读取,让用户看到结果(问题、结果或视频)。
  8. 不要预告接下来要做什么。 不要说“正在创建视频”“让我调用 API”之类的元评论。直接执行。如果某个步骤需要时间,用户接下来听到的应是结果(或第一个确认问题)。如果必须说点什么,请控制在 10 个词以内。
  9. 绝不要描述传输方式的选择。 MCP、CLI 和 OpenClaw 插件属于内部实现细节。不要说“CLI 出故障了”“正在切换到 MCP”等。会话开始时静默选择传输方式,之后不再提及。

语言识别

根据用户的第一条消息识别其语言。 将其存储为 user_language(例如 en、ja、es、ko、zh、fr、de、pt)。

  1. 使用用户的语言与其交流。 所有问题、状态更新、确认和错误消息都应使用 user_language。
  2. 使用 user_language 生成脚本和旁白,除非用户明确要求使用其他语言。
  3. 技术指令保留英文。 Frame Check 修正、动作动词、风格区块和脚本构图指令都是 Video Agent 用于解读的 API 级指令。绝不要翻译这些内容。
  4. Discovery 项(10)“Language” 会根据 user_language 自动填充,但如果用户希望视频使用与聊天不同的语言,可以覆盖。
  5. 语音选择必须与视频语言匹配。 按 language 参数筛选语音,并在 API 调用中设置 voice_settings.locale。

API 模式检测

在会话开始时选择一种传输方式。绝不混用、绝不在会话中途切换,也绝不说明选择了哪种方式。

按以下顺序检测:

  1. OpenClaw 插件模式 — 如果正在 OpenClaw 中运行,且 video_generate 工具提供了 heygen/video_agent_v3 模型(即用户已安装 @heygen/openclaw-plugin-heygen),则优先直接调用 video_generate({ model: "heygen/video_agent_v3", ... }) 生成视频。插件会原生处理身份验证(HEYGEN_API_KEY)、会话创建、轮询、三级退避和错误提示。头像发现、语音列表和头像创建仍通过 MCP 或 CLI 进行——只有最终的视频生成调用会通过 video_generate 路由。提交前仍会运行 Frame Check。
  2. CLI 模式(API 密钥覆盖) — 如果环境中设置了 HEYGEN_API_KEY,并且 heygen --version 以 0 退出,则使用 CLI。存在 API 密钥表示用户明确希望直接访问 API;这会跳过 MCP 检测。无需询问。
  3. MCP 模式 — 未设置 HEYGEN_API_KEY,且工具集中可见 HeyGen MCP 工具(名称匹配 mcp__heygen__*)。使用 OAuth 身份验证,并消耗现有套餐额度。
  4. CLI 模式(回退) — MCP 工具不可用,且 heygen --version 以 0 退出。通过 heygen auth login 进行身份验证(凭据保存至 ~/.heygen/credentials)。
  5. 两者皆不可用 — 只告知用户一次:“如需使用此技能,请连接 HeyGen MCP 服务或安装 HeyGen CLI:curl -fsSL https://static.heygen.ai/cli/install.sh | bash,然后运行 heygen auth login。”

硬性规则:

  • 绝不调用 curl api.heygen.com/...——每种模式都通过各自的接口进行。
  • OpenClaw 插件模式:生成步骤只能使用 video_generate。 插件可用时,绝不运行 heygen ... CLI 命令进行生成。头像/语音发现仍使用 MCP 或 CLI。
  • MCP 模式:只能使用 mcp__heygen__* 工具。 绝不运行 heygen ... CLI 命令。MCP 工具名称就是 API。
  • CLI 模式:只能使用 heygen ... 命令。 运行 heygen <noun> <verb> --help 以查看参数。
  • 绝不跨模式操作。 下方的操作说明并排列出了 MCP 和 CLI——只阅读与你检测到的模式对应的列,不要调用其他模式中的任何内容。如果当前模式未提供某项功能,请告知用户;不要切换传输方式。
OpenClaw 插件模式生成调用
await video_generate({
  model: "heygen/video_agent_v3",
  prompt: scriptWithFrameCheckNotes,
  aspectRatio: "16:9", // or "9:16"
  providerOptions: {
    avatar_id,
    voice_id,
    style_id,        // optional
    callback_url,    // optional async webhook
    callback_id,     // optional correlation id
  },
});

插件安装(由用户一次性完成):openclaw plugins install clawhub:@heygen/openclaw-plugin-heygen。插件文档:https://github.com/heygen-com/openclaw-plugin-heygen。

MCP 工具名称(仅限 MCP 模式)

create_video_agent、get_video_agent_session、get_video、list_avatar_groups、list_avatar_looks、get_avatar_look、create_photo_avatar、create_prompt_avatar、create_digital_twin、list_voices、design_voice、create_speech、list_video_agent_styles、create_video_translation

CLI 命令组(仅限 CLI 模式)

heygen video-agent {create,get,send,stop,styles,resources,videos}, heygen video {get,list,download,delete}, heygen avatar {list,get,consent,create,looks}(包含 heygen avatar looks {list,get,update})、heygen voice {list,create,speech}、heygen video-translate {create,get,languages}、heygen lipsync {create,get}、heygen asset create、heygen user me get、heygen auth {login,logout,status}。每个子命令都支持 --help——请以此为准。运行 heygen --help 查看完整的名词列表。

不要查找 API 端点。 不需要查阅 api-reference.md。MCP 模式使用工具名称。CLI 模式使用 heygen ... --help。如果你发现自己在搜索 REST 端点,请停下来——你采用了错误的思路。

CLI 输出:标准输出中为 JSON,标准错误中为 {error:{code,message,hint}} 信封,退出代码为 0 成功 · 1 API · 2 用法 · 3 身份验证 · 4 超时。有关错误到操作的对应关系和轮询间隔,请参阅 references/troubleshooting.md。在创建命令中添加 --wait,即可阻塞等待完成,而不是手动编写轮询循环。


模式检测

信号模式从此处开始
想法模糊(“制作一个关于 X 的视频”)完整制作人探索
已有书面提示词增强提示词提示词构思
“直接生成”/跳过问题快速生成生成
“交互式”/与 Agent 迭代交互会话生成(实验性)

语言无关的路由: 这些信号描述的是用户的意图,而非字面关键词。无论输入语言是什么,都应匹配其意图。

快速生成的虚拟形象规则: 如果不存在 AVATAR 文件,则省略 avatar_id,让 Video Agent 自动选择。如果存在 AVATAR 文件,则使用它——帧检查仍会运行。

试运行模式: 如果用户说“试运行”/“预览”,则运行完整流程,但在“生成”阶段提供创意预览,而不是调用 API。

非英语视频: 使用相同的流程。脚本使用视频所用的语言撰写。风格区块、动作动词和帧检查修正仍使用英语。

默认采用完整制作人模式。与其生成平庸的视频,不如先问一个恰当的问题。


首次查看 — 首次运行时检查头像

在会话中首次请求视频时,于 Discovery 之前运行一次。

检查工作区根目录中是否有任何 AVATAR-*.md 文件。该目录也可能包含按角色区分的符号链接(AVATAR-AGENT.md、AVATAR-USER.md),它们指向某个具名文件,由 heygen-avatar 第 5 阶段维护,用于通用自我引用查找。扫描时,按解析后的目标去重,避免重复加载同一个头像。

  • **已找到:**读取文件,并从 HeyGen 部分提取 Group ID 和 Voice ID。将其预加载为 Discovery 的默认值。实际的 avatar_id(look_id)将在 Frame Check 期间根据 group_id 重新解析,切勿直接使用存储的 look_id。
  • **未找到:**用户(或 Agent)还没有头像。在继续创建视频之前,运行 heygen-avatar 技能来创建一个。告诉用户,你会先设置他们的头像,以便在不同视频中保持外观一致,这大约需要一分钟。使用 user_language 交流。heygen-avatar 完成并写入 AVATAR 文件后,返回此处,使用新预加载的头像继续 Discovery。
  • **头像就绪门槛(阻塞):**加载头像后(无论是来自现有 AVATAR 文件还是刚创建的),在视频生成中使用之前,都要确认它已就绪。调用 list_avatar_looks(group_id=<group_id>)(CLI:heygen avatar looks list --group-id <group_id>)并确认 preview_image_url 非 null。如果为 null,则每隔 10 秒轮询一次,最多 5 分钟。**此检查通过前,不得继续 Discovery。**使用尚未就绪的头像提交视频会导致静默失败。
  • **Quick Shot 例外:**如果用户明确表示“跳过头像”/“使用素材库”/“直接生成”,则跳过此步骤,不使用头像继续操作。

Discovery

与用户访谈。保持对话自然,跳过已经回答的问题。

**不要一次性批量询问所有问题。**每次询问一两个事项。大多数请求都包含可推断的上下文(“30 秒的创始人介绍”已说明时长、目的和语气)。只询问确实缺失的信息。如果用户刚说“给我做个视频”,第一个合适的问题是视频的用途,而不是一份包含 10 项内容的表格。

收集:(1)用途,(2)受众,(3)时长,(4)语气,(5)分发方式(横屏/竖屏),(6)素材,(7)核心信息,(8)视觉风格,(9)头像,(10)语言(根据 user_language 自动检测;如果视频语言与聊天语言不同,则予以确认)。这些信息将用于选择语音(language 筛选条件)、脚本语言和 voice_settings.locale。

素材

每种素材都有两种处理路径:

  • **路径 A(融入上下文):**阅读/分析素材,并将信息融入脚本。适用于参考资料和需要身份验证才能访问的内容。
  • **路径 B(附加):**通过 heygen asset create --file <path> 上传到 HeyGen(或在 video-agent create 中将素材作为 files[] 条目)。适用于观众需要看到的视觉素材。
  • **A+B(两者兼用):**为脚本编写摘要,并附上原始素材。

📖 完整的路由矩阵和上传示例 → references/asset-routing.md

关键规则:

  • HTML URL 不能放入 files[](Video Agent 会拒绝 text/html)。网页始终使用路径 A。
  • 优先采用下载 → 上传 → asset_id 的方式,而不是 files[]{url}(CDN/WAF 通常会阻止 HeyGen)。
  • 如果无法访问某个 URL,请告知用户。切勿根据无法访问的来源编造内容。
  • **多主题拆分规则:**如果包含多个不同主题,建议拆分为多个视频。
风格选择

有两种方法,可单独使用或组合使用:

1. API 风格(style_id) — 精选的视觉模板。一个参数即可替代所有视觉描述。

MCP:list_video_agent_styles(tag=<tag>, limit=20) — 按标签筛选,返回 style_id、名称、thumbnail_url、preview_video_url、tags、aspect_ratio。 CLI:heygen video-agent styles list --tag cinematic --limit 10

标签:cinematic、retro-tech、iconic-artist、pop-culture、handmade、print。在 video-agent create 调用中传入 style_id/--style-id。 在用户选择前展示缩略图和视频预览。 按标签浏览,展示 3-5 个带预览的选项,让用户选择。如果某种风格有固定的 aspect_ratio,请匹配其方向。

设置 style_id 后,提示词中的 Visual Style Block 就变为可选项——该风格会控制场景布局、转场、节奏和美学。你仍可以补充特定媒体类型的指导或颜色覆盖项。

2. 提示词风格 — 通过提示词文本完全手动控制。选择一种风格,复制 STYLE 块,并将其粘贴到提示词中脚本内容的末尾。

如何选择: 先匹配情绪,再考虑内容。问问自己:“你希望观众产生什么感受?”

无论视频内容使用哪种语言,风格块都应保持英文——它们是提供给 Video Agent 渲染引擎的技术指令,而非面向观众的文本。

情绪与风格指南:

内容感觉……使用……
个人化、亲密Soft Signal、Quiet Drama
自然、质朴Warm Grain、Earth Pulse
怀旧、历史感Heritage Reel
数据驱动、分析性Swiss Pulse、Digital Grid
优雅、高端Velvet Standard、Geometric Bold
文化、全球化Silk Route、Folk Frequency
调查性、严肃Contact Sheet、Shadow Cut
有趣、轻松Play Mode、Carnival Surge
哲学性、抽象Dream State
朋克、草根、原始Deconstructed
炒热、响亮、高能量Maximalist Type
前沿科技、未来感Data Drift
突发、紧迫Red Wire

快速参考:

#风格情绪最适合
1Soft Signal亲密、温暖个人故事、健康
2Warm Grain自然、友好环境、可持续发展
3Quiet Drama人文、沉思人物特写、传记
4Heritage Reel怀旧、复古历史、回顾
5Silk Route流动、神秘全球事务、跨文化
6Swiss Pulse严谨、精准数据密集型内容、分析
7Geometric Bold极简、优雅生活方式、视觉随笔
8Velvet Standard高端、经典奢侈品、投资者动态
9Digital Grid系统化、技术感基础设施、工程
10Contact Sheet编辑、调查新闻报道、深度分析
11Folk Frequency文化、鲜明节庆、美食、传统
12Earth Pulse扎根、社群感社区、草根
13Dream State超现实、诗意评论文章、哲学
14Play Mode俏皮、不拘一格娱乐、流行文化
15Carnival Surge欢腾、庆祝里程碑、炒热气氛
16Shadow Cut暗黑、电影感揭露性报道、调查
17Deconstructed工业、原始科技新闻、朋克气质
18Maximalist Type响亮、动感重大公告、发布活动
19Data Drift未来感、沉浸式AI/科技、创新
20Red Wire紧迫、即时突发新闻、危机

制作表现(基于 40+ 部视频):

排名风格优势
1Deconstructed在各种主题中最可靠
2Swiss Pulse最适合数据密集型内容
3Digital Grid擅长科技主题
4Geometric Bold优雅且用途广泛
5Maximalist Type高能量,应谨慎使用

可复制粘贴的风格块:

STYLE — SOFT SIGNAL (Sagmeister): Warm amber/cream, dusty rose, sage green.
Handwritten-style text. Close-up framing. Slow drifts and floats.
Soft dissolves with warm light leaks.
STYLE — WARM GRAIN (Eksell): Earth tones — ochre, forest green, terracotta, cream.
Organic rounded compositions. 16mm film grain. Rounded sans-serif.
Gentle wipes and soft cuts.
STYLE — QUIET DRAMA (Ray): Muted warm — sepia, deep brown, soft gold.
Portrait framing. Clean serif. Strong single-source contrast.
Slow fades to black.
STYLE — HERITAGE REEL (Cassandre): Faded gold, burgundy, navy, sepia wash.
Elegant centered serif. Vignetting and aged film grain.
Iris wipe transitions.
STYLE — SILK ROUTE (Abedini): Jewel tones — deep teal, burgundy, gold, lapis blue.
Layered compositions, all depths active. Elegant spaced type.
Flowing dissolves and smooth morphs.
STYLE — SWISS PULSE (Müller-Brockmann): Black/white + electric blue #0066FF.
Grid-locked. Helvetica Bold. Animated counters. Diagonal accents.
Grid wipe transitions.
STYLE — GEOMETRIC BOLD (Tanaka): Max 3 flat colors per frame.
60% negative space. Bold type as primary element.
Single focal point. Clean cuts on beat.
STYLE — VELVET STANDARD (Vignelli): Black, white, one accent: gold #c9a84c.
Thin ALL CAPS, wide spacing. Generous negative space.
Slow elegant cross-dissolves.
STYLE — DIGITAL GRID (Crouwel): Monospaced type. Dark #0a0a0a with cyan #00E5FF, amber #FFB300.
Pixel grid overlays. Terminal aesthetic. Clean wipe transitions.
STYLE — CONTACT SHEET (Brodovitch): High contrast B&W, desaturated accents.
Photo-editorial framing. Bold sans-serif annotations. Raw grain.
Hard cuts on beat. Snap-zooms.
STYLE — FOLK FREQUENCY (Terrazas): Vivid folk — hot pink, cobalt blue, sun yellow, emerald.
Bold rounded type. Folk art rhythms. Rich handmade textures.
Colorful wipes on festive rhythm.
STYLE — EARTH PULSE (Ghariokwu): Warm saturated — burnt orange, deep green, rich yellow.
Bold expressive type. Wide community framing.
Rhythmic cuts on beat. Freeze-frames.
STYLE — DREAM STATE (Tomaszewski): Muted palette + one surreal accent.
Thin elegant floating type. Soft edges, atmospheric haze.
Slow morph dissolves — NEVER hard cuts.
STYLE — PLAY MODE (Ahn Sang-soo): Electric blue, hot pink, lime green.
Bouncy spring physics. Oversized tilted text. Score cards, XP bars.
Pop cuts, bounce effects.
STYLE — CARNIVAL SURGE (Lins): Max color — hot pink #FF1493, yellow #FFE000, teal #00CED1.
Collage layering. Text MASSIVE at ANGLES. Confetti bursts.
Smash cuts, flash frames.
STYLE — SHADOW CUT (Hillmann): Deep blacks, cold greys + blood red accent.
Sharp angular text. Heavy shadow. Slow creeping push-ins.
Hard cuts to black. Film noir tension.
STYLE — DECONSTRUCTED (Brody): Dark grey #1a1a1a, rust orange #D4501E.
Type at angles, overlapping. Gritty textures, scan-line glitch.
Smash cuts with flash frames.
STYLE — MAXIMALIST TYPE (Scher): Red, yellow, black, white — max contrast.
Text IS the visual. Overlapping at different scales, 50-80% of frame.
Kinetic everything. Smash cuts, flash frames.
STYLE — DATA DRIFT (Anadol): Iridescent — purple #7c3aed, cyan #06b6d4, deep black.
Fluid morphing compositions. Thin futuristic type.
Liquid dissolves. Particles coalesce into numbers.
STYLE — RED WIRE (Tartakover): Red, black, white, emergency yellow.
Bold condensed all-caps. Split screens, tickers, timestamps.
Snap cuts, flash frames. Zero breathing room.

何时使用哪种方式:

  • 用户没有明确的视觉偏好 → 浏览 API 风格并选择一种
  • 用户需要特定的品牌颜色、字体或动效 → 提示词风格
  • 用户想要精心策划的视觉效果,并指定媒体类型 → style_id + 有选择地补充提示词内容
虚拟形象

📖 完整的虚拟形象发现流程、创建 API、语音选择 → references/avatar-discovery.md

AVATAR 文件解析(在任何外部虚拟形象查询之前执行):

如果请求暗示了特定对象,请先在工作区根目录中查找对应的 AVATAR 文件,再浏览 HeyGen 目录。

请求线索要读取的文件
指定对象(“和 Eve 一起的视频”、“Cleo 的更新”)AVATAR-<NAME>.md
Agent 自我指称(“你自己的视频”、“给我们介绍一下你的近况”)AVATAR-AGENT.md
用户自我指称(“我的视频”、“我的视频近况更新”)AVATAR-USER.md
请求中未指定对象(跳过;在下方第 1 步提问)

AVATAR-AGENT.md 和 AVATAR-USER.md 是基于角色的 符号链接, 由 heygen-avatar 第 5 阶段维护;读取时,它们会解析为当前 Agent / 用户具名的 AVATAR 文件。读取后,将它们视为其他任何 AVATAR 文件。

如果具名或别名 AVATAR 文件存在,且其中已填写 HeyGen 部分,则提取 group_id + voice_id,然后继续执行画面检查。跳过 其余发现流程。

发现流程(无适用的 AVATAR 文件时):

  1. 询问:“要显示出镜人,还是只要旁白?”
  2. 如果只要旁白 → 不设置 avatar_id,并在提示词中说明。
  3. 如果要显示出镜人 → 先检查私有虚拟形象,再检查公开虚拟形象(优先按群组浏览)。
  4. 始终展示预览图片。 不要只列出名称。
  5. 确定虚拟形象后,再确认语音偏好。

关键规则: 设置了 avatar_id 时,不要在提示词中描述虚拟形象的外观。请说“选定的出镜人”。这是导致虚拟形象不匹配的首要原因。


脚本

按类型划分的结构

脚本语言: 使用视频语言撰写脚本(来自“发现流程”第 10 项)。脚本框定指令(“该脚本是要传达的概念和主题……”)保留英文——这是给 Video Agent 的指令,不是面向观众的内容。

仅编排内容结构。不要为每个场景分配时长——让 Video Agent 自然安排节奏。

  • 产品演示: 吸引注意 → 问题 → 解决方案 → 行动号召
  • 说明视频: 背景 → 核心概念 → 总结
  • 教程: 要构建的内容 → 步骤 → 回顾
  • 销售推介: 痛点 → 愿景 → 产品 → 行动号召
  • 公告: 吸引注意 → 变更内容 → 重要原因 → 下一步
关键屏幕文字

将每个屏幕上的原文元素(数字、引语、账号名、URL、行动号召)提取到提示词中的 CRITICAL ON-SCREEN TEXT 区块。否则,Video Agent 会对其进行总结或改写。

脚本框定(关键)

Video Agent 将你的脚本视为要传达的概念,而不是逐字照读的台词。始终在提示词中添加以下指令:

“该脚本是要传达的概念和主题——不是逐字稿。你可以充分发挥创意,自由扩展、详细阐述、添加示例,并自然填充时长。不要用沉默或停顿凑时长。”

否则,Video Agent 会用无声空档凑够目标时长。

语音规则

按适合听觉理解的方式撰写。句子简短。使用主动语态。可以使用缩略表达。

呈现脚本

向用户展示完整脚本、字数和预估时长。在编写提示词前获取用户批准。


提示词编写

将脚本转换为优化后的 Video Agent 提示词。

构建规则
  1. 旁白设定。 使用 avatar_id 时:“所选讲解者 [讲解]……”。不使用时:描述理想的讲解者,或写“仅使用旁白。”
  2. 时长提示。 在提示词中说明目标时长。
  3. 脚本自由度指令。 始终包含 Script 中的脚本设定指令。
  4. 素材锚定。 具体说明:“讨论功能时,将附带的截图用作 B-roll。”
  5. 语气校准。 使用具体措辞:“自信且自然”/“充满活力,像一位科技 YouTuber。”
  6. 单一主题。 明确说明主题仅有一个。
  7. 将风格区块放在末尾。 先写内容/脚本,再将所有风格指令(颜色、媒体类型、运动偏好)集中放在提示词底部。
  8. 语言分离。 脚本内容和旁白使用视频语言。所有技术指令——脚本设定指令、风格区块、媒体类型指导、运动动词(SLAMS、CASCADE 等)以及画面检查修正——都使用英语。无论内容使用什么语言,Video Agent 的内部工具都使用英语命令进行响应。
提示词撰写方法
信号方法
≤60 秒,偏对话自然流畅——脚本 + 语气 + 时长。不使用场景标签。
>60 秒,数据密集、要求精准逐场景撰写——为每个场景标注画面类型 + 旁白
视觉风格区块

每个提示词都应以风格区块结尾。缺少风格区块时,不同场景之间的视觉效果会显得不一致。

默认通用风格(来自 HeyGen 团队——用户没有强烈偏好时使用):

Use minimal, clean styled visuals. Blue, black, and white as main colors.
Leverage motion graphics as B-rolls and A-roll overlays. Use AI videos when necessary.
When real-world footage is needed, use Stock Media.
Include an intro sequence, outro sequence, and chapter breaks using Motion Graphics.

品牌专属风格: 包含十六进制颜色代码(#1E40AF)、字体系列(Inter),并说明每种场景类型优先使用哪些媒体类型。

📖 风格预设(Minimalistic、Cinematic、Bold 等)→ references/official-prompt-guide.md

媒体类型选择

Video Agent 支持三种媒体类型。请明确指示,否则它会自行猜测(而且经常猜错)。

使用场景最佳媒体类型
数据、统计信息、品牌元素、图表动态影像——动画文字、图表、图标
抽象概念、自定义场景AI 生成——用于呈现素材库内容无法覆盖的事物的图像/视频
真实环境、人物情绪素材库媒体——来自素材库的真实影像

在提示词中明确说明:“统计数据使用动态影像,办公室场景使用素材库影像,未来主义概念使用 AI 生成的视觉内容。”

📖 完整的媒体类型矩阵、逐场景模板、高级提示词结构 → references/prompt-craft.md 📖 20 种命名视觉风格(以氛围为先的选择方式,可复制粘贴的 STYLE 区块)→ references/prompt-styles.md 📖 运动词汇和 B-roll → references/motion-vocabulary.md

方向

YouTube/网页/LinkedIn → "landscape" | TikTok/Reels/Shorts → "portrait" | 默认 → "landscape"


画面检查

设置 avatar_id 时,会在 Generate 之前自动运行。它会向 Video Agent 提示词追加修正说明。不会生成图像,也不会创建新形象。

⛔ 子 Agent 规则: 画面检查必须在主会话中运行。先构建完整的修正后提示词,并将任何 FRAMING NOTE / BACKGROUND NOTE 嵌入其中,然后再携带最终内容启动子 Agent。子 Agent 只能提交、轮询并交付。

Avatar ID 解析(始终首先运行)

绝不要信任已存储的 look_id——形象是临时的,可能会被删除。 始终通过 group_id 重新解析:

MCP: list_avatar_looks(group_id=<group_id>) — 返回该组的所有形象。 CLI: heygen avatar looks list --group-id <group_id> --limit 20

根据响应,选择与目标方向匹配的形象。使用第一个匹配项。如果该组中没有形象,请告知用户。

规则: AVATAR 文件中只存储 group_id。在运行时解析 look_id。

步骤
  1. 获取头像外观元数据: get_avatar_look(look_id=<avatar_id>)(CLI:heygen avatar looks get <avatar_id>)→ 提取 avatar_type、preview_image_url、image_width、image_height
  2. 确定方向: 宽 > 高 = 横向, 高 > 宽 = 纵向,宽 == 高 = 正方形。获取失败 = 默认按纵向处理。
  3. 确定背景: photo_avatar → 由 Video Agent 处理环境。studio_avatar → 检查是否为透明/纯色/空背景。digital_twin → 始终带有背景。
  4. 在 Video Agent 提示词末尾附加相应的修正说明。 就这么简单。无需生成图像,也无需创建新外观。
修正矩阵
avatar_type方向匹配?有背景?修正
photo_avatar✅ 匹配(不适用)无
photo_avatar❌ 不匹配或 ◻ 正方形(不适用)构图说明
studio_avatar✅ 匹配✅ 有无
studio_avatar✅ 匹配❌ 无背景说明
studio_avatar❌ 不匹配或 ◻ 正方形✅ 有构图说明
studio_avatar❌ 不匹配或 ◻ 正方形❌ 无构图说明 + 背景说明
digital_twin✅ 匹配✅ 有无
digital_twin❌ 不匹配或 ◻ 正方形✅ 有构图说明
构图说明(附加到提示词)

纵向/正方形头像 → 横向视频:

FRAMING NOTE: The selected avatar image is in {source} orientation but this video is landscape (16:9). Frame the presenter from the chest up, centered in the landscape canvas. Use AI Image tool to generative fill to extend the scene horizontally with a complementary background environment that matches the video's tone (studio, office, or contextually appropriate setting). Do NOT add black bars or pillarboxing. The avatar should feel natural in the 16:9 frame.

横向/正方形头像 → 纵向视频:

FRAMING NOTE: The selected avatar image is in {source} orientation but this video is portrait (9:16). Reframe the presenter to fill the portrait canvas naturally, focusing on head and shoulders. Use AI Image tool to generative fill to extend vertically if needed. Do NOT add letterboxing. The avatar should fill the portrait frame comfortably.
背景说明(仅适用于无背景的 studio_avatar)
BACKGROUND NOTE: The selected avatar has no background or a transparent backdrop. Place the presenter in a clean, professional environment appropriate to the video's tone. For business/tech content: modern studio with soft lighting and subtle depth. For casual content: bright, minimal space with natural light. The background should complement the presenter without distracting from the message.

📖 完整修正模板和组合矩阵 → references/frame-check.md


生成

提交前检查

画面检查: 如果已设置 avatar_id,请确保已执行画面检查,并已将所有修正说明附加到提示词中。

旁白者构图检查: 如果已设置 avatar_id,提示词不得描述头像的外观。请改用“所选主持人”。

  • 试运行:展示创意预览(单行方向说明 → 带有语气/视觉提示的场景 → “回复 go 或告诉我需要修改的内容”),然后等待用户回复“go”。
  • 完整制作:用户已批准脚本。继续。
  • 快速成片:立即生成。
提交

步骤 1:运行 Frame Check(如果已设置 avatar_id)——仅限主会话 提交前,运行上文中的 Frame Check 步骤。构建修正后的提示词,并附加任何 FRAMING NOTE 或 BACKGROUND NOTE。

步骤 2:在主会话中构建完整载荷 启动任何子 Agent 之前,先整理完整的参数:

标志值
--prompt修正后的提示词——已嵌入 Frame Check 备注
--avatar-id根据 group_id 解析出的 look_id
--voice-id已确认的 voice_id
--style-id可选
--orientationlandscape 或 portrait

此载荷是交接给任何子 Agent 的内容。子 Agent 接收到的是一组完整的参数——它不会修改提示词、不会重新运行 Frame Check,也不会查询 avatar ID。

步骤 3:子 Agent 启动模式(用于批量生成或非阻塞式生成)

生成多个视频或希望以非阻塞方式轮询时,每个视频启动一个子 Agent,并传入完整参数。 子 Agent 仅负责提交 + 轮询 + 交付。所有创意决策、Frame Check 和提示词构建都在启动子 Agent 之前由主会话完成。

⛔ 批量处理规则: 并行生成 N 个视频时,每批最多启动 2–3 个子 Agent。一次提交过多会导致队列拥堵——所有任务都可能卡在 thinking 状态 15 分钟以上。提交第 1 批,等待任务完成后,再提交第 2 批。

步骤 4:提交

MCP: create_video_agent(prompt=<prompt>, avatar_id=<look_id>, voice_id=<voice_id>, style_id=<optional>, orientation=<orientation>)

CLI: heygen video-agent create——添加 --wait --timeout 45m 以阻塞等待任务完成,或省略 --wait 并手动轮询。始终将 --wait 与 --timeout 45m 配合使用——CLI 默认超时时间为 20m,但 Video Agent 任务通常需要 20-45m,因此默认值会在生成过程中超时。

heygen video-agent create \
  --prompt "..." \
  --avatar-id "..." \
  --voice-id "..." \
  --orientation landscape \
  --wait --timeout 45m

提交后,CLI 会在 stdout 上返回 JSON:{"data": {"video_id": "...", "session_id": "..."}}。使用 --wait 时,它会阻塞直至视频完成,并输出最终状态对象。不使用 --wait 时,提交会立即返回——使用 heygen video-agent get <id> 轮询。

⚠️ 务必立即保存 session_id。 会话 URL:https://app.heygen.com/video-agent/{session_id}。如果丢失,可通过 heygen video-agent list 找回(条目包含 session_id、created_at 和 title),但仍建议立即保存。

轮询

MCP: get_video_agent_session(session_id=<session_id>)——返回状态、进度和 video_id。 CLI: heygen video-agent get <session_id>(或在获取 video_id 后使用 heygen video get <video-id>)。

每个视频的总耗时:20–45 分钟。如果传入了 --wait,CLI 会使用指数退避处理轮询。如果手动轮询:5 分钟后首次检查,之后每隔 60 秒检查一次,最多等待 45 分钟。

状态流转:thinking → generating → completed | failed

如果卡在 thinking 状态超过 15 分钟且没有进展 → 告知用户。

交付
  1. 从已完成的状态响应中获取 video_url(S3 mp4),或使用 heygen video get <video_id> | jq -r '.data.video_page_url' 获取可分享链接。
  2. 将 MP4 下载到本地:heygen video download <video_id>(写入文件,并在 stdout 上输出 {"asset", "message", "path"}——通过 .path 传递结果)。
  3. 通过消息工具以内嵌形式发送:message(action:send, media:"<downloaded-path>", caption:"Your video is ready! 🎬\n📊 Duration: [actual]s vs [target]s ([percentage]%)")。这样视频可以直接在 Telegram/Discord 中播放,而不是通过外部链接播放。
  4. 同时分享用于编辑的 HeyGen 控制面板链接:https://app.heygen.com/videos/<video_id>

务必报告时长准确度。发送后清理已下载文件。


交付

状态: DONE | DONE_WITH_CONCERNS | BLOCKED | NEEDS_CONTEXT

自我评估日志

每次生成后,都要在 heygen-video-log.jsonl 中追加:

{"timestamp":"ISO-8601","video_id":"...","session_id":"...","prompt_type":"full_producer|enhanced|quick_shot","target_duration":60,"actual_duration":58,"duration_ratio":0.97,"avatar_id":"...","voice_id":"...","style_id":"...","orientation":"landscape","aspect_correction":"none|framing|background|both","avatar_type":"photo_avatar|studio_avatar|digital_twin","files_attached":2,"status":"DONE","concerns":[],"topic":"..."}

如果用户希望修改:根据反馈调整提示词,然后重新生成。切勿使用完全相同的提示词重试。

报告反馈(CLI 模式)

交付视频后,或在过程中遇到阻碍时,每项任务运行一次:

heygen feedback --rating <1-5> --comment "<what worked, or what broke and what you tried>"
  • --rating:5 = 效果很好 · 3 = 遇到阻碍但仍可用 · 1 = 出错 / 无法使用。
  • --comment:说明遇到的任何错误、文档过时、缺少的标志或令人困惑的行为,并注明触发问题的命令或流程。

匿名提交,无需 API 密钥;如果用户选择退出分析(HEYGEN_NO_ANALYTICS 或 heygen config set analytics false),则不会执行任何操作。这是 CLI 团队的主要反馈渠道——运行结束时保持沉默,他们就什么也不知道。**仅限 CLI 模式:**在 MCP 或 OpenClaw 插件模式下跳过(这些模式通过 mcp__heygen__* / video_generate 路由,没有反馈入口)。


最佳实践

  • 开头就抛出亮点。 前 5 秒决定 80% 的留存率。
  • 每个视频只讲一个主题。 单一主题能显著提升效果。
  • 写得适合说出来。 如果你不会对朋友这么说,就重写。

📖 已知问题 → references/troubleshooting.md

评论

支持 Markdown