HeyGen + Blotato: avatar videos published daily
You start the week with good intentions. Then content slips, because finding a topic, writing a script, generating a video, and publishing everywhere takes more time than anyone admits. By the time you’re done, you’re tired. And the “daily” plan is already off track.
This hits marketing managers who need steady output, but solo founders and content-focused agencies feel it too. With this HeyGen Blotato automation, you can turn fresh RSS news into a vertical avatar video and publish it automatically, every day.
Below, you’ll see how the workflow runs, what it produces, and what you need to make it reliable (without turning your morning into a production sprint).
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: HeyGen + Blotato: avatar videos published daily
flowchart LR
subgraph sg0["Schedule Flow"]
direction LR
n0["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Upload to Blotato1"]
n1@{ icon: "mdi:play-circle", form: "rounded", label: "Schedule Trigger1", pos: "b", h: 48 }
n2@{ icon: "mdi:robot", form: "rounded", label: "AI Agent1", pos: "b", h: 48 }
n3@{ icon: "mdi:cog", form: "rounded", label: "Wait6", pos: "b", h: 48 }
n4@{ icon: "mdi:brain", form: "rounded", label: "Write Script1", pos: "b", h: 48 }
n5@{ icon: "mdi:swap-vertical", form: "rounded", label: "Setup Heygen1", pos: "b", h: 48 }
n6["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Get Avatar Video1"]
n7@{ icon: "mdi:swap-vertical", form: "rounded", label: "Prepare for Publish1", pos: "b", h: 48 }
n8@{ icon: "mdi:robot", form: "rounded", label: "Write Long Caption1", pos: "b", h: 48 }
n9@{ icon: "mdi:robot", form: "rounded", label: "Write Short Caption1", pos: "b", h: 48 }
n10["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Create Avatar Video1"]
n11@{ icon: "mdi:robot", form: "rounded", label: "Write Title1", pos: "b", h: 48 }
n12["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>TikTOK Publish via Blotato1"]
n13["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>TikTOK Publish via Blotato"]
n14["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>TikTOK Publish via Blotato2"]
n15["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>TikTOK Publish via Blotato3"]
n16["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>TikTOK Publish via Blotato4"]
n17["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>TikTOK Publish via Blotato5"]
n18["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>TikTOK Publish via Blotato6"]
n19["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>TikTOK Publish via Blotato7"]
n20@{ icon: "mdi:cog", form: "rounded", label: "Read AI News Feed", pos: "b", h: 48 }
n21@{ icon: "mdi:cog", form: "rounded", label: "Read AI News Feed1", pos: "b", h: 48 }
n3 --> n6
n2 --> n8
n11 --> n9
n5 --> n10
n4 -.-> n2
n6 --> n7
n20 -.-> n2
n1 --> n2
n21 -.-> n2
n0 --> n12
n0 --> n13
n0 --> n14
n0 --> n15
n0 --> n16
n0 --> n17
n0 --> n18
n0 --> n19
n8 --> n11
n10 --> n3
n7 --> n0
n9 --> n5
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n1 trigger
class n2,n8,n9,n11 ai
class n4 aiModel
class n0,n6,n10,n12,n13,n14,n15,n16,n17,n18,n19 api
class n12 disabled
class n13 disabled
class n14 disabled
class n15 disabled
class n16 disabled
class n17 disabled
class n18 disabled
class n19 disabled
classDef customIcon fill:none,stroke:none
class n0,n6,n10,n12,n13,n14,n15,n16,n17,n18,n19 customIcon
The Problem: Daily Video Posting Breaks on the Small Stuff
Daily content sounds simple until you’re the one doing it. You need a topic that won’t flop, a script that fits 30 seconds, captions that match your brand, and a video that looks consistent. Then comes the busywork: exporting files, waiting on renders, uploading, rewriting captions for each platform, and double-checking you didn’t paste the wrong hashtags. Miss a day and momentum dips. Miss three days and you’re basically “starting over” again.
It adds up fast. Here’s where the process usually cracks.
- Picking a story manually turns into 30 minutes of doom-scrolling and second-guessing.
- Scripts and captions drift over time, so your content stops sounding like you.
- Rendering and status-checking becomes a constant tab refresh, which is oddly distracting.
- Publishing to multiple channels means repeating the same upload steps again and again.
The Solution: RSS → Script → HeyGen Video → Blotato Publishing
This workflow turns “daily posting” into a scheduled background task. At a set time each day (default is 10:00), it pulls fresh items from multiple RSS feeds focused on AI/LLM news. An AI agent reviews what’s new, chooses the most likely-to-perform story, and writes a tight 30-second script. From that same source, it also generates a short video title, a short caption, and a longer caption with hashtags. Then HeyGen creates a vertical 9:16 avatar video using your chosen avatar and voice. Once the render is ready, Blotato uploads the video plus captions, with optional platform publishing nodes ready to enable when you want them.
The workflow starts on a daily schedule. It moves through story selection and caption creation, then hands off to HeyGen for video generation. Finally, Blotato handles the upload and post routing so you’re not doing manual publishing loops.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you post one short avatar news update every weekday to 5 channels (TikTok, Instagram, YouTube Shorts, Facebook, and one extra). Manually, you might spend about 10 minutes per channel just uploading and pasting captions, plus 30–40 minutes to pick a story and write everything. That’s roughly 1.5–2 hours a day. With this workflow, you spend maybe 10 minutes setting the topic and brand voice once, then the daily run is automated: the video renders in the background and Blotato uploads when it’s ready.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- HeyGen for avatar video generation.
- Blotato to upload and route posts to platforms.
- OpenAI API key (get it from the OpenAI API dashboard).
Skill level: Intermediate. You’ll connect a few APIs, paste IDs (avatar_id, voice_id, platform IDs), and test one full run end-to-end.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
A daily schedule kicks things off. The automation runs at 10:00 by default, but you can change the time or frequency to match your posting cadence.
RSS stories are collected and filtered. The workflow reads multiple AI/LLM news feeds, then passes the combined set into an AI agent that selects one story to turn into a short, punchy update.
Script and captions are generated together. OpenAI nodes create a 30-second script, a short title, a short caption, and a longer caption with hashtags so the final post feels cohesive.
HeyGen produces the avatar video, then Blotato publishes. n8n sends your avatar_id, voice_id, and any background settings to HeyGen, waits while rendering completes, then uploads the finished vertical video and captions to Blotato. Optional publishing nodes for TikTok, Instagram, YouTube, Facebook, and more are already there (disabled until you’re ready).
You can easily modify the news topic to a different niche based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Scheduled Trigger
Set the workflow to run automatically on a schedule so the content pipeline starts without manual input.
- Add the Scheduled Automation Start node as your trigger.
- Open Scheduled Automation Start and set the rule to run at
triggerAtHour: 10(as shown in the node’s interval settings). - Confirm the trigger connects to Viral Story Selector as the first processing step.
Step 2: Connect the News Sources for the AI Agent
Provide RSS tools that the agent uses to fetch AI news for script generation.
- Add the Fetch AI News Feed and Fetch AI News Feed 2 nodes and keep their default options.
- Connect both RSS tool nodes to Viral Story Selector as AI tools.
- Ensure the tools remain sub-nodes feeding the agent (they are not standalone execution steps).
Step 3: Set Up AI Script and Caption Generation
Configure the language model, agent instructions, and caption generators that produce the script, title, and captions.
- Open Viral Story Selector and keep the instruction text exactly as provided, including the Russian output requirement.
- Connect Script Model Input to Viral Story Selector as the language model.
- Configure Generate Long Caption with the message content that references the agent output:
{{ $json.output }}. - Configure Craft Video Title to use
{{ $json.message.content }}from Generate Long Caption. - Configure Generate Short Caption to use
{{ $('Generate Long Caption').item.json.message.content }}.
Step 4: Configure HeyGen Video Generation and Status Retrieval
Prepare HeyGen inputs, generate the avatar video, and wait for processing to complete before fetching the final video URL.
- Open Configure HeyGen and set values for heygen_api_key, avatar_id, and voice_id; keep background_video_url as
https://example.com/background.mp4or replace it. - In Generate Avatar Video, keep the POST URL
https://api.heygen.com/v2/video/generateand ensure the JSON body references{{ $('Viral Story Selector').item.json.output }}and{{ $('Craft Video Title').item.json.message.content }}. - Confirm Generate Avatar Video sends the X-Api-Key header using
{{ $json.heygen_api_key }}. - Set Processing Delay to wait
8minutes before checking status. - In Retrieve Avatar Status, keep the URL
https://api.heygen.com/v1/video_status.getand query parametervideo_idset to{{ $('Generate Avatar Video').item.json.data.video_id }}.
Step 5: Build the Publishing Payload and Post to Blotato
Assemble all account IDs and caption content, upload the media, then post to multiple channels in parallel.
- Open Assemble Publish Payload and fill in all platform IDs and API keys in the raw JSON (for example blotato_api_key, facebook_id, facebook_page_id).
- Keep the caption fields as expressions:
{{ $('Generate Long Caption').item.json.message.content.toJsonString() }}and{{ $('Generate Short Caption').item.json.message.content.toJsonString() }}. - Configure Blotato Media Upload with URL
https://backend.blotato.com/v2/media, body parameter url set to{{ $('Retrieve Avatar Status').item.json.data.video_url }}, and header blotato-api-key set to{{ $('Assemble Publish Payload').item.json.blotato_api_key }}. - Ensure Blotato Media Upload outputs to all channel nodes; Blotato Media Upload outputs to both Blotato Post Channel A and Blotato Post Channel B in parallel (and also to Blotato Post Channel C, Blotato Post Channel D, Blotato Post Channel E, Blotato Post Channel F, Blotato Post Channel G, and Blotato Post Channel H in parallel).
Step 6: Test and Activate Your Workflow
Run a manual test to verify AI outputs, video generation, and social publishing before turning on the schedule.
- Click Execute Workflow and confirm that Viral Story Selector returns a script in Russian and the caption nodes produce expected content.
- Verify Generate Avatar Video returns a
video_idand Retrieve Avatar Status returns avideo_url. - Confirm Blotato Media Upload returns a media URL and that at least one enabled Blotato Post Channel node posts successfully.
- Once successful, toggle the workflow to Active so Scheduled Automation Start runs on schedule.
Common Gotchas
- HeyGen credentials can expire or need specific permissions. If things break, check your HeyGen API key and avatar_id/voice_id values in the “Configure HeyGen” step first.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.
Frequently Asked Questions
Plan on about an hour if you already have your API keys and IDs.
No. You’ll mainly paste API keys, avatar/voice IDs, and tweak a few prompts.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in OpenAI usage and HeyGen/Blotato plan costs.
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Yes, and it’s one of the best tweaks you can make. Update the prompt inside the “Viral Story Selector” AI Agent to point at your niche (crypto, SaaS marketing, real estate, local news, whatever). Then adjust the three OpenAI caption/title nodes so the tone stays consistent. Many teams also change the HeyGen avatar/voice to match the new audience and swap the background_video_url for a branded loop.
Usually it’s an invalid or expired API key, or the avatar_id/voice_id doesn’t exist on that HeyGen account. Update the values in the “Configure HeyGen” step, then run one test execution and check the HTTP response from the HeyGen request. If it fails only sometimes, you may be hitting rate limits or trying to check status too quickly right after starting a render. Increasing the wait time often fixes the “empty status” issue.
If you self-host n8n, execution volume mainly depends on your server and your HeyGen/Blotato limits.
Often, yes, because this workflow needs branching logic, waiting for renders, and tighter control over payloads. Zapier and Make can do pieces of it, but the “poll status then upload then post to multiple channels” pattern gets fiddly and can get expensive as volume grows. n8n also gives you the option to self-host, which matters when you want lots of daily runs without counting every task. That said, if you’re only publishing to one place and don’t care about prompt customization, simpler tools can be fine. Talk to an automation expert if you want a quick recommendation.
Set it up once, then let the workflow do the repetitive parts honestly better than a human with ten browser tabs. Your job becomes steering the topic and the voice, not babysitting uploads.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.