Quick overview
Turn your newest unused RSS blog post into a branded vertical video. OpenRouter writes a source-grounded script, ElevenLabs generates narration and timings, and Zvid assembles stock footage and captions. Run manually or daily, then review the finished MP4 before publishing.
How it works
- Runs every day at 9am (or starts from a manual run) and loads the workflow configuration values.
- Reads the configured RSS feed, selects the newest post, and stops if the same post was already processed in a previous production run.
- Fetches the full blog post page when available and builds a constrained prompt using the page text (or falls back to RSS text) for script generation.
- Calls OpenRouter to generate a structured JSON script (hook, 3–5 points, CTA, visuals queries, and music tag) and validates it into a clean narration string.
- Searches Zvid stock video for each point’s visual query, selects a best-fit clip per scene, and searches Zvid stock audio for background music while enforcing a file-size cap.
- Generates a voiceover with word-level timestamps using ElevenLabs, uploads the MP3 to Zvid, and builds a branded Zvid project JSON with timed captions.
- Validates the video and returns a credit quote. The default dryRun=false branch submits a paid render, polls for completion and provides a downloadable MP4. With dryRun=true, it attempts an editor draft using the documented HTTP fallback; account limits can prevent saving the draft.
Setup
- Install
@zvid/n8n-nodes-zvid from Settings → Community nodes before configuring Zvid credentials. A workspace owner/admin may need to install it.
- Create a Zvid API credential using https://app.zvid.io/api-keys and Base URL
https://api.zvid.io. Select it on every Zvid node, Upload voiceover and Save draft to editor. Both HTTP steps use Predefined Credential Type → Zvid API.
- Add an OpenRouter API credential for the OpenRouter chat completion request and an ElevenLabs HTTP Header Auth credential with
xi-api-key for the text-to-speech request.
- Update the Config values, especially
feedUrl, brandName, colors/fonts, CTA text, and optionally dryRun, targetSeconds, and the ElevenLabs voiceId.
- Run Test manually and review the video, factual claims and attribution before activating the daily schedule. Verify its time and timezone. dryRun=false spends Zvid render credits; dryRun=true skips rendering, but OpenRouter and ElevenLabs may still charge. Only completed production runs remember the newest post GUID.
Requirements
- An accessible RSS or Atom feed; Zvid, OpenRouter and ElevenLabs accounts with API access; sufficient service credits; an ElevenLabs voice supported by your plan.
Customization
- Adjust Config branding, colors, voiceId, targetSeconds and CTA. Missing footage becomes a branded text scene, and unavailable music is omitted. Social uploading is not included; add your preferred publishing step after reviewing the video.
Additional info
Tutorial and source
The YouTube player is embedded in the yellow overview on the workflow canvas. Published Zvid node 0.1.8 does not expose multipart uploads or Project Create, so those two steps use HTTP Request with the same Zvid API credential. Supported stock, validation, rendering and status operations use the Zvid node.
For help: https://zvid.io/contact