revid-blog-to-avatar-video

Turn a blog post URL into a talking-head avatar video — the avatar reads a summarized script of the post against a clean background. Use when the user wants a personal/expert delivery vs an edited promo.

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "revid-blog-to-avatar-video" with this command: npx skills add api00/revid-blog-to-avatar-video

Blog post → talking-head avatar video

Take any blog/article URL and produce a vertical (or square) talking-head video with a chosen avatar reading a summarized version of the post.

When to use this skill

  • Source is a blog post / opinion piece / explainer with substantial body text.
  • Output should feel like a person delivering the take, not an edited promo with stock b-roll.
  • An avatar (image URL or characterId) is available, or the user accepts the default avatar.
  • For an edited short with stock visuals, use revid-article-to-short instead.

Inputs

FieldRequiredNotes
urlyesBlog post URL
avatar.url or characterIds[]yesThe face. Either an image URL or a saved consistent character ID (see character mgmt).
aspectRationoDefault 9:16. Use 1:1 for LinkedIn.
voiceIdnoMatch it to the avatar's tone if known.
targetDurationnoDefault 60 (s) — talking heads can run longer.

Step-by-step

  1. Validate the URL.
  2. If the user gave an avatar image URL, set avatar.url. If they gave a saved character ID, set characterIds: [id] (and leave avatar omitted).
  3. POST the payload below.
  4. Poll /status (canonical loop in the Polling section below).
  5. Return videoUrl.

API call template

POST /api/public/v3/render
Host: www.revid.ai
Content-Type: application/json
key: $REVID_API_KEY
{
  "workflow": "article-to-video",
  "source": {
    "url": "{BLOG_URL}",
    "scrapingPrompt": "Extract the article body. Skip header, navigation, related posts, and footer."
  },
  "aspectRatio": "9:16",
  "avatar": {
    "enabled": true,
    "url": "{AVATAR_IMAGE_URL}",
    "removeBackground": true,
    "imageModel": "good"
  },
  "voice": {
    "enabled": true,
    "voiceId": "aria-en-us",
    "stability": 0.65,
    "speed": 1.0,
    "language": "en-US",
    "enhanceAudio": true
  },
  "captions": { "enabled": true, "position": "bottom", "autoCrop": true },
  "music":    { "enabled": false },
  "media": {
    "type": "moving-image",
    "density": "low",
    "animation": "soft",
    "placeAvatarInContext": true
  },
  "options": {
    "targetDuration": 60,
    "summarizationPreference": "summarize",
    "hasToGenerateCover": true
  },
  "render": { "resolution": "1080p", "frameRate": 30 }
}

Notes:

  • placeAvatarInContext: true composites the avatar over a relevant background (vs a plain green-screen feel).
  • media.density: "low" keeps cuts minimal so the talking head can carry the video.
  • music.enabled: false is the default — voice-driven content reads better without competing audio.

Consistent characters

If the user wants the same face across many posts, create a character once and reuse the ID:

# 1. Create character
curl -s https://www.revid.ai/api/public/v3/consistent-characters \
  -H "Content-Type: application/json" \
  -H "key: $REVID_API_KEY" \
  -d '{ "name": "Maya", "imageUrl": "https://cdn.example.com/maya.jpg" }'
# → { "id": "ch_…" }

# 2. Use it in renders
{ "characterIds": ["ch_…"], "avatar": { "enabled": true } }

List existing characters with GET /api/public/v3/consistent-characters.

Examples

Polling

After POST /render, poll until status === "ready":

PID="<pid-from-render>"
while :; do
  R=$(curl -fsSL "https://www.revid.ai/api/public/v3/status?pid=$PID" \
        -H "key: $REVID_API_KEY")
  S=$(echo "$R" | jq -r .status)
  case "$S" in
    ready)  echo "$R" | jq .; break ;;
    failed) echo "FAILED: $R"; exit 1 ;;
    *)      sleep 5 ;;
  esac
done

In production prefer setting webhookUrl in the request body and skip polling.

Failure modes

SymptomFix
Avatar lip-sync drifts on long copyLower targetDuration to 45 s, or switch summarizationPreference: "summarize" (already on).
Avatar background bleeds into videoSet avatar.removeBackground: true (default). For stubborn cases, pre-process the avatar image to a transparent PNG.
Background visuals distract from facemedia.density: "low" and media.animation: "soft" (already on). For pure plain background, set media.type: "custom" + media.useOnlyProvided: true with a single neutral asset.
Voice doesn't match the avatarSet voice.voiceId explicitly. The default voice is gendered female English — always override for other languages or personas.
scrape failedSame as in revid-article-to-short: pre-scrape the post and switch to script-to-video with the avatar block intact.

See also

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

gitlab-mr-reviewer

当需要审核 GitLab 合并请求、检查 MR diff 风险、发布 GitLab 审查评论、执行 approve/request changes,或发送 MR 审查通知时使用。

Registry SourceRecently Updated
1490whrime
General

Voice Transcriber Toolkit

Voice-to-Text Transcription Toolkit - 语音识别转文字,支持Whisper/Vosk引擎,批量处理,字幕导出 | Speech recognition & transcription with Whisper/Vosk engines, batch processing, su...

Registry SourceRecently Updated
General

Gigo Lobster Taster

🦞 GIGO · gigo-lobster-taster: 正式试吃模式:跑完整评测,默认上传云端、生成个人结果页并进入排行榜。 Triggers: 试吃我的龙虾 / 品鉴我的龙虾 / lobster taste / lobster taster.

Registry SourceRecently Updated
General

Gigo Lobster Local

🦞 GIGO · gigo-lobster-local: 本地模式:跑完整评测,但不上云、不注册个人结果页,证书二维码回到官网首页。 Triggers: 本地试吃龙虾 / 离线试吃龙虾 / local lobster taste / offline lobster taste.

Registry SourceRecently Updated