Article / news → short
Take any URL with a substantial article body and produce a vertical short with voiceover + auto-cut stock b-roll + captions.
When to use this skill
- Source is a news article, long-form blog, press release, or essay.
- Output goal: an edited summary, voiceover + visuals, 30–60 s.
- The user does NOT want a talking-head (use
revid-blog-to-avatar-videofor that). - For e-commerce product pages prefer
revid-shopify-product-promo— same workflow but tuned defaults.
Inputs
| Field | Required | Notes |
|---|---|---|
url | yes | Article URL |
aspectRatio | no | Default 9:16 |
targetDuration | no | Default 45 s |
language | no | Auto-detected; override for non-English |
Step-by-step
- Validate the URL.
- POST the payload below.
- Poll
/status(canonical loop in the Polling section below). - 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": "{ARTICLE_URL}",
"scrapingPrompt": "Summarize the article body. Skip ads, related links, navigation, and footer."
},
"aspectRatio": "9:16",
"voice": { "enabled": true, "stability": 0.6, "speed": 1.0, "language": "en-US" },
"captions": { "enabled": true, "position": "middle", "autoCrop": true },
"music": { "enabled": true, "syncWith": "beats" },
"media": {
"type": "stock-video",
"density": "medium",
"animation": "soft",
"quality": "pro",
"videoModel": "pro",
"imageModel": "good"
},
"options": {
"targetDuration": 45,
"summarizationPreference": "summarize",
"soundEffects": true,
"hasToGenerateCover": true,
"coverTextType": "headline"
},
"render": { "resolution": "1080p", "frameRate": 30 }
}
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
| Symptom | Fix |
|---|---|
scrape failed | Pre-fetch the article body server-side and switch to revid-script-to-video with the body in source.text. |
| Off-topic stock visuals | Pass a tighter scrapingPrompt (e.g. "Focus on the financial markets angle, not the company history") and lower media.density: "low". |
| Wrong language detected | Set voice.language and options.language explicitly. |
| Captions clip subjects | captions.position: "top". |
See also
revid-shopify-product-promorevid-news-to-daily-shortfor generating news from a topic vs summarizing a known URL.revid-pdf-to-videofor PDFs instead of HTML.