calesthio/d-id-avatar-video
Use D-ID to plan, generate, stream, localize, and QA avatar/talking-head videos, including V2 Photo Avatar Talks, V3 Pro/Instant Avatar Clips, V4 Expressive Avatar Scenes, D-ID Agents, voices, consent, lifecycle, safety, and artifact custody.
npx skills add https://github.com/calesthio/generative-media-skills --skill d-id-avatar-video
Use this skill when the selected provider is D-ID or when the user asks for a D-ID talking avatar, photo-to-speaking-video, presenter clip, expressive avatar, interactive visual agent, real-time avatar stream, or D-ID-powered localization/support/training workflow.
Do not treat D-ID as a general cinematic video generator. It is primarily for human-presenter video: a face or presenter speaks text or audio with lip sync. For scenes that need object interaction, product handling, full-body action choreography, multi-shot narrative motion, or cinematic camera movement, use a broader video-generation or composition pipeline and use D-ID only for the presenter segments.
Facts in this skill were verified against official D-ID documentation and policies on 2026-07-10. Re-check live docs before quoting prices, enabled models, supported languages, moderation categories, endpoint schemas, or plan limits in user-facing commitments.
Pick the route from the deliverable, not from habit:
| Need | D-ID route | Use when | Avoid when |
|---|---|---|---|
| A specific still portrait speaks | V2 Photo Avatar / Talks API (POST /talks) | The user supplies or owns a clear face image; personalization matters more than body motion. | The face is low-resolution, side-facing, celebrity-like, or permission is uncertain. |
| A polished stock presenter speaks | V3 Pro Avatar / Clips API (POST /clips) | Marketing, learning, onboarding, support snippets, or brand explainers need Full-HD presenter footage and natural presenter movement. | The user needs a specific person's identity. |
| A reusable custom video avatar | V3 Instant Avatar or V4 Expressive Avatar creation | The subject can complete consent verification and the project needs many videos with one owned avatar. | There is no consent video or the source footage is poor. |
| Expressive emotion and next-generation avatar behavior | V4 Expressive Avatar / Scenes API (POST /scenes) | Sentiment/emotion, more human facial detail, expressive training/support/sales presenters, or V4 agents are required. | A simple one-off photo-to-video clip is enough. |
| Live conversation | D-ID Agents, Agents SDK, Streams API, Embed SDK | The output is a website/chat/support/training agent with real-time WebRTC/LiveKit avatar responses. | The deliverable is a finished MP4 only. |
| Bulk personalization | D-ID API jobs or Studio campaigns, depending on the user's tooling | Sales outreach, onboarding, L&D certificates, course feedback, or localized variants need many similar videos. | Each video needs bespoke editing or different visual design. |
Official docs describe D-ID video APIs as supporting avatar videos from images, text, and audio, with V4 Expressive Avatars, V3 Pro Avatars, V3 Instant Avatars, and V2 Photo Avatars as the main video families. The V2 Talks endpoint transforms a source photo into a speaking avatar; the V3 Clips endpoint uses presenter avatars and optional drivers; V4 Scenes use created avatars. Source: D-ID Quickstart, Create a talk, Create a clip, Create a Scene, verified 2026-07-10.
Before any paid or irreversible generation:
GET /credits for remaining and total credit items. Verified 2026-07-10.result_url, where webhooks land, and where final MP4s and metadata will be stored after download.Use a front-facing, well-lit image with one clearly visible face. Crop for a stable head-and-shoulders composition with room around the chin and hair. Avoid extreme side angles, heavy occlusion, sunglasses, open mouths, busy foreground objects, and images that imply a real person without permission.
Production heuristics:
Use GET /clips/presenters to list supported V3 Pro Avatars and their presenter_id values. D-ID's docs also note that V3 Pro Avatars are used with /clips and that custom V3 Pro Avatars based on the user's own video footage require contacting D-ID. Verified 2026-07-10.
Choose a presenter by:
Do not claim that the presenter can hold products, point to arbitrary UI elements, walk around a set, or interact physically with props unless that capability is explicitly available in the chosen D-ID presenter/driver workflow.
For V3 Instant Avatars, D-ID docs state that a consent verification process is required before unlimited videos can be generated with that avatar. For Express Avatars, POST /scenes/avatars accepts a source_url for the source video and a consent_id for a valid consent video; POST /consents creates a consent flow for supported languages. Verified 2026-07-10.
Capture custom avatar source footage as if it were a miniature talent shoot:
If consent fails or is missing, do not work around it with a still photo, lookalike, or cloned voice. Ask for valid consent or switch to a stock presenter.
D-ID can animate from text or audio scripts in relevant endpoints; /tts/voices lists voices and can be filtered by provider: Amazon, Microsoft, Azure OpenAI, ElevenLabs, or Google. Some endpoints include an x-api-key-external header for bringing an external ElevenLabs API key for IVC voices. Verified 2026-07-10.
Write for lip sync and trust:
Prefer pre-rendered audio when:
When using audio upload, D-ID's POST /audios stores an uploaded audio/video input temporarily, converts the result to WAV at 16 kHz, supports audio/ and video/ MIME types, limits the file to 6 MB, and stores it for 24-48 hours unless routed differently by the endpoint parameters. Verified 2026-07-10. Download and preserve any source audio and generated result in your own project storage; do not rely on temporary upload URLs as the only copy.
Use D-ID's async job model deliberately:
source_url.presenter_id and optionally driver_id.avatar_id; Express Avatar creation uses POST /scenes/avatars.script as text or audio, with voice/provider configuration appropriate to the endpoint.name and non-sensitive user_data for traceability. Never put secrets, private user data, or raw customer PII in user_data; D-ID docs describe it as echoed into responses and webhooks.GET endpoint (/talks/{id}, /clips/{id}, or scenes equivalent) until completion.result_url, use a controlled HTTPS destination or presigned URL with the right permissions. Otherwise, download the returned video URL promptly into the project's asset store.Common endpoint facts, verified 2026-07-10:
POST /talks creates a V2 talking avatar video from a source image/studio actor plus a required text or audio script; it accepts config, user_data, name, webhook, and result_url; failures may include auth, insufficient credits, permission, and moderation errors.POST /clips creates a V3 presenter clip with presenter_id, optional driver_id, required text/audio script, config, presenter_config, background, user_data, name, webhook, and result_url; failures may include auth, credits, permissions, and image/text/audio moderation.POST /scenes/avatars creates an Express Avatar from a source video, optional valid consent_id, optional green-screen flag, webhook, name, and user_data.POST /scenes creates a scene using an avatar_id and required text/audio script; background color is only for avatars with green screen background.GET /tts/voices lists/filter voices by provider.GET /credits returns credit items with remaining/total credits and expiration.Use Agents when the user needs an interactive face, not a static MP4. D-ID docs describe Agents as autonomous AI assistants that answer from owner-uploaded knowledge and perform roles for business or individual use cases; common roles include marketing, customer engagement, education, and training. Verified 2026-07-10.
Agent production is a product design task, not just avatar generation:
D-ID's Agents SDK supports Talks (V2) and Clips (V3) via WebRTC streaming, and Expressives (V4) via LiveKit-based streaming with microphone input and always-on fluent mode. The SDK is front-end oriented; Agent and Knowledge creation should be handled through the Agents API or Studio. Verified 2026-07-10.
Pause and resolve before generation when any of these are true:
User-facing disclosure should be plain: "This video uses an AI-generated avatar/lip-sync produced with D-ID." Keep the disclosure in metadata, captions, page copy, or intro/outro as appropriate to the distribution channel and applicable law.
Review the final MP4 at normal speed, half speed for lip sync, and in the target layout/platform crop.
Must-pass checks:
Common failure modes and repairs:
GET /credits, plan/API key status, endpoint permissions, and whether external TTS headers are configured correctly.user_data.Intent: create a 35-second welcome video for a new customer using a portrait they provided and consented to use.
Route: V2 Photo Avatar / Talks, because the specific person's image matters and a simple head-and-shoulders delivery is enough.
Preflight:
Example script:
> Hi Maya, welcome to Northstar Analytics. I'm glad you're here. In the next three minutes, we'll connect your dashboard, invite your team, and set your first weekly report. If anything feels unclear, use the help button in the lower right. Let's get you from setup to insight today.
Example API-shape plan:
{
"endpoint": "POST https://api.d-id.com/talks",
"body": {
"source_url": "https://your-controlled-storage.example/onboarding/maya-approved-headshot.jpg",
"script": {
"type": "text",
"input": "Hi Maya, welcome to Northstar Analytics...",
"provider": "microsoft",
"voice_id": "choose-after-GET-/tts/voices"
},
"name": "maya-onboarding-welcome-v1",
"user_data": "project=northstar-onboarding;variant=maya-v1",
"webhook": "https://your-webhook.example/did/jobs",
"result_url": "https://your-presigned-destination.example/maya-onboarding.mp4"
}
}
Why this structure works: the still portrait is the differentiator, the script is short and direct, user_data is non-sensitive, and the webhook/result path supports custody.
Expected result: a close-up talking avatar MP4 suitable for an onboarding page.
Likely fixes: if "Northstar" is mispronounced, use a voice with better English business diction, phonetic spelling, or pre-rendered audio.
Intent: create a 60-second compliance microlearning intro without using any real employee's likeness.
Route: V3 Pro Avatar / Clips, because a stock presenter avoids employee likeness risk and improves body/presenter movement over a single photo.
Preflight:
GET /clips/presenters and pick a presenter with neutral wardrobe and background.Example script:
> Before you approve a vendor invoice, pause for three checks. First, confirm the purchase order matches the invoice amount. Second, verify the vendor name and payment details against the approved vendor record. Third, look for urgency language that pressures you to skip review. If any detail feels off, stop and route it to Finance Operations.
Example API-shape plan:
{
"endpoint": "POST https://api.d-id.com/clips",
"body": {
"presenter_id": "select-from-GET-/clips/presenters",
"script": {
"type": "text",
"input": "Before you approve a vendor invoice...",
"provider": "amazon",
"voice_id": "choose-after-GET-/tts/voices"
},
"background": {
"color": "#F6F7FB"
},
"name": "invoice-fraud-training-intro-v1",
"user_data": "course=invoice-fraud;module=intro;version=1",
"webhook": "https://your-webhook.example/did/jobs"
}
}
Expected result: a professional presenter clip that can be placed before slides or interactive quiz content.
Likely fixes: if the presenter's gestures feel too energetic for compliance, choose a calmer presenter/driver or shorten the script to reduce overacting.
Intent: deploy a visual agent that answers product setup questions on a documentation site.
Route: D-ID Agent with Embed or Agents SDK, not a pre-rendered clip.
Design:
QA:
Expected result: an embedded AI support avatar with voice/video/chat that can answer documentation-grounded questions and escalate safely.
Primary sources used and verified 2026-07-10:
Take calesthio/d-id-avatar-video from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.