Not in the top 1,000 by GitHub stars
heygen-com/skills
HeyGen AI agent skills — avatar creation and video production via the v3 Video Agent pipeline
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
heygen-avatar/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
1bd5e4d33a02 → 1bd5e4d33a02
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 1bd5e4d33a02
No earlier version was observed for comparison.
heygen-translate/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
1bd5e4d33a02 → 1bd5e4d33a02
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 1bd5e4d33a02
No earlier version was observed for comparison.
heygen-video/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
1bd5e4d33a02 → 1bd5e4d33a02
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 1bd5e4d33a02
No earlier version was observed for comparison.
platforms/nanoclaw/heygen/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
1bd5e4d33a02 → 1bd5e4d33a02
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 1bd5e4d33a02
No earlier version was observed for comparison.
Verified commit 1bd5e4d33a028dfed3abf504c5e3dd644fb9ea8a
git clone --filter=blob:none --no-checkout https://github.com/heygen-com/skills.git .hotskills/heygen-com-skills && git -C .hotskills/heygen-com-skills checkout --detach 1bd5e4d33a028dfed3abf504c5e3dd644fb9ea8a
# Copy each selected skill directory from .hotskills/heygen-com-skills into .claude/skills/<skill-name>/Heat
5.6- Star growth, last 7 daysNot available
- Star growth, last 24 hoursNot available
- Rank movement, last 7 daysNot available
- Commits, last 30 daysNot available
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekNot available
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
30-day change not yet available: not enough history.
Individual skills in this repository
- heygen-avatar
heygen-avatar - heygen-translate
heygen-translate - heygen-video
heygen-video - heygen
platforms/nanoclaw/heygen
How it works
heygen-avatar
When your agent uses it
Create a persistent HeyGen avatar — a reusable face + voice identity for the agent, the user, or any named character — powered by HeyGen Avatar V technology. Prompt-based creation by default (description → HeyGen builds it); photo upload is optional for real-person digital twins. Use when: (1) giving the agent a face + voice so it can present videos ("bring yourself to life", "create your avatar", "give yourself an avatar", "design a presenter", "set up an avatar", "let's make an avatar"), (2) the user wants to appear in videos as themselves ("create my avatar", "I want my face in a video", "digital twin of me", "build me an avatar"), (3) building a named character presenter ("create an avatar called Cleo", "design a character named X"), (4) establishing HeyGen identity before making videos — the correct FIRST step when no avatar exists yet. Chain signal: when the user says both an identity/avatar action AND a video action in the same request ("create an avatar AND make a video", "set up identity THEN create a video", "design a presenter AND immediately record"), run heygen-avatar first, then heygen-video. Returns avatar_id + voice_id — pass directly to heygen-video to create HeyGen videos. NOT for: generating videos (use heygen-video), translating videos, or TTS-only tasks.
What it loads into context
Frontmatter
359 tokensAlways available to the agent
SKILL.md
6,624 tokensWhen the skill is activated
Reference documents
4,259 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Files & Paths
- Language Awareness
- UX Rules
- Start Here (Critical)
- Before You Start (environment detection)
- API Mode Detection
- Avatar File Convention
- Skill Announcement
- Workflow
- Report feedback (CLI mode)
- Iteration Flow
- UX Rules
- Video Producer Integration
- Error Handling
Files
../.claude-plugin/marketplace.jsonasset810 bytes../.claude-plugin/plugin.jsonasset767 bytesSKILL.mdcore27,313 bytesSKILL.mdcore27,313 bytesSKILL.mdcore27,313 bytesSKILL.mdcore27,313 bytesSKILL.mdcore27,313 bytesreferences/asset-routing.mddoc4,217 bytesreferences/avatar-creation.mddoc5,762 bytesreferences/troubleshooting.mddoc7,588 bytes
Read SKILL.md
# HeyGen Avatar Designer
Create and manage HeyGen avatars for anyone: the agent, the user, or named characters. Handles identity extraction, avatar generation, voice selection, and saves everything to `AVATAR-<NAME>.md` for consistent reuse.
## Files & Paths
This skill reads and writes the following. No other files are accessed without explicit user instruction.
| Operation | Path | Purpose |
|-----------|------|---------|
| Read | `SOUL.md`, `IDENTITY.md` | Extract identity details when creating an avatar for the agent |
| Read | `AVATAR-<NAME>.md` | Load existing avatar identity (for variant looks, voice updates) |
| Write | `AVATAR-<NAME>.md` | Save new avatar identity after creation |
| Write | `AVATAR-AGENT.md`, `AVATAR-USER.md` (symlinks) | Role aliases, see Phase 5 |View the complete source on GitHubheygen-translate
When your agent uses it
Translate and dub a video into another language with voice cloning and lip-sync, powered by HeyGen Video Translation. The presenter keeps their face, their voice is cloned into the target language, and lips re-sync to the new audio — viewers see the same person speaking natively. Use when: (1) localizing an existing video into one or more languages ("translate this video to Spanish", "make this in French and German", "dub this into Japanese", "I need this in 10 languages for a launch"), (2) the user has a finished video and wants the SAME presenter speaking another language (not a new presenter — that's heygen-video), (3) podcast / audio-only translation ("translate this podcast", "dub the audio but keep my video"), (4) high-stakes translations where the user wants to review/edit subtitles before final render (the proofreads workflow), (5) "translate my video", "dub this", "localize this clip", "make a multilingual version", "subtitle and dub". Returns the translated video URL (or audio file for audio-only mode), one per target language. Chain signal: if the user wants to CREATE a new video in another language (no source video exists yet), route to heygen-video and write the script in the target language — do not use heygen-translate. Use heygen-translate only when there is an existing source video to localize. NOT for: creating new videos from scratch (use heygen-video), avatar creation (use heygen-avatar), TTS-only synthesis (use heygen-video with audio-only output), or text-only translation.
What it loads into context
Frontmatter
468 tokensAlways available to the agent
SKILL.md
7,258 tokensWhen the skill is activated
Reference documents
11,878 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- User-Facing Behavior
- API Mode Detection
- Default Workflow
- Embedded Expertise
- First-Time User Detection
- Source Quality Disclaimer (verbatim, for delivery)
- Phase 2 / Roadmap (mention only if asked)
- Best Practices (the short version)
Files
SKILL.mdcore30,624 bytesSKILL.mdcore30,624 bytesSKILL.mdcore30,624 bytesSKILL.mdcore30,624 bytesSKILL.mdcore30,624 bytesSKILL.mdcore30,624 bytesSKILL.mdcore30,624 bytesSKILL.mdcore30,624 bytesSKILL.mdcore30,624 bytesSKILL.mdcore30,624 bytesSKILL.mdcore30,624 bytesSKILL.mdcore30,624 bytesSKILL.mdcore30,624 bytesSKILL.mdcore30,624 bytesSKILL.mdcore30,624 bytesSKILL.mdcore30,624 bytesSKILL.mdcore30,624 bytesSKILL.mdcore30,624 bytesSKILL.mdcore30,624 bytesSKILL.mdcore30,624 bytesSKILL.mdcore30,624 bytesSKILL.mdcore30,624 bytesSKILL.mdcore30,624 bytesSKILL.mdcore30,624 bytesSKILL.mdcore30,624 bytesSKILL.mdcore30,624 bytesSKILL.mdcore30,624 bytesSKILL.mdcore30,624 bytesSKILL.mdcore30,624 bytesSKILL.mdcore30,624 bytesSKILL.mdcore30,624 bytesreferences/asset-routing.mddoc6,064 bytesreferences/language-locale-guide.mddoc10,348 bytesreferences/proofreads-workflow.mddoc19,750 bytesreferences/troubleshooting.mddoc10,880 bytes
Read SKILL.md
# HeyGen Video Translation
Translate and dub an existing video into 175+ languages. The system clones the
presenter's voice into the target language, re-syncs their lips to the new
audio, and returns a fully dubbed video. You provide a source video and a target
language — the engine handles transcription, translation, voice cloning,
lip-sync, and (optionally) burned-in captions.
This is **not** new-video generation. The presenter, performance, framing, and
brand assets in the original video are preserved. Translation rides on top of
what's already there.
## User-Facing Behavior
View the complete source on GitHubheygen-video
When your agent uses it
Generate HeyGen presenter videos via the v3 Video Agent pipeline — handles Frame Check (aspect ratio correction), prompt engineering, avatar resolution, and voice selection. Required for any HeyGen video generation. Replaces deprecated endpoints with v3. Use when: (1) generating any HeyGen video (via API or otherwise), (2) sending a personalized video message (outreach, update, announcement, pitch, knowledge), (3) creating a HeyGen presenter-led explainer, tutorial, or product demo with a human face, (4) "make a video of me saying...", "send a video to my leads", "record an update for my team", "create a video pitch", "make a loom-style message", "I want to appear in this video", "generate a HeyGen video", "make a talking head video". Accepts avatar_id from heygen-avatar for identity-first HeyGen videos, or uses a stock presenter. Returns video share URL + HeyGen session URL for iteration. Chain signal: when the user wants to create/design an avatar AND make a video in the same request, run heygen-avatar first, then return here. Conjunctions to watch: "and then", "and immediately", "first...then", "X and make a video", "design [presenter] and record" = always CHAIN. If the user provides a photo AND wants a video, route to heygen-avatar first. NOT for: avatar creation or identity setup (use heygen-avatar first), cinematic footage or b-roll without a presenter, translating videos, TTS-only, or streaming avatars.
What it loads into context
Frontmatter
447 tokensAlways available to the agent
SKILL.md
9,750 tokensWhen the skill is activated
Reference documents
14,591 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Preamble (run first)
- Files & Paths
- UX Rules
- Language Awareness
- API Mode Detection
- Mode Detection
- First Look — First-Run Avatar Check
- Discovery
- Script
- Prompt Craft
- Frame Check
- Generate
- Deliver
- Best Practices
Scripts executed separately
scripts/update-check.sh
Files
SKILL.mdcore40,362 bytesSKILL.mdcore40,362 bytesSKILL.mdcore40,362 bytesSKILL.mdcore40,362 bytesSKILL.mdcore40,362 bytesreferences/asset-routing.mddoc4,217 bytesreferences/avatar-discovery.mddoc6,985 bytesreferences/frame-check.mddoc6,125 bytesreferences/motion-vocabulary.mddoc8,332 bytesreferences/official-prompt-guide.mddoc5,805 bytesreferences/prompt-craft.mddoc10,020 bytesreferences/prompt-styles.mddoc10,236 bytesreferences/troubleshooting.mddoc7,588 bytesscripts/update-check.shruns6,043 bytes
Read SKILL.md
## Preamble (run first)
No auto-run steps. Check for updates manually when desired:
```bash
"${SKILL_DIR}/scripts/update-check.sh"
```
This script is opt-in only. Do not execute it automatically on skill invocation.
# HeyGen Video Producer
You are a video producer. Not a form. Not a CLI wrapper. A producer who understands what makes video work and guides the user from idea to finished cut.
**Docs:** https://developers.heygen.com/docs/quick-start (API) · https://developers.heygen.com/cli (CLI)
View the complete source on GitHubWhen your agent uses it
What it loads into context
Frontmatter
0 tokensAlways available to the agent
SKILL.md
1,216 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- Required Environment
- Steps
- Verification
- Report Feedback
- Troubleshooting
- Limits
Files
SKILL.mdcore4,610 bytesSKILL.mdcore4,610 bytesSKILL.mdcore4,610 bytesSKILL.mdcore4,610 bytesSKILL.mdcore4,610 bytesSKILL.mdcore4,610 bytesSKILL.mdcore4,610 bytes
Read SKILL.md
# HeyGen Video Agent — NanoClaw Container Skill
## When to Use
Use this skill when the user wants to create a video with an AI avatar presenter.
Triggers: "make a video", "create a video message", "record a video", "avatar video",
"talking head video", "video pitch", "video update".
NOT for: image generation, audio-only TTS, video translation, or cinematic b-roll.
## Required Environment
- `HEYGEN_API_KEY` — Get from https://app.heygen.com/settings?nav=API
- `heygen` CLI — install: `curl -fsSL https://static.heygen.ai/cli/install.sh | bash`. Verify: `heygen auth status`.
View the complete source on GitHubSkills included
- heygen-avatar
- heygen-translate
- heygen-video
Repository facts
- License
- MIT
- Created
- Jan 22, 2026
- Last pushed
- Jul 14, 2026
- Forks
- 90
- Open issues
- 5
- Project activity
- Slowing
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 5, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 44 notes
heygen-avatar/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedheygen-avatar/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedheygen-avatar/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedheygen-avatar/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedheygen-translate/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedheygen-translate/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedheygen-translate/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedheygen-translate/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedheygen-translate/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedheygen-translate/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedheygen-translate/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedheygen-translate/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedheygen-translate/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedheygen-translate/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedheygen-translate/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedheygen-translate/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedheygen-translate/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedheygen-translate/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedheygen-translate/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedheygen-translate/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- 3 broad permissionsin 3 files: heygen-avatar/SKILL.md:1 heygen-translate/SKILL.md:1 heygen-video/SKILL.md:1
- 8 dangerous shell commandsin 5 files: heygen-video/scripts/update-check.sh:29 heygen-avatar/SKILL.md:92 heygen-translate/SKILL.md:71 and 2 more
- 114 network referencesin 15 files: heygen-translate/references/proofreads-workflow.md:127 heygen-translate/SKILL.md:28 heygen-translate/references/troubleshooting.md:92 and 12 more
- No hidden or obfuscated text
- No instruction overrides
- 1 executable scriptin 1 file: heygen-video/scripts/update-check.sh:1
- 16 references to secretsin 7 files: heygen-video/SKILL.md:29 heygen-translate/SKILL.md:36 heygen-translate/references/troubleshooting.md:106 and 4 more
- No requests to vote in Hot
Show all 142 signals by file
.claude-plugin/marketplace.json
.claude-plugin/plugin.json
- Network accessline 5
"author": { "name": "HeyGen", "url": "https://heygen.com" - Network accessline 6
"name": "HeyGen", "url": "https://heygen.com" }, - Network accessline 7
"url": "https://heygen.com" - Network accessline 8
}, "repository": "https://github.com/heygen-com/skills", "license": "MIT", - Network accessline 9
"repository": "https://github.com/heygen-com/skills",
heygen-avatar/SKILL.md
- Broad permissionsline 1
Bash, WebFetch, Read, Write, mcp__heygen__* - Access to secretsline 90
[Credential-related source omitted] - Dangerous shell operationline 92
**Neither available:** Only if MCP is unavailable AND the CLI doesn't work, tell the user once: "To use this skill, connect the HeyGen MCP server or install the HeyGen CLI: `curl -fsSL https://static.heygen.ai/cli/install.sh | bash` then `h - Network accessline 92
**Neither available:** Only if MCP is unavailable AND the CLI doesn't work, tell the user once: "To use this skill, connect the HeyGen MCP server or install the HeyGen CLI: `curl -fsSL https://static.heygen.ai/cli/install.sh | bash` then `h - Network accessline 96
**Docs-first rule:** Before calling any endpoint you're unsure about: - **Index:** `GET https://developers.heygen.com/llms.txt` — full sitemap - Network accessline 97
- **Index:** `GET https://developers.heygen.com/llms.txt` — full sitemap - Network accessline 265
File options for Type B: - `{ "type": "url", "url": "https://..." }` — public image URL - Network accessline 266
- `{ "type": "url", "url": "https://..." }` — public image URL
heygen-avatar/references/asset-routing.md
- Network accessline 62
{"type": "url", "url": "https://example.com/image.png"}
heygen-avatar/references/avatar-creation.md
- Network accessline 9
For *avatar discovery* (finding an existing avatar at video time), see [`heygen-video/references/avatar-discovery.md`](https://github.com/heygen-com/skills/blob/master/heygen-video/references/avatar-discovery.md). - Network accessline 10
[`heygen-video/references/avatar-discovery.md`](https://github.com/heygen-com/skills/blob/master/heygen-video/references/avatar-discovery.md). - Network accessline 40
"type": "photo", "name": "My Avatar", "file": {"type": "url", "url": "https://example.com/headshot.jpg"}, - Network accessline 41
"name": "My Avatar", "file": {"type": "url", "url": "https://example.com/headshot.jpg"}, "avatar_group_id": "<optional>" - Network accessline 42
"file": {"type": "url", "url": "https://example.com/headshot.jpg"}, - Network accessline 94
// Public URL (no auth, no paywall) { "type": "url", "url": "https://example.com/headshot.jpg" } - Network accessline 95
{ "type": "url", "url": "https://example.com/headshot.jpg" }
heygen-avatar/references/troubleshooting.md
- Access to secretsline 97
[Credential-related source omitted]
heygen-translate/SKILL.md
- Broad permissionsline 1
Bash, WebFetch, Read, Write, mcp__heygen__* - Network accessline 28
output), or text-only translation. argument-hint: "[video_url_or_path] [--to language]" homepage: https://docs.heygen.com/reference/video-translate - Network accessline 29
argument-hint: "[video_url_or_path] [--to language]" homepage: https://docs.heygen.com/reference/video-translate allowed-tools: Bash, WebFetch, Read, Write, mcp__heygen__* - Network accessline 30
homepage: https://docs.heygen.com/reference/video-translate - Access to secretsline 36
[Credential-related source omitted] - Access to secretsline 37
[Credential-related source omitted] - Access to secretsline 68
[Credential-related source omitted] - Network accessline 69
[Credential-related source omitted] - Access to secretsline 69
[Credential-related source omitted] - Dangerous shell operationline 71
5. **Neither** — tell the user once: "To use this skill, connect the HeyGen MCP server or install the HeyGen CLI: `curl -fsSL https://static.heygen.ai/cli/install.sh | bash` then `heygen auth login`." - Network accessline 71
5. **Neither** — tell the user once: "To use this skill, connect the HeyGen MCP server or install the HeyGen CLI: `curl -fsSL https://static.heygen.ai/cli/install.sh | bash` then `heygen auth login`." - Network accessline 77
- **MCP mode:** auth is handled by OAuth — no check needed. - **CLI mode:** run `heygen auth status` (silent). If it exits 0, proceed. If it exits non-zero (no key, expired, invalid): 1. Ask the user: *"I need your HeyGen API key to proce - Network accessline 78
- **CLI mode:** run `heygen auth status` (silent). If it exits 0, proceed. If it exits non-zero (no key, expired, invalid): 1. Ask the user: *"I need your HeyGen API key to proceed. You can grab one from https://app.heygen.com/settings?na - Network accessline 79
1. Ask the user: *"I need your HeyGen API key to proceed. You can grab one from https://app.heygen.com/settings?nav=API — paste it here."* - Network accessline 87
- **Never call `curl api.heygen.com/...`** Every operation in this skill has a CLI command and (where supported) an MCP tool. Use those. - Network accessline 227
heygen video-translate create \ -d '{"video":{"type":"url","url":"https://..."},"output_languages":["Spanish (Spain)","Japanese (Japan)"]}' \ - Network accessline 228
-d '{"video":{"type":"url","url":"https://..."},"output_languages":["Spanish (Spain)","Japanese (Japan)"]}' \ - Network accessline 261
# 1. Create proofread session — returns proofread_ids (one per language) heygen video-translate proofreads create \ -d '{"video":{"type":"url","url":"https://..."}}' \ - Network accessline 262
heygen video-translate proofreads create -d '{"video":{"type":"url","url":"https://..."}}' - Network accessline 263
-d '{"video":{"type":"url","url":"https://..."}}' \ - Network accessline 278
SRT_URL=$(jq -r '.data.srt_url' /tmp/srt-resp.json) # target-lang, edit this ORIG_URL=$(jq -r '.data.original_srt_url' /tmp/srt-resp.json) # source-lang transcript curl -s "$SRT_URL" -o /tmp/proofread.srt - Network accessline 280
curl -s "$SRT_URL" -o /tmp/proofread.srt
heygen-translate/references/asset-routing.md
- Network accessline 12
{ "type": "url", "url": "https://example.com/source.mp4" } - Network accessline 53
curl -sI "$URL" | head -5 - Network accessline 64
- `Content-Type: text/html` → It's a webpage embedding the video, not the file. Won't work. - `Content-Type: application/octet-stream` → Server isn't declaring MIME. Usually still works but mark as risk. - 30x redirect → Follow with `curl - - Network accessline 65
- `Content-Type: application/octet-stream` → Server isn't declaring MIME. Usually still works but mark as risk. - 30x redirect → Follow with `curl -sIL` to see where it lands. If the final destination is a login page, auth-walled. - `Conten - Network accessline 66
- 30x redirect → Follow with `curl -sIL` to see where it lands. If the final destination is a login page, auth-walled. - Network accessline 74
heygen asset create --file /path/to/video.mp4 # returns {"data":{"asset_id":"<asset-id>","url":"https://...","mime_type":"...","size_bytes":123}} - Network accessline 75
# returns {"data":{"asset_id":"<asset-id>","url":"https://...","mime_type":"...","size_bytes":123}} - Network accessline 104
# Example: AWS S3 with public-read ACL on the object aws s3 cp output.mp4 s3://my-bucket/source.mp4 --acl public-read # Then pass: https://my-bucket.s3.amazonaws.com/source.mp4 - Network accessline 106
# Then pass: https://my-bucket.s3.amazonaws.com/source.mp4 - Network accessline 178
- **Don't paste raw `curl https://api.heygen.com/v3/assets ...` calls.** Use `heygen asset create` (CLI) or `upload_asset` (MCP).
heygen-translate/references/proofreads-workflow.md
- Network accessline 127
{ "data": { "original_srt_url": "https://resource2.heygen.ai/video_translate/.../<title>_proofread_original.srt?...", - Network accessline 128
"data": { "original_srt_url": "https://resource2.heygen.ai/video_translate/.../<title>_proofread_original.srt?...", "srt_url": "https://resource2.heygen.ai/video_translate/.../<title>_proofread.srt?..." - Network accessline 129
"original_srt_url": "https://resource2.heygen.ai/video_translate/.../<title>_proofread_original.srt?...", - Network accessline 130
"srt_url": "https://resource2.heygen.ai/video_translate/.../<title>_proofread.srt?..." - Network accessline 138
SRT_URL=$(heygen video-translate proofreads srt get "$PR_ID" \ | jq -r '.data.srt_url') curl -s "$SRT_URL" -o /tmp/proofread.srt - Network accessline 140
curl -s "$SRT_URL" -o /tmp/proofread.srt - Network accessline 183
|---------------------|--------------------------| | Local file | Upload to S3 / Cloud Storage with public-read OR a presigned URL ≥2 h | | GitHub gist | Use the raw URL: `https://gist.githubusercontent.com/<user>/<id>/raw/<file>.srt` | - Network accessline 184
| Local file | Upload to S3 / Cloud Storage with public-read OR a presigned URL ≥2 h | | GitHub gist | Use the raw URL: `https://gist.githubusercontent.com/<user>/<id>/raw/<file>.srt` | | GitHub repo | Use the raw URL: `https://raw.githubus - Network accessline 185
| GitHub gist | Use the raw URL: `https://gist.githubusercontent.com/<user>/<id>/raw/<file>.srt` | - Network accessline 186
| GitHub repo | Use the raw URL: `https://raw.githubusercontent.com/<owner>/<repo>/<branch>/<path>.srt` | - Network accessline 190
The URL must return `Content-Type` of `application/x-subrip` or `text/plain` and the SRT body. Verify with `curl -sI "$URL"` before submitting. - Network accessline 235
# 1. Submit proofread session heygen video-translate proofreads create \ -d '{"video":{"type":"url","url":"https://example.com/source.mp4"}}' \ - Network accessline 236
heygen video-translate proofreads create -d '{"video":{"type":"url","url":"https://example.com/source.mp4"}}' - Network accessline 237
-d '{"video":{"type":"url","url":"https://example.com/source.mp4"}}' \ - Network accessline 252
SRT_URL=$(jq -r '.data.srt_url' /tmp/srt-resp.json) ORIG_URL=$(jq -r '.data.original_srt_url' /tmp/srt-resp.json) curl -s "$SRT_URL" -o /tmp/proofread.srt - Network accessline 253
ORIG_URL=$(jq -r '.data.original_srt_url' /tmp/srt-resp.json) curl -s "$SRT_URL" -o /tmp/proofread.srt curl -s "$ORIG_URL" -o /tmp/proofread-original.srt - Network accessline 254
curl -s "$SRT_URL" -o /tmp/proofread.srt - Network accessline 255
curl -s "$ORIG_URL" -o /tmp/proofread-original.srt - Network accessline 390
| Symptom | Verified `failure_message` | Cause | Fix | |---------|----------------------------|-------|-----| | `failed` immediately on submit | `Failed to download video from url, please check the url is valid or the video is public` | Sou - Network accessline 391
|---------|----------------------------|-------|-----| | `failed` immediately on submit | `Failed to download video from url, please check the url is valid or the video is public` | Source URL was 401/403/404, returned HTML, redirected to a - Network accessline 392
| `failed` immediately on submit | `Failed to download video from url, please check the url is valid or the video is public` | Source URL was 401/403/404, returned HTML, redirected to a login page, or had wrong MIME | HEAD-check the URL wit
heygen-translate/references/troubleshooting.md
- Network accessline 92
heygen video-translate create -d '...' \ --callback-url "https://example.com/heygen-webhooks" \ - Network accessline 93
--callback-url "https://example.com/heygen-webhooks" \ - Access to secretsline 106
[Credential-related source omitted] - Network accessline 108
[Credential-related source omitted] - Access to secretsline 108
[Credential-related source omitted] - Network accessline 110
3. If that fails, regenerate the key at <https://app.heygen.com/api> - Network accessline 122
curl -sI "<URL>" | head -5 - Network accessline 172
**`failed` with `failure_message: "Failed to download video from url, please check the url is valid or the video is public"`** (verified empirically): Fails almost instantly on submit. Source URL was 401/403/404, returned HTML instead of a - Network accessline 173
Fails almost instantly on submit. Source URL was 401/403/404, returned HTML instead of a video, redirected to a login page, or had a presigned URL that already expired. HEAD-check first with `curl -sI "$URL"` — expect `200` + `Content-Type: - Network accessline 213
heygen video-translate proofreads srt update <proofread-id> \ -d '{"srt":{"type":"url","url":"https://example.com/proofread-edited.srt"}}' - Network accessline 214
-d '{"srt":{"type":"url","url":"https://example.com/proofread-edited.srt"}}' - Network accessline 217
Working host options: GitHub gists (raw URL), GitHub repo files (raw URL), S3/GCS with public-read or a presigned URL ≥2 h, Vercel/static hosts. The URL must serve `application/x-subrip` or `text/plain` with the SRT body — verify with `curl - Network accessline 255
2. **CLI version:** `heygen --version` returns v0.0.6 or newer 3. **Languages list:** `heygen video-translate languages list | jq '.data.languages | length'` returns >0 4. **Source URL reachable:** `curl -sI "<URL>" | head -1` returns `200` - Network accessline 256
3. **Languages list:** `heygen video-translate languages list | jq '.data.languages | length'` returns >0 4. **Source URL reachable:** `curl -sI "<URL>" | head -1` returns `200` 5. **Source MIME:** `curl -sI "<URL>" | grep -i content-type` - Network accessline 257
4. **Source URL reachable:** `curl -sI "<URL>" | head -1` returns `200` - Network accessline 258
5. **Source MIME:** `curl -sI "<URL>" | grep -i content-type` shows `video/...`
heygen-video/SKILL.md
- Broad permissionsline 1
Bash, WebFetch, Read, Write, mcp__heygen__* - Network accessline 21
or b-roll without a presenter, translating videos, TTS-only, or streaming avatars. argument-hint: "[topic_or_script] [--avatar avatar_id]" homepage: https://developers.heygen.com/docs/quick-start - Network accessline 22
argument-hint: "[topic_or_script] [--avatar avatar_id]" homepage: https://developers.heygen.com/docs/quick-start allowed-tools: Bash, WebFetch, Read, Write, mcp__heygen__* - Network accessline 23
homepage: https://developers.heygen.com/docs/quick-start - Access to secretsline 29
[Credential-related source omitted] - Access to secretsline 30
[Credential-related source omitted] - Network accessline 45
**Docs:** https://developers.heygen.com/docs/quick-start (API) · https://developers.heygen.com/cli (CLI) - Network accessline 91
[Credential-related source omitted] - Access to secretsline 91
[Credential-related source omitted] - Access to secretsline 92
[Credential-related source omitted] - Network accessline 93
[Credential-related source omitted] - Access to secretsline 93
[Credential-related source omitted] - Dangerous shell operationline 95
5. **Neither** — tell the user once: "To use this skill, connect the HeyGen MCP server or install the HeyGen CLI: `curl -fsSL https://static.heygen.ai/cli/install.sh | bash` then `heygen auth login`." - Network accessline 95
5. **Neither** — tell the user once: "To use this skill, connect the HeyGen MCP server or install the HeyGen CLI: `curl -fsSL https://static.heygen.ai/cli/install.sh | bash` then `heygen auth login`." - Network accessline 97
**Hard rules:** - **Never call `curl api.heygen.com/...`** — every mode routes through its own surface. - Network accessline 98
- **Never call `curl api.heygen.com/...`** — every mode routes through its own surface. - Network accessline 121
Plugin install (one-time, by the user): `openclaw plugins install clawhub:@heygen/openclaw-plugin-heygen`. Plugin docs: <https://github.com/heygen-com/openclaw-plugin-heygen>. - Network accessline 620
**⚠<U+FE0F> Always capture `session_id` immediately.** Session URL: `https://app.heygen.com/video-agent/{session_id}`. If lost, it is recoverable via `heygen video-agent list` (items include `session_id`, `created_at`, and `title`), but immediate - Network accessline 636
2. Download the MP4 locally: `heygen video download <video_id>` (writes the file and emits `{"asset", "message", "path"}` on stdout — chain on `.path`). 3. Send inline via message tool: `message(action:send, media:"<downloaded-path>", capti - Network accessline 638
4. Also share the HeyGen dashboard link for editing: `https://app.heygen.com/videos/<video_id>`
heygen-video/references/asset-routing.md
- Network accessline 62
{"type": "url", "url": "https://example.com/image.png"}
heygen-video/references/avatar-discovery.md
- Network accessline 4
finds an appropriate presenter (or skips presenter entirely) before calling the Video Agent. For *avatar creation*, see `heygen-avatar` and [`heygen-avatar/references/avatar-creation.md`](https://github.com/heygen-com/skills/blob/master/hey - Network accessline 6
[`heygen-avatar/references/avatar-creation.md`](https://github.com/heygen-com/skills/blob/master/heygen-avatar/references/avatar-creation.md). - Network accessline 113
If no existing avatar fits and the user wants one created, route to the `heygen-avatar` skill. See [`heygen-avatar/references/avatar-creation.md`](https://github.com/heygen-com/skills/blob/master/heygen-avatar/references/avatar-creation.md) - Network accessline 114
`heygen-avatar` skill. See [`heygen-avatar/references/avatar-creation.md`](https://github.com/heygen-com/skills/blob/master/heygen-avatar/references/avatar-creation.md) for the full creation API surface (photo / prompt / digital twin), file - Network accessline 115
[`heygen-avatar/references/avatar-creation.md`](https://github.com/heygen-com/skills/blob/master/heygen-avatar/references/avatar-creation.md) - Network accessline 131
heygen video create -d '{ "type": "image", "image": {"type": "url", "url": "https://example.com/headshot.jpg"}, - Network accessline 132
"type": "image", "image": {"type": "url", "url": "https://example.com/headshot.jpg"}, "script": "<script>", - Network accessline 133
"image": {"type": "url", "url": "https://example.com/headshot.jpg"}, - Network accessline 156
For voice *design* (semantic search by description) and the full voice selection workflow during avatar setup, see [`heygen-avatar/references/avatar-creation.md`](https://github.com/heygen-com/skills/blob/master/heygen-avatar/references/ava - Network accessline 158
[`heygen-avatar/references/avatar-creation.md`](https://github.com/heygen-com/skills/blob/master/heygen-avatar/references/avatar-creation.md).
heygen-video/references/official-prompt-guide.md
heygen-video/references/troubleshooting.md
- Access to secretsline 97
[Credential-related source omitted]
heygen-video/scripts/update-check.sh
- Executable scriptline 1
#!/usr/bin/env bash - Network accessline 23
VERSION_FILE="$SKILL_DIR/VERSION" LOCAL_SKILL_MD="$SKILL_DIR/SKILL.md" REMOTE_URL="${HEYGEN_REMOTE_URL:-https://raw.githubusercontent.com/heygen-com/skills/master/VERSION}" - Network accessline 25
REMOTE_URL="${HEYGEN_REMOTE_URL:-https://raw.githubusercontent.com/heygen-com/skills/master/VERSION}" - Dangerous shell operationline 29
rm -f "$CACHE_FILE" - Dangerous shell operationline 30
rm -f "$SNOOZE_FILE" - Dangerous shell operationline 104
rm -f "$MARKER_FILE" - Dangerous shell operationline 105
rm -f "$SNOOZE_FILE" - Network accessline 149
REMOTE="" REMOTE="$(curl -sf --max-time 5 "$REMOTE_URL" 2>/dev/null || true)" - Network accessline 150
REMOTE="$(curl -sf --max-time 5 "$REMOTE_URL" 2>/dev/null || true)"
platforms/nanoclaw/heygen/SKILL.md
- Network accessline 13
[Credential-related source omitted] - Access to secretsline 13
[Credential-related source omitted] - Dangerous shell operationline 14
- `heygen` CLI — install: `curl -fsSL https://static.heygen.ai/cli/install.sh | bash`. Verify: `heygen auth status`. - Network accessline 14
- `heygen` CLI — install: `curl -fsSL https://static.heygen.ai/cli/install.sh | bash`. Verify: `heygen auth status`. - Access to secretsline 99
[Credential-related source omitted]
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Declared and executed: 1 fact
- Contacts raw.githubusercontent.com, which SKILL.md, the README and the plugin manifest do not mentionheygen-video/scripts/update-check.sh:25High confidence
Signal confidence: 134 facts
- Broad permissions in the frontmatter of the SKILL.mdheygen-avatar/SKILL.md:1High confidence
- Access to secrets in prose of the SKILL.md: a variable, placeholder or call, not a stored valueheygen-avatar/SKILL.md:90Low confidence
- Dangerous shell operation in prose of the SKILL.mdheygen-avatar/SKILL.md:92Low confidence
- Network access in prose of the SKILL.mdheygen-avatar/SKILL.md:92Low confidence
- Network access in prose of the SKILL.mdheygen-avatar/SKILL.md:96Low confidence
- Network access in prose of the SKILL.mdheygen-avatar/SKILL.md:97Low confidence
- Network access in prose of the SKILL.mdheygen-avatar/SKILL.md:265Low confidence
- Network access in prose of the SKILL.mdheygen-avatar/SKILL.md:266Low confidence
- Network access in code of documentationheygen-avatar/references/asset-routing.md:62Low confidence
- Network access in prose of documentationheygen-avatar/references/avatar-creation.md:9Low confidence
- Network access in prose of documentationheygen-avatar/references/avatar-creation.md:10Low confidence
- Network access in code of documentationheygen-avatar/references/avatar-creation.md:40Low confidence
- Network access in code of documentationheygen-avatar/references/avatar-creation.md:41Low confidence
- Network access in code of documentationheygen-avatar/references/avatar-creation.md:42Low confidence
- Network access in code of documentationheygen-avatar/references/avatar-creation.md:94Low confidence
- Network access in code of documentationheygen-avatar/references/avatar-creation.md:95Low confidence
- Access to secrets in prose of documentationheygen-avatar/references/troubleshooting.md:97Low confidence
- Broad permissions in the frontmatter of the SKILL.mdheygen-translate/SKILL.md:1High confidence
- Network access in the frontmatter of the SKILL.mdheygen-translate/SKILL.md:28Low confidence
- Network access in the frontmatter of the SKILL.mdheygen-translate/SKILL.md:29Low confidence
- Network access in the frontmatter of the SKILL.mdheygen-translate/SKILL.md:30Low confidence
- Access to secrets in the frontmatter of the SKILL.mdheygen-translate/SKILL.md:36Low confidence
- Access to secrets in the frontmatter of the SKILL.mdheygen-translate/SKILL.md:37Low confidence
- Access to secrets in prose of the SKILL.md: a variable, placeholder or call, not a stored valueheygen-translate/SKILL.md:68Low confidence
- Network access in prose of the SKILL.mdheygen-translate/SKILL.md:69Low confidence
- Access to secrets in prose of the SKILL.md: a variable, placeholder or call, not a stored valueheygen-translate/SKILL.md:69Low confidence
- Dangerous shell operation in prose of the SKILL.mdheygen-translate/SKILL.md:71Low confidence
- Network access in prose of the SKILL.mdheygen-translate/SKILL.md:71Low confidence
- Network access in prose of the SKILL.mdheygen-translate/SKILL.md:77Low confidence
- Network access in prose of the SKILL.mdheygen-translate/SKILL.md:78Low confidence
- Network access in prose of the SKILL.mdheygen-translate/SKILL.md:79Low confidence
- Network access in prose of the SKILL.mdheygen-translate/SKILL.md:87Low confidence
- Network access in code of the SKILL.mdheygen-translate/SKILL.md:227High confidence
- Network access in code of the SKILL.mdheygen-translate/SKILL.md:228High confidence
- Network access in code of the SKILL.mdheygen-translate/SKILL.md:261High confidence
- Network access in code of the SKILL.mdheygen-translate/SKILL.md:262High confidence
- Network access in code of the SKILL.mdheygen-translate/SKILL.md:263High confidence
- Network access in code of the SKILL.mdheygen-translate/SKILL.md:278High confidence
- Network access in code of the SKILL.mdheygen-translate/SKILL.md:280High confidence
- Network access in code of documentationheygen-translate/references/asset-routing.md:12Low confidence
- Network access in code of documentationheygen-translate/references/asset-routing.md:53Low confidence
- Network access in prose of documentationheygen-translate/references/asset-routing.md:64Low confidence
- Network access in prose of documentationheygen-translate/references/asset-routing.md:65Low confidence
- Network access in prose of documentationheygen-translate/references/asset-routing.md:66Low confidence
- Network access in code of documentationheygen-translate/references/asset-routing.md:74Low confidence
- Network access in code of documentationheygen-translate/references/asset-routing.md:75Low confidence
- Network access in code of documentationheygen-translate/references/asset-routing.md:104Low confidence
- Network access in code of documentationheygen-translate/references/asset-routing.md:106Low confidence
- Network access in prose of documentationheygen-translate/references/asset-routing.md:178Low confidence
- Network access in code of documentationheygen-translate/references/proofreads-workflow.md:127Low confidence
and 84 more
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Native | Manifest .claude-plugin/marketplace.json | .claude/skills/<skill-name>/ |
| Codex | Compatible | Standard SKILL.md heygen-avatar/SKILL.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md heygen-avatar/SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md heygen-avatar/SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md heygen-avatar/SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md heygen-avatar/SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.