This workflow corresponds to n8n.io template #10158 — we link there as the canonical source.
This workflow follows the Agent → HTTP Request recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"id": "w8QekiNgdTB5djK1",
"name": "Heygen",
"tags": [],
"nodes": [
{
"id": "119f9823-bc06-42fd-85c3-76fe550fa241",
"name": "When clicking \u2018Test workflow\u2019",
"type": "n8n-nodes-base.manualTrigger",
"position": [
704,
720
],
"parameters": {},
"typeVersion": 1
},
{
"id": "10660213-21c8-4033-bb66-c9117bdcd766",
"name": "Generate Video",
"type": "n8n-nodes-base.httpRequest",
"position": [
768,
384
],
"parameters": {
"url": "https://api.heygen.com/v2/video/generate",
"method": "POST",
"options": {},
"jsonBody": "={\n \"video_inputs\": [\n {\n \"character\": {\n \"type\": \"avatar\",\n \"avatar_id\": \"avatar_id\",\n \"avatar_style\": \"normal\"\n },\n \"voice\": {\n \"type\": \"text\",\n \"input_text\": \"Hey AI Automation Society Family. You guys rock.\",\n \"voice_id\": \"voice_id\",\n \"speed\": 1.1\n }\n }\n ],\n \"dimension\": {\n \"width\": 1280,\n \"height\": 720\n }\n}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"headerParameters": {
"parameters": [
{
"name": "accept",
"value": "application/json"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "6822a4a1-44fa-4d7d-bbf1-896467040057",
"name": "Get Voices",
"type": "n8n-nodes-base.httpRequest",
"position": [
1184,
112
],
"parameters": {
"url": "https://api.heygen.com/v2/voices",
"options": {},
"sendHeaders": true,
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"headerParameters": {
"parameters": [
{
"name": "accept",
"value": "application/json"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "23db5e20-fbd7-4b69-93d3-11a7b5143b03",
"name": "Get Avatars",
"type": "n8n-nodes-base.httpRequest",
"position": [
768,
112
],
"parameters": {
"url": "https://api.heygen.com/v2/avatars",
"options": {},
"sendHeaders": true,
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"headerParameters": {
"parameters": [
{
"name": "accept",
"value": "application/json"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "64cb67a7-7689-4e6d-949e-8f329d6cb7c4",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
624,
0
],
"parameters": {
"color": 7,
"width": 400,
"height": 260,
"content": "# Get Avatar ID\n"
},
"typeVersion": 1
},
{
"id": "7dc2273e-3558-4d53-8270-88550e98787c",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
1040,
0
],
"parameters": {
"color": 7,
"width": 400,
"height": 260,
"content": "# Get Voice ID\n"
},
"typeVersion": 1
},
{
"id": "e961a99e-730a-4765-8fe2-f6b7d8498054",
"name": "Get Video",
"type": "n8n-nodes-base.httpRequest",
"position": [
1184,
384
],
"parameters": {
"url": "https://api.heygen.com/v1/video_status.get",
"options": {},
"sendQuery": true,
"sendHeaders": true,
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"queryParameters": {
"parameters": [
{
"name": "video_id",
"value": "={{ $json.data.video_id }}"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "accept",
"value": "application/json"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "0e16f240-5132-4973-a02e-9c89bea17030",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
624,
288
],
"parameters": {
"color": 6,
"width": 400,
"height": 300,
"content": "# Create Video\n"
},
"typeVersion": 1
},
{
"id": "58027971-0bb5-41d5-9f85-5a1e226fce58",
"name": "News",
"type": "n8n-nodes-base.httpRequest",
"position": [
864,
720
],
"parameters": {
"url": "https://api.apify.com/v2/acts/apify~website-content-crawler/run-sync-get-dataset-items",
"method": "POST",
"options": {},
"jsonBody": "{\n \"aggressivePrune\": false,\n \"clickElementsCssSelector\": \"[aria-expanded=\\\"false\\\"]\",\n \"clientSideMinChangePercentage\": 15,\n \"crawlerType\": \"playwright:adaptive\",\n \"debugLog\": false,\n \"debugMode\": false,\n \"expandIframes\": true,\n \"ignoreCanonicalUrl\": false,\n \"keepUrlFragments\": false,\n \"proxyConfiguration\": {\n \"useApifyProxy\": true\n },\n \"readableTextCharThreshold\": 100,\n \"removeCookieWarnings\": true,\n \"removeElementsCssSelector\": \"nav, footer, script, style, noscript, svg, img[src^='data:'],\\n[role=\\\"alert\\\"],\\n[role=\\\"banner\\\"],\\n[role=\\\"dialog\\\"],\\n[role=\\\"alertdialog\\\"],\\n[role=\\\"region\\\"][aria-label*=\\\"skip\\\" i],\\n[aria-modal=\\\"true\\\"]\",\n \"renderingTypeDetectionPercentage\": 10,\n \"respectRobotsTxtFile\": true,\n \"saveFiles\": false,\n \"saveHtml\": false,\n \"saveHtmlAsFile\": false,\n \"saveMarkdown\": true,\n \"saveScreenshots\": false,\n \"startUrls\": [\n {\n \"url\": \"https://www.morningbrew.com/issues/latest\",\n \"method\": \"GET\"\n }\n ],\n \"useSitemaps\": false\n}",
"sendBody": true,
"specifyBody": "json"
},
"typeVersion": 4.2
},
{
"id": "a16f49b8-db54-4c67-b771-29dbf2d717e1",
"name": "Script Writer",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
1024,
720
],
"parameters": {
"text": "={{ $json.text }}",
"options": {
"systemMessage": "=### \ud83d\udce2 System Prompt: Morning Brew Video Recap Script Generator\n\nYou are a sharp, engaging scriptwriter AI who specializes in converting daily newsletter content into **fast-paced, digestible news recaps** for short-form video. You will be given the full text of a *Morning Brew* issue. Your job is to create a **concise 10\u201320 second script** (around 40\u201360 words) summarizing **the top 2\u20134 most important stories** in an **engaging, headline-driven tone** that sounds natural when spoken aloud.\n\n---\n\n### \u2705 Core Requirements:\n- Output a **single paragraph** written for **spoken delivery**, not robotic narration.\n- Cover **only the top 2\u20134 stories** with the widest impact or highest interest.\n- Use a **punchy, conversational tone** \u2014 brief but informative.\n- Do **not include** intros, outros, or calls to action.\n- Keep the total script under **20 seconds of spoken content** (~40\u201360 words).\n\n---\n\n### \ud83d\udde3\ufe0f Style Example:\n\n\"Stocks jumped after inflation cooled again in April, TikTok sued the US government over its forced sale law, and McDonald\u2019s is dropping AI drive-thrus after too many sauce mishaps.\"\n\n---\n\n### \ud83d\udca1 Notes:\n- Prioritize clarity and relevance.\n- Avoid niche stories unless they\u2019re especially compelling or viral.\n- Think of the recap as something someone could say on a podcast or short TikTok video.\n"
},
"promptType": "define"
},
"typeVersion": 1.9
},
{
"id": "2c02c01e-8f81-47ed-8a96-21787bae81f0",
"name": "GPT 4.1 Mini",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
"position": [
1152,
864
],
"parameters": {
"options": {}
},
"typeVersion": 1
},
{
"id": "5021e8aa-a5f6-48d2-b5d6-01c120447d70",
"name": "Get Video1",
"type": "n8n-nodes-base.httpRequest",
"position": [
1008,
960
],
"parameters": {
"url": "https://api.heygen.com/v1/video_status.get",
"options": {},
"sendQuery": true,
"sendHeaders": true,
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"queryParameters": {
"parameters": [
{
"name": "video_id",
"value": "={{ $('Generate Video1').item.json.data.video_id }}"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "accept",
"value": "application/json"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "5fc211f7-a172-45f4-80b4-2daf263a9dc7",
"name": "30 Seconds",
"type": "n8n-nodes-base.wait",
"position": [
848,
960
],
"parameters": {
"amount": 10
},
"typeVersion": 1.1
},
{
"id": "9e1fdc59-3f59-4700-87dd-59348f47d328",
"name": "If",
"type": "n8n-nodes-base.if",
"position": [
1168,
960
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "dd44e8b9-64ae-4a91-8d19-966910447f71",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.data.status }}",
"rightValue": "completed"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "11e66f0d-ee78-4079-9354-98ae32c1fd79",
"name": "Wait",
"type": "n8n-nodes-base.wait",
"position": [
1344,
960
],
"parameters": {},
"typeVersion": 1.1
},
{
"id": "a8ba10ae-eb12-4482-9124-ba853f722407",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
624,
608
],
"parameters": {
"color": 4,
"width": 960,
"height": 560,
"content": "# Create Video w/ Polling\n"
},
"typeVersion": 1
},
{
"id": "ffd56330-7fc5-4a8a-90b0-1f852db2ffaf",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1040,
288
],
"parameters": {
"color": 5,
"width": 400,
"height": 300,
"content": "# Get Video\n"
},
"typeVersion": 1
},
{
"id": "777c35f3-788a-40ea-abb9-7e109de28dbd",
"name": "Generate Video1",
"type": "n8n-nodes-base.httpRequest",
"position": [
1360,
720
],
"parameters": {
"url": "https://api.heygen.com/v2/video/generate",
"method": "POST",
"options": {},
"jsonBody": "={\n \"video_inputs\": [\n {\n \"character\": {\n \"type\": \"avatar\",\n \"avatar_id\": \"avatar_id\",\n \"avatar_style\": \"normal\"\n },\n \"voice\": {\n \"type\": \"text\",\n \"input_text\": \"Hey AI Automation Society Family. You guys rock.\",\n \"voice_id\": \"voice_id\",\n \"speed\": 1.1\n }\n }\n ],\n \"dimension\": {\n \"width\": 1280,\n \"height\": 720\n }\n}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"headerParameters": {
"parameters": [
{
"name": "accept",
"value": "application/json"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "228d907b-f1fa-4af4-bcc0-3a5d2415bf34",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
0
],
"parameters": {
"width": 600,
"height": 600,
"content": "# \ud83d\udee0\ufe0fSetup Guide \n## **Author: [Jadai Kongolo](https://www.youtube.com/@jadaikongolo)**\n\nFollow these steps to configure your HeyGen + n8n automation workflow:\n\n1. Go to [HeyGen](https://app.heygen.com/), create your AI avatar and voice. \n - You can import your [ElevenLabs](https://www.elevenlabs.io/) voice clone, or let HeyGen clone your voice automatically.\n\n2. Connect your **HeyGen API key** to the following nodes:\n - `Generate Video`\n - `Get Video`\n - `Get Avatars`\n - `Get Voices`\n\n3. If you want to test out the **\"Create video with polling\"** flow:\n - Connect your [OpenRouter](https://openrouter.ai/) API key.\n - Connect your **Apify token** in the node called `News`.\n\nMake sure all credentials are properly stored and referenced in your environment or credentials store for best security and reuse.\n"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "1d4c1db2-af0c-402b-979d-ed781eccbe31",
"connections": {
"If": {
"main": [
[],
[
{
"node": "Wait",
"type": "main",
"index": 0
}
]
]
},
"News": {
"main": [
[
{
"node": "Script Writer",
"type": "main",
"index": 0
}
]
]
},
"Wait": {
"main": [
[
{
"node": "Get Video1",
"type": "main",
"index": 0
}
]
]
},
"30 Seconds": {
"main": [
[
{
"node": "Get Video1",
"type": "main",
"index": 0
}
]
]
},
"Get Video1": {
"main": [
[
{
"node": "If",
"type": "main",
"index": 0
}
]
]
},
"GPT 4.1 Mini": {
"ai_languageModel": [
[
{
"node": "Script Writer",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Script Writer": {
"main": [
[
{
"node": "Generate Video1",
"type": "main",
"index": 0
}
]
]
},
"Generate Video": {
"main": [
[
{
"node": "Get Video",
"type": "main",
"index": 0
}
]
]
},
"Generate Video1": {
"main": [
[
{
"node": "30 Seconds",
"type": "main",
"index": 0
}
]
]
},
"When clicking \u2018Test workflow\u2019": {
"main": [
[
{
"node": "News",
"type": "main",
"index": 0
}
]
]
}
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This n8n workflow automates the creation of AI-generated news recap videos using HeyGen's avatar technology. The template scrapes daily newsletter content, uses AI to generate engaging scripts, and produces professional video summaries with synthetic avatars and voices—all…
Source: https://n8n.io/workflows/10158/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
This powerful workflow automates the evaluation of new digital tools, websites, or platforms with the goal of assessing their potential impact on your business. By leveraging Telegram for user input,
This workflow is designed for content creators, social media managers, and marketers—specifically those in the career, recruitment, or "job change" (転職/就職) niches. It is ideal for anyone looking to au
This workflow connects Amazon product lookups to Telegram using AI-enhanced scraping and automation. It lets users send a product name to a Telegram bot and instantly receive pricing, discount, and pr
Instead of guessing or relying on shallow placeholders, it scrapes real website content, summarizes it intelligently, and feeds that context into an LLM to produce outreach that feels relevant and hum
Turn any Amazon India product URL into a fully-edited 10-second lifestyle video and auto-publish it to Instagram, Facebook, X (Twitter), LinkedIn, YouTube, and Threads — with platform-optimized captio