Perplexity + HeyGen: daily AI news videos, posted
Posting “daily” content sounds easy until you’re the one hunting for topics, writing scripts, recording takes, fixing edits, and still missing the time you promised your audience.
Marketing managers trying to stay consistent feel it first. A small business owner running everything also feels it. Same with a content lead at an agency. This HeyGen video automation takes “we should post every day” and turns it into an actual habit, not a stress project.
This workflow researches what’s trending with Perplexity, writes a script with AI, generates a talking-head avatar video in HeyGen, then publishes it across your social channels using Blotato. You’ll see how it works, what you need, and where teams usually get stuck.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Perplexity + HeyGen: daily AI news videos, posted
flowchart LR
subgraph sg0["Schedule Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Schedule Trigger", pos: "b", h: 48 }
n1@{ icon: "mdi:robot", form: "rounded", label: "AI Writer", pos: "b", h: 48 }
n2["<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/perplexity.dark.svg' width='40' height='40' /></div><br/>AI Research - Report"]
n3["<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/perplexity.dark.svg' width='40' height='40' /></div><br/>AI Research - Top 10"]
n4["<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/merge.svg' width='40' height='40' /></div><br/>Error Report"]
n5@{ icon: "mdi:swap-vertical", form: "rounded", label: "Setup Heygen", pos: "b", h: 48 }
n6@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If", pos: "b", h: 48 }
n7["<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 Video WITH Bac.."]
n8["<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 Video WITHOUT .."]
n9["<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/merge.svg' width='40' height='40' /></div><br/>Merge"]
n10@{ icon: "mdi:cog", form: "rounded", label: "Wait", pos: "b", h: 48 }
n11["<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 Video"]
n12@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If Video Done", pos: "b", h: 48 }
n13@{ icon: "mdi:cog", form: "rounded", label: "Upload media", pos: "b", h: 48 }
n14@{ icon: "mdi:cog", form: "rounded", label: "Tiktok BLOTATO", pos: "b", h: 48 }
n15@{ icon: "mdi:cog", form: "rounded", label: "Linkedin BLOTATO", pos: "b", h: 48 }
n16@{ icon: "mdi:cog", form: "rounded", label: "Facebook BLOTATO", pos: "b", h: 48 }
n17@{ icon: "mdi:cog", form: "rounded", label: "Instagram BLOTATO", pos: "b", h: 48 }
n18@{ icon: "mdi:cog", form: "rounded", label: "Twitter BLOTATO", pos: "b", h: 48 }
n19@{ icon: "mdi:cog", form: "rounded", label: "Youtube BLOTATO", pos: "b", h: 48 }
n20@{ icon: "mdi:cog", form: "rounded", label: "Threads BLOTATO", pos: "b", h: 48 }
n21@{ icon: "mdi:cog", form: "rounded", label: "Bluesky BLOTATO", pos: "b", h: 48 }
n22@{ icon: "mdi:cog", form: "rounded", label: "Pinterest BLOTATO", pos: "b", h: 48 }
n6 --> n7
n6 --> n8
n10 --> n11
n9 --> n10
n1 --> n5
n5 --> n6
n13 --> n14
n13 --> n15
n13 --> n16
n13 --> n17
n13 --> n18
n13 --> n19
n13 --> n20
n13 --> n21
n13 --> n22
n12 --> n13
n12 --> n10
n11 --> n12
n0 --> n3
n14 --> n4
n21 --> n4
n20 --> n4
n18 --> n4
n19 --> n4
n16 --> n4
n15 --> n4
n17 --> n4
n22 --> n4
n2 --> n1
n3 --> n2
n7 --> n9
n8 --> n9
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 n0 trigger
class n1 ai
class n6,n12 decision
class n7,n8,n11 api
classDef customIcon fill:none,stroke:none
class n2,n3,n4,n7,n8,n9,n11 customIcon
The Problem: Daily video content breaks down fast
Daily video is rarely “hard” because of one big task. It’s hard because of a dozen small ones that keep moving. Today you can’t find a strong topic. Tomorrow you have a topic, but your script drags. Then you lose another hour chasing a decent hook, captions, and a thumbnail-ish first frame. Add distribution across multiple platforms and you’re suddenly doing repetitive production work instead of marketing work. Honestly, most teams don’t fail from lack of ideas. They fail from friction.
It compounds over a week. Here’s where it breaks down.
- Research turns into a tab explosion, and you still don’t know what will perform.
- Script writing gets delayed, so “we’ll record later” becomes “not today.”
- Uploading one-by-one to TikTok, LinkedIn, Instagram, YouTube, and more eats about 1–2 hours per video day.
- Inconsistent posting hurts reach, and you can’t diagnose what’s working without a repeatable process.
The Solution: Perplexity-to-HeyGen news videos, auto-published
This n8n workflow runs on a daily schedule (set for 10am by default). It starts by asking Perplexity to research the top trending stories in your niche, then it compiles a factual lead report and picks the story most likely to go viral. Next, an AI writing step drafts a short title, a caption, and a talking-head monologue you can post as-is or lightly edit. Then HeyGen turns that script into a finished avatar video using your selected avatar ID and voice ID. After a short wait for rendering, the workflow checks the render status, grabs the completed video, uploads it to Blotato, and publishes to your chosen social platforms automatically.
The workflow begins with scheduled research, then moves into script generation with an OpenAI chat model. From there it creates one HeyGen video job (with or without a background), waits for the render, and pushes the final asset to Blotato for posting across channels in parallel.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you publish one short news video per day to 7 platforms. Even if uploading, captions, and checks take only about 10 minutes per platform, that’s around 70 minutes a day just posting. Add about 40 minutes to find a topic and draft a script, and you’re near 2 hours. With this workflow, you spend maybe 10 minutes reviewing the generated script (optional), then wait while HeyGen renders and Blotato posts. You get your time back, and the calendar stops slipping.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Perplexity for trending research and reports
- HeyGen to generate the avatar videos
- Blotato API key (get it from Settings > API > Generate API Key)
Skill level: Intermediate. You’ll paste a few API keys, set avatar/voice IDs, and do basic testing (start with one platform).
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
A daily schedule kicks it off. The workflow runs once per day (10am in the template), so you’re not relying on someone to remember.
Perplexity researches and narrows the topic. It fetches the top stories in your niche, then compiles a lead report for the most “viral-friendly” one, which means you start from something timely instead of brainstorming from scratch.
AI writes the post assets. Using an OpenAI chat model, it generates a monologue script plus supporting text (caption and short title). This is also where your brand voice should live, so you’re not rewriting everything later.
HeyGen renders, then Blotato publishes. The workflow creates a video job with your avatar and voice, waits, checks render status until it’s complete, uploads the finished file to Blotato, and posts to the platforms you’ve enabled.
You can easily modify the Perplexity research prompt to target a different niche, then adjust the AI writer prompt to fit your format (shorts, longer explainers, founder POV) based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Schedule Trigger
Set the workflow to run on a fixed schedule so your news video pipeline launches automatically.
- Add or open Scheduled Launch.
- In Rule → Interval, set Trigger at Hour to
10to match the existing schedule. - Confirm Scheduled Launch connects to Fetch Top Stories.
Step 2: Connect Perplexity for News Research
These nodes gather trending topics and compile a detailed report for the AI script.
- Open Fetch Top Stories and set Model to
sonar-pro. - Set Messages → Content to the provided prompt about trending news in real estate.
- Credential Required: Connect your perplexityApi credentials in Fetch Top Stories.
- Open Compile Lead Report and confirm the message content includes the expression
{{ $('Fetch Top Stories').item.json.message }}. - Credential Required: Connect your perplexityApi credentials in Compile Lead Report.
item.json.message cleanly.Step 3: Set Up Draft Video Script (AI Processing)
This step uses an LLM to generate the script, caption, and title in structured JSON.
- Open Draft Video Script and set Model to
gpt-5. - Ensure the system message includes
{{ $('Compile Lead Report').item.json.message }}so the script is grounded in the lead report. - Enable JSON Output and keep Simplify set to
false. - Credential Required: Connect your openAiApi credentials in Draft Video Script.
choices[0].message.content.script will fail.Step 4: Configure Heygen Rendering and Video Job Flow
These nodes build the Heygen payload, choose the correct branch, and poll for completion.
- Open Configure Heygen and set JSON Output to the provided raw JSON, filling in
heygen_api_key,avatar_id, andvoice_id. - Set has_background_video to
trueorfalsedepending on whether you want a backdrop, and confirm background_video_url is a valid URL. - In Background Video Check, confirm the condition evaluates
{{ $('Configure Heygen').item.json.has_background_video }}. - In Generate Avatar With Backdrop, set URL to
https://api.heygen.com/v2/video/generateand include header X-Api-Key with{{ $('Configure Heygen').item.json.heygen_api_key }}. - In Generate Avatar No Backdrop, use the same URL and header and keep the JSON body with
{{ $('Draft Video Script').item.json.choices[0].message.content.script.toJsonString() }}. - Connect both avatar nodes to Combine Video Jobs, then to Pause for Render, and then to Retrieve Render Status.
- In Retrieve Render Status, set URL to
https://api.heygen.com/v1/video_status.getand query video_id with{{ $('Combine Video Jobs').item.json.data.video_id }}. - In Check Render Complete, verify the condition equals
completedagainst{{ $('Retrieve Render Status').item.json.data.status }}.
Step 4: Configure Output Actions with Blotato
Upload the rendered video, then publish to multiple social platforms in parallel.
- Open Upload Media Asset and set Media URL to
{{ $('Retrieve Render Status').item.json.data.video_url }}. - Credential Required: Connect your blotatoApi credentials in Upload Media Asset.
- Upload Media Asset outputs to Post TikTok via Blotato, Post LinkedIn via Blotato, Post Facebook via Blotato, Post Instagram via Blotato, Post Twitter via Blotato, Post YouTube via Blotato, Post Threads via Blotato, Post Bluesky via Blotato, and Post Pinterest via Blotato in parallel.
- Set each Blotato post node to use
{{ $('Upload Media Asset').item.json.url }}for Post Content Media URLs. - Set captions/titles from Draft Video Script, such as
{{ $('Draft Video Script').item.json.choices[0].message.content.caption }}or{{ $('Draft Video Script').item.json.choices[0].message.content.title }}. - Credential Required: Connect your blotatoApi credentials to all Blotato publishing nodes (10 nodes handle the platform posts).
Step 5: Add Error Handling
Publishing nodes are configured to continue on error and funnel failures into an aggregation point.
- Confirm each Blotato post node has On Error set to continue and routes its error output to Aggregate Error Results.
- Open Aggregate Error Results and set Number of Inputs to
9to match all platform outputs. - If you want alerts, add a notification node after Aggregate Error Results to report failures.
Step 6: Test and Activate Your Workflow
Run a manual execution to confirm the full pipeline, then enable the schedule.
- Click Execute Workflow and watch Scheduled Launch trigger Fetch Top Stories and Compile Lead Report.
- Verify Draft Video Script outputs JSON with
script,caption, andtitle. - Ensure Check Render Complete loops back to Pause for Render until the status is
completed. - Confirm Upload Media Asset returns a media URL and that posts run in parallel from Upload Media Asset.
- When the test succeeds, toggle the workflow to Active to enable scheduled runs.
1 minute to reduce polling frequency.Common Gotchas
- Perplexity credentials can expire or billing can run dry. If things break, check your Perplexity API billing status and key permissions 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.
- HeyGen avatar settings are easy to miscopy, especially avatar ID vs. group avatar ID. If renders never complete, confirm the IDs and your HeyGen API plan supports the endpoints you’re calling.
Frequently Asked Questions
About 45 minutes if your API keys and avatar IDs are ready.
No. You’ll connect accounts, paste keys, and adjust a couple of 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 Perplexity, OpenAI, HeyGen, and Blotato API costs (varies by usage, but budget something small per video while testing).
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 mostly prompt changes. Update the Perplexity research prompt in the “Fetch Top Stories” and “Compile Lead Report” steps to match your niche, then tune the “Draft Video Script” prompt to your tone and length. Many teams also adjust the script format (hook first, then 3 bullets) and swap the caption template to match each platform’s style.
Most of the time it’s a plan or credential issue. Confirm your HeyGen API key is for the API plan (not just the web plan), then double-check your avatar ID and voice ID are correct. If you enabled background video, the “has_background_video” setting and URL need to be valid or HeyGen can reject the job. Also, long scripts can push render times out, so you might think it failed when it’s still processing.
It depends more on your HeyGen and Blotato limits than n8n. On n8n Cloud Starter, most teams are fine for a daily workflow; if you self-host, you’re mainly constrained by your server and how many parallel runs you trigger. Practically, this template is built for one finished video per run, once per day, which is a safe place to start. If you want 5–10 per day, you’ll likely add queueing and stricter rate-limit handling.
Often, yes. This workflow has branching (background video vs. no backdrop), polling for render completion, and a fan-out to many social posts, and that can get clunky or expensive in Zapier. n8n also lets you self-host, which is handy when you’re running daily content at scale. On the flip side, Zapier can feel simpler for quick two-app zaps with minimal logic. If you want someone to sanity-check your setup, Talk to an automation expert.
Once this is running, “daily videos” stops being a heroic effort and becomes background operations. The workflow handles the repeatable parts so you can focus on the angle, the offer, and the next campaign.
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.