Blog to Avatar Video

v1.1.1

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...

0· 42·0 current·0 all-time

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for api00/revid-blog-to-avatar-video.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "Blog to Avatar Video" (api00/revid-blog-to-avatar-video) from ClawHub.
Skill page: https://clawhub.ai/api00/revid-blog-to-avatar-video
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Config paths to check: REVID_API_KEY
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Bare skill slug

openclaw skills install revid-blog-to-avatar-video

ClawHub CLI

Package manager switcher

npx clawhub@latest install revid-blog-to-avatar-video
Security Scan
Capability signals
Requires sensitive credentials
These labels describe what authority the skill may exercise. They are separate from suspicious or malicious moderation verdicts.
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
Name/description map to the actions in SKILL.md: the skill posts a payload to revid.ai to render an article-to-video workflow. The single required config (REVID_API_KEY) is appropriate for a 3rd‑party rendering service. No unrelated credentials, binaries, or system paths are requested.
Instruction Scope
The SKILL.md stays within scope: it validates a URL, builds a render payload, POSTs to revid.ai, and polls status (or uses webhooks). It does not instruct reading arbitrary local files or gathering other credentials. Minor inconsistencies: example run.sh assumes curl and jq are available (SKILL metadata lists no required binaries); the examples also demonstrate creating/listing 'consistent characters' which will upload image URLs to the service. The skill will transmit the blog URL (and scraped article text) and any avatar image URL to revid.ai — expected for this functionality but a privacy consideration.
Install Mechanism
This is an instruction-only skill with no install spec and no downloads. No install-related risk indicators (no remote archives or third-party package installs).
Credentials
The only required secret/config is REVID_API_KEY (declared in SKILL.md metadata). That is proportionate for a 3rd-party rendering API. Two minor points: the registry summary lists 'Required env vars: none' but SKILL.md requires REVID_API_KEY as a config — a small metadata mismatch; and using the skill will cause article text and avatar image URLs to be sent to revid.ai, so private/confidential content will be transmitted to that external service.
Persistence & Privilege
No 'always: true' or other elevated persistence. The skill is user-invocable and can be invoked autonomously (platform default), which is expected for a connector skill. It does not modify other skills or request system-wide configuration.
Assessment
This skill appears to do what it says: it sends the blog URL (and the scraped article text) plus any avatar image URL to the revid.ai API and returns a video URL. Before installing: (1) Confirm you trust the revid.ai service and the source/owner of this skill (registry metadata has no homepage); (2) Treat REVID_API_KEY like a secret — confirm its permissions and rotate it if shared; (3) Avoid submitting confidential or private content (the full article text and avatar image URLs will be transmitted to revid.ai); (4) Note the examples assume curl and jq are available if you run the provided scripts; and (5) Ensure you have rights to use any avatar images or likenesses you upload. If you want greater assurance, ask the publisher for a homepage, source repo, or a signed provenance statement about the skill.

Like a lobster shell, security has layers — review code before you run it.

Runtime requirements

ConfigREVID_API_KEY
latestvk970by5wjfz2v6fjt8zk9zdxn585jet6
42downloads
0stars
2versions
Updated 1d ago
v1.1.1
MIT-0

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

Comments

Loading comments...