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

openEuler RPM Packaging

🚨 openEuler 专项 RPM 打包规范。任何涉及 openEuler 打包的场景,都必须读取此技能。**openEuler 规则与通用 RPM 不同**:5 包拆分规则、专用 changelog 格式(Type/ID/SUG/DESC)、openEuler 专用宏、检视原则。不适用于其他发行版。

Registry SourceRecently Updated
General

Tianyi Cloud Game

天翼云游戏搜索与启动。当用户想玩云游戏、搜索游戏、或提到天翼云游戏时使用。支持自然语言匹配游戏并快速启动。

Registry SourceRecently Updated
General

Ugc Ad Script Maker

Creates timed, authentic UGC-style ad scripts with strong hooks, natural product proof, and varied CTAs for TikTok, Reels, Shorts, FB, and Snapchat.

Registry SourceRecently Updated
General

Campaign Angle Spark

Generates and scores unique, relevant campaign angles from product briefs, recommending targeted marketing hooks and test priorities without generic templates.

Registry SourceRecently Updated