Mindket

News recap video with a HeyGen avatar

Newversion 1 · updated

Overview

An n8n workflow that reads the latest Morning Brew issue through Apify, has an agent write a 40 to 60 word spoken recap. HeyGen renders it as an avatar video, checked until it is ready. One edit is needed for the avatar to speak the recap.

News recap video with a HeyGen avatar is an n8n workflow in the Marketing & SEO category, listed by Mindket. It is free. This is version 1, last updated on . Download it on this page or copy its JSON, then import it into an n8n canvas. Nothing runs until you activate it in n8n.

At a glance

Runs in
  • n8n Cloud: import the file into a new workflow there
  • Your own n8n server: the same file, the same steps
  • Another newsletter or page: change the address in the body of News
  • Social channels: the video stays in HeyGen, so add a node that downloads it and posts it
Start with
{{ JSON.stringify($('Script Writer').item.json.output) }}

Platform

Connects 3 apps

How it works

Trigger

Manual start

It starts when you press Test workflow in n8n. There is no form to fill in:

  • The page it reads is set in the News node
  • The avatar, the voice and the size are set in Generate Video1

Actions

  1. Apify reads the latest Morning Brew issue and returns its text
  2. The Script Writer agent boils it down to a 40 to 60 word spoken script, with GPT 4.1 Mini on OpenRouter
  3. HeyGen renders an avatar video from the request in Generate Video1
  4. It asks for the video’s status, waits and asks again until it reads completed

Result

A finished HeyGen avatar video, with its link in the last status reply

Integrations

What you need before you start.

HeyGen

AI video

Renders the avatar video and reports its status. Two more nodes list your avatars and voices.

NeedsHeyGen API key, in a Header Auth credential

Apify

Web scraping

Runs the website-content-crawler to read the newsletter page and return its text.

NeedsApify API token

OpenRouter

Language model

Runs GPT 4.1 Mini for the Script Writer agent, which writes the spoken script.

NeedsOpenRouter API key

Workflow check

Checked by Mindket on 13 Nov 2026

Steps
8 steps, starting by hand
Not reached
4 nodes no run reaches: Generate Video, Get Voices, Get Avatars and Get Video
AI
1 step calls an AI model: Script Writer
Sign-ins
Signs in to: HeyGen and OpenRouter
API keys
No API key is left in the file
Step types
Mindket’s checker reads all 5 of its step types

Read from the workflow’s file, not from a run.

About

What it is

This n8n workflow makes a short news recap video with an AI avatar. Press Test workflow and Apify reads the latest issue of the Morning Brew newsletter. An agent named Script Writer, running GPT 4.1 Mini on OpenRouter, boils it down to a spoken script of 40 to 60 words on the top two to four stories. HeyGen then renders an avatar video, and the workflow asks for the video’s status, waits a little and asks again, until the status reads completed and the file is ready to download. One thing to know before you run it: the node that sends the request to HeyGen carries a fixed placeholder line, and the script is not wired in. The setup steps show the one edit that fixes that. Four more nodes sit apart, for picking an avatar and a voice. The file has 13 working nodes and five sticky notes.

Who it suits

Newsletter editors, social media teams and small publishers who want a regular news clip without filming one, since the avatar reads the script and nobody has to be on camera.

Who uses it, and how
IndustryWho uses itHow they use itExample
Media and publishingNewsletter editorsTurn each issue into a short clip for social mediaA newsletter team posts a recap clip on the morning an issue goes out.
Social mediaSocial managersFill a Shorts or Reels slot with a news clip each weekdayA team publishes a clip under twenty seconds every day and never books a presenter.
Marketing agenciesContent producersPoint it at a client’s newsletter instead of Morning BrewAn agency swaps the address in News for the client’s page and gets a draft recap to review.
Education and trainingCourse teamsRecap a weekly digest for learners, always with the same presenterA course team turns its Friday digest into a clip for the learners’ page.

You need a little n8n: importing a file, adding credentials and editing one JSON body. Its author puts setup at about 11 minutes, which assumes the three accounts already exist.

Where to use it

Any n8n that can reach Apify, OpenRouter and HeyGen will do. It starts by hand. A Schedule Trigger in front of News is what makes it daily.

  • n8n Cloud: import the file into a new workflow there
  • Your own n8n server: the same file, the same steps
  • Another newsletter or page: change the address in the body of News
  • Social channels: the video stays in HeyGen, so add a node that downloads it and posts it

Setup

Get it saves a zip with workflow.json and Mindket’s setup notes in your downloads folder. Have these ready before you import it.

What you need first
NeedDetail
n8nOn n8n Cloud or on a server of your own
HeyGenAn account with API access, its API key, and an avatar and a voice you can use
ApifyAn account and an API token, for the website-content-crawler actor
OpenRouterAn API key for the chat model that writes the script
  1. In n8n, create a workflow, open its menu, choose Import from File and pick workflow.json.
  2. Add an HTTP Header Auth credential for HeyGen, with the header name X-Api-Key and your key as the value, and select it in the six HeyGen nodes.
  3. Add an OpenRouter credential and select it in GPT 4.1 Mini.
  4. Open News, set Authentication to Generic Credential Type and add an HTTP Header Auth credential with the header Authorization and the value Bearer followed by your Apify token.
  5. Run Get Avatars and Get Voices once each with Execute step, and copy an avatar’s id and a voice’s id from what they return.
  6. In Generate Video1, put those ids where the body holds avatar_id and voice_id.
  7. In the same node, replace "YOUR_SCRIPT_TEXT", quotation marks included, with the expression below, so the avatar speaks the recap.
  8. If you want HeyGen asked less often, open Wait and lengthen its pause, 5 seconds as exported.
  9. Save, then press Test workflow.
{{ JSON.stringify($('Script Writer').item.json.output) }}

Both Wait nodes lean on n8n’s defaults. 30 Seconds stores an amount of 10 and no unit, and n8n’s default unit is seconds, so despite its name it waits 10 seconds. Wait stores nothing and pauses 5 seconds between status checks.

How to use it

Press Test workflow. The run lasts as long as HeyGen takes to render. The loop asks for the video’s status, waits and asks again until it reads completed. The last reply from Get Video1 is HeyGen’s status for the finished video, and it carries the link to the file. The four loose nodes at the top are separate and run only by hand. Two list your avatars and voices. The other two send one render request and ask for its status once.

Example

Say an issue’s top stories are a rate cut, a merger ruling and a chipmaker’s earnings. Script Writer might return a paragraph like this one, meant to be said in under 20 seconds:

Stocks rose after a rate cut, a court blocked a merger of two grocery chains, a chipmaker beat its earnings forecast and an airline announced new routes.

For newcomers and experts

If you are new. n8n polls by looping. It asks HeyGen for the status, waits, and asks again. Run the workflow with the editor open and watch the loop, since each pass shows HeyGen’s reply, and do the two list nodes first, because they show your own avatar and voice ids.

For experts. Four stages carry the work. Each uses a different service.

What each stage uses
StageNodeWhat it usesWhat to know
Read the issueNewsApify’s website-content-crawler through its run-sync endpoint, markdown outputThe body sets no page or depth limit, so add maxCrawlPages with 1 to read only the issue
Write the scriptScript WriterAn agent on openai/gpt-4.1-mini through OpenRouterIts system message asks for one paragraph of 40 to 60 words, with no intro, outro or call to action
RenderGenerate Video1HeyGen’s v2 video/generate at 1280 by 720, avatar style normal, speed 1.1Size, speed and style live in its JSON body
Wait for it30 Seconds, Get Video1, If, WaitHeyGen’s v1 video_status.getOnly completed ends the loop, and there is no branch for failed

Good to know

Each run spends HeyGen credits, Apify usage and a few OpenRouter tokens.

  • Billing: HeyGen charges for each rendered video, Apify for the crawl and OpenRouter for the script
  • Placeholder line: as exported, HeyGen speaks a fixed line, not the recap, until you do step 7
  • Polling: as exported, the loop asks HeyGen for the status every 5 seconds until the video is done
  • Failed renders: a video HeyGen reports as failed is checked again and again, so watch the first runs
  • The newsletter: its text belongs to its publisher, so check Morning Brew’s terms before you post a recap
  • Credentials: the JSON holds none, and nothing from its author’s accounts

README and files

README

News recap video with a HeyGen avatar

An n8n workflow. It reads the latest Morning Brew issue with Apify, has an agent write a short spoken recap, asks HeyGen
to render an avatar video and checks until the video is ready. The original's setup note names Nate Herk as its author.

What is inside

  • workflow.json: the workflow as n8n exports it, 18 nodes: 13 that work and five sticky notes. It holds no credential.
    The line HeyGen speaks is the placeholder YOUR_SCRIPT_TEXT, and avatar_id and voice_id are placeholders as they
    were in the original.
  • Two quotation marks inside the crawler's JSON body were not escaped, which made the body invalid JSON. They are
    escaped here and nothing else in it changed.
  • README.md: these notes.

Before you start

  • An n8n instance, on n8n Cloud or your own server.
  • A HeyGen account with API access, its API key, and an avatar and a voice you can use.
  • An Apify account and its API token.
  • An OpenRouter API key.

Set it up

  1. In n8n, create a workflow, open its menu and choose Import from File. Pick workflow.json.
  2. Add an HTTP Header Auth credential for HeyGen, with the header name X-Api-Key and your key as the value. Select it in
    Generate Video, Generate Video1, Get Video, Get Video1, Get Avatars and Get Voices.
  3. Add an OpenRouter credential and select it in GPT 4.1 Mini.
  4. Open News. It has no authentication yet. Set Authentication to Generic Credential Type and add an HTTP Header Auth
    credential with the header Authorization and the value Bearer followed by your Apify token.
  5. Run Get Avatars and Get Voices once, each on its own with Execute step, and copy an avatar's id and a voice's id
    from what they return.
  6. In Generate Video1, and in Generate Video if you want the one-off test, put those ids where the body holds
    avatar_id and voice_id.
  7. In Generate Video1, replace "YOUR_SCRIPT_TEXT", quotation marks included, with this expression, so that the recap
    is what the avatar says:
{{ JSON.stringify($('Script Writer').item.json.output) }}
  1. If you want HeyGen asked less often, open Wait and lengthen its pause (below).
  2. Save, then press Test workflow.

The Wait nodes

30 Seconds stores an amount of 10 and no unit. This Wait node's default unit is seconds, so it waits 10
seconds before the first status check. Wait stores nothing and takes the default amount too: 5 seconds between checks.
A render takes a while, so 30 seconds there sends HeyGen far fewer requests.

The two paths in the file

  • The loose nodes at the top, Get Avatars, Get Voices and Generate Video followed by Get Video, are not
    connected to the trigger. Run each by hand with Execute step. The first two list your avatars and voices, and the last
    pair sends one render request and asks for its status once.
  • The main path starts at When clicking ‘Test workflow’, and goes through News, Script Writer, Generate Video1,
    30 Seconds and Get Video1. If then ends the run when the status reads completed. Otherwise Wait sends it back
    to Get Video1 for another look.

What it reads and sends

| Node | What it does |
|---|---|
| News | Posts to Apify's website-content-crawler, with https://www.morningbrew.com/issues/latest as its start address and markdown output |
| Script Writer | An agent on openai/gpt-4.1-mini through OpenRouter. It gets the page's text and answers with one spoken paragraph |
| Generate Video1 | Posts to HeyGen's v2/video/generate with an avatar, a voice, a speed of 1.1 and a size of 1280 by 720 |
| Get Video1 | Asks HeyGen's v1/video_status.get for the status of the video Generate Video1 started |

Change it

  • Another source: the address in the body of News. The system message of Script Writer talks about Morning Brew
    issues, so edit it too.
  • Length and tone: the system message of Script Writer. As exported it asks for one paragraph of 40 to 60 words
    covering the top two to four stories, with no intro, outro or call to action.
  • Only the one page: add "maxCrawlPages": 1 to the body of News. The body sets no page or depth limit, so the
    crawler's own defaults apply.
  • The look: avatar_id, avatar_style, voice_id, speed and dimension in Generate Video1.
  • A daily run: put a Schedule Trigger in front of News. Nothing schedules the workflow as exported.

Good to know

  • Each run spends HeyGen credits, Apify usage and a few OpenRouter tokens.
  • As exported, Generate Video1 sends a fixed line, not the recap. Step 7 above is what connects them.
  • Only completed ends the loop. A render that HeyGen reports as failed is checked again and again, so watch the first
    runs, and add a branch for failed if you automate it.
  • The issue's text belongs to its publisher. Check Morning Brew's terms before you post a recap.
  • The finished video is a link in HeyGen's status reply. Add a node on the true branch of If to download it, save it or post it.
Files
README.md  5 KB
workflow.json  14 KB

2 files, 19 KB, downloaded as a zip.

What’s new

  • Version 1 · 2026-11-03

Reviews

No ratings yet

Write a review

No reviews yet.

More from Mindket

See all from Mindket

upscaler

uwg · Kit

Holds a set of image upscaling models gathered from the OpenModelDB community, for people who want to enlarge low-resolution pictures with AI on their own comp…

New

Pixel Art XL

nerijs · Kit

A pixel art style add-on for Stable Diffusion XL that turns text prompts into pixel-style images, with an optional LCM LoRA for faster runs. For game makers, d…

New

VibeVoice-1.5B

microsoft · Kit

Turns written conversations into spoken audio with up to four speakers and about 90 minutes of speech, an open Microsoft text-to-speech model for research on p…

New

Similar in Marketing & SEO

See all in Marketing & SEO

Licon MSR for LTX-2.5

LiconStudio · Kit

Keeps characters, clothing, objects and backgrounds consistent in generated video by feeding the model up to five reference images. A LoRA for LTX-2.5 in Comfy…

New

Flux.2-Klein-9B-MatchingPose

nhathoangfoto · Kit

A LoRA for FLUX.2 Klein 9B that puts a character into the pose shown by a mannequin reference while keeping the character's face and style. For artists and des…

New

Generates images from text on modest GPUs, using quantized Z-Image-Turbo files made for stable-diffusion.cpp. For people who run image models on their own comp…

New