Stop manually creating short-form video content. This n8n workflow automatically generates AI talking-head UGC videos using HeyGen and publishes them to Instagram and Facebook every single day — fully on autopilot.

Real reel posted to @pinkmatchaprints — generated and published entirely by this workflow.
Watch a live reel generated by this workflow
See all published reels on @pinkmatchaprints

Every single one of these videos was generated and posted automatically — no recording, no editing, no manual uploading.
The workflow runs every day on a schedule. Here's the full pipeline:
IdeaThe workflow uses GPT-4.1-mini with a custom system prompt called "The Shepherd" — a calm, wise, spiritual guide. Every script is:
Your content pool lives in a Google Sheet. The workflow selects today's section using day-of-year modulo total rows — so it automatically cycles through your content library without manual scheduling. Add more rows to expand the rotation.
Every execution is tracked row by row in a Production Logs sheet. You can see exactly what ran, what script was used, what the HeyGen video ID is, and what the final status is.
HeyGen renders videos asynchronously. The workflow handles this gracefully — it submits the job, waits, polls the status API, and routes automatically based on the result:
Videos are published to both Instagram and Facebook in one execution using upload-post.com. The caption is auto-built from the section title and first 100 characters of the script.
The workflow uses a single Google Sheets workbook with two tabs:
Your content pool. The workflow reads from this every day.

| Column | Description |
|---|---|
section_title |
Title used in the video caption and script prompt |
workbook_content |
Full context for the AI to generate the script from |
key_message |
The core takeaway — passed to the AI as emphasis |
Status |
Set to Idea to include in rotation. Any other value skips the row. |
Auto-populated. Do not edit manually.

| Column | Description |
|---|---|
Date |
Date the video was generated |
Section Title |
Which content section was used |
Script Text |
The generated script |
HeyGen Video ID |
Used to poll render status |
Raw Video URL |
Direct HeyGen video URL |
Final Video URL |
Final URL passed to the publishing step |
Status |
Lifecycle status or failure reason |
| Service | Credential Type | Where Used |
|---|---|---|
| HeyGen | HTTP Header Auth (X-Api-Key) |
Generate and poll videos |
| upload-post.com | HTTP Header Auth | Post to Instagram / Facebook |
| Google Sheets | OAuth2 | Read content, write logs |
| OpenAI | API Key | Generate scripts (GPT-4.1-mini) |
documentId in all Google Sheets nodes with your spreadsheet IDWorkbook Content tab and set Status = Idea on each rowThe workflow ships with 14 hardcoded talking-photo avatar IDs in the Code: Select Random Avatar & Combine Data node. Replace these with your own HeyGen avatar IDs from your HeyGen account.
Update the user field in both the facebook and instagram nodes from pink-matcha to your upload-post.com username.
The facebook node is disabled by default. Once you confirm Instagram is posting correctly, enable it in n8n.
The trigger is set to fire daily at 12pm noon. The node name says "9am" — rename or adjust the time in the Schedule node to match your target posting time.
Q: Do I need a HeyGen subscription?
A: Yes. You need a HeyGen account with API access and at least one talking-photo avatar created in your account.
Q: What is upload-post.com?
A: A third-party service that handles posting video content to Instagram and Facebook on your behalf. You need an account connected to your social profiles.
Q: Can I change the AI persona?
A: Yes. Edit the system prompt in the Generate Script node to use any persona, tone, or style you want.
Q: Can I post to TikTok or YouTube Shorts?
A: upload-post.com supports other platforms. You can add additional HTTP request nodes following the same pattern as the instagram node and change the platform[] parameter.
Q: How do I add more content?
A: Add rows to the Workbook Content tab in Google Sheets and set Status = Idea. The rotation automatically picks them up.
Q: What happens if HeyGen fails?
A: The workflow detects failure or timeout and writes the reason to the Production Logs sheet. A separate n8n error workflow handles unexpected crashes.
Q: How long does one execution take?
A: Typically 5 to 15 minutes end-to-end, depending on HeyGen render time.
Powered by n8n • OpenAI • HeyGen • Google Sheets • upload-post.com