Create & Approve POV Videos with AI, ElevenLabs & Multi-Posting (TikTok/IG/YT)

Go to Workflow
2,371 views
Built by Immanuel Immanuel
Created on June 07, 2026

Description

POV Video Creator: Automating TikTok-Style Instagram Video Automation, Approval, and Multi-Platform Posting Using AI, ElevenLabs, Google Sheets, and Social Media APIs

Description

What Problem Does This Solve? šŸŽ„
This workflow automates the creation, rendering, approval, and posting of TikTok-style POV (Point of View) videos to Instagram, with cross-posting to Facebook and YouTube. It eliminates manual video production, approval delays, and inconsistent posting schedules. It ensures high-quality content creation and distribution for social media managers and content creators

Target audience: Social media managers, content creators, small to medium-sized businesses, and n8n users familiar with AI tools, Google Sheets, and social media APIs

What Does It Do? 🌟
Generates daily POV video ideas using OpenAI
Creates images, videos, and audio with PIAPI.ai and ElevenLabs
Renders final videos with Creatomate
Manages approvals via email and Google Sheets
Posts approved videos to Instagram, Facebook, and YouTube
Tracks progress in a Google Sheet for transparency

Key Features
AI-driven idea generation and script creation
Automated media production with image, video, and audio synthesis
Email-based approval system for quality control
Cross-platform posting to Instagram, Facebook, and YouTube
Real-time tracking in Google Sheets and Google Drive
Error handling for rendering and posting failures

Setup Instructions

Prerequisites
n8n Instance**: Self-hosted or cloud n8n instance
API Credentials**:
OpenAI API: API key for idea generation, stored in n8n credentials
PIAPI.ai API: API key for image and video generation, stored in n8n credentials
ElevenLabs API: API key for audio generation, stored in n8n credentials
Creatomate API: API key for video rendering, stored in n8n credentials
Google Sheets/Drive API: OAuth2 credentials from Google Cloud Console with Sheets and Drive scopes
Gmail API: OAuth2 credentials from Google Cloud Console with Gmail scope
Instagram Graph API: User Access Token with instagram_content_publish permission from a Facebook App
Facebook Graph API: Access Token from the same Facebook App
YouTube API: OAuth2 credentials for YouTube uploads
Google Sheet**: A sheet named "POV Videos" with a tab "Instagram" and columns: Timestamp, ID, Subject, Topic, Caption, POV_Status, Prompt, Publish_Status, Link, Final Video, Approval, row_number
Creatomate Template**: A pre-configured template with video, audio, and text elements

Installation Steps
Import the Workflow:
Copy the workflow JSON from the ā€œTemplate Codeā€ section (to be provided)
Import it into n8n via ā€œImport from Fileā€ or ā€œImport from URLā€
Configure Credentials:
Add API credentials in n8n’s Credentials section for OpenAI, PIAPI.ai, ElevenLabs, Creatomate, Google Sheets/Drive, Gmail, Instagram Graph, Facebook Graph, and YouTube
Assign credentials to respective nodes. For example:
In "Text-to-Image", use PIAPI.ai credentials: {{ $credentials.PIAPI }}
In "Render with Creatomate", use Creatomate credentials: {{ $credentials.Creatomate }}
In "Send Approval Request", use Gmail credentials
Set Up Nodes:
Schedule Trigger: Configure to run daily
Approval Email (Send Approval Request): Customize the HTML email template with approval/rejection links
Post to Social Media Nodes (Instagram Container, Facebook Posts, Post YouTube): Configure with your Instagram Business Account ID, Facebook Page ID, and YouTube channel details
Configure Google Sheet and Drive:
Create "POV Videos" Google Sheet with "Instagram" tab and specified columns
Share the sheet with your Google Sheets credential email
Create "Audio" and "Video" folders in Google Drive, noting their IDs
Test the Workflow:
Run manually to verify idea generation, media creation, and posting
Check email notifications, Google Sheet updates, and social media posts
Schedule the Workflow:
Enable "Schedule Trigger" and "Schedule Trigger1" for daily runs
Enable "Get Latest Approved Video" to poll at 7 PM daily

How It Works

High-Level Steps
Generate Video Ideas: Creates daily POV video concepts with OpenAI
Create Media: Produces images, videos, and audio using AI tools
Render Video: Combines media into a final video with Creatomate
Manage Approvals: Sends approval emails and processes decisions
Post to Platforms: Publishes approved videos to Instagram, Facebook, and YouTube

Detailed Descriptions
Detailed node descriptions are available in the sticky notes within the workflow (to be provided). Below is a summary of key actions

Node Names and Actions

Video Idea Generation and Script Creation
Schedule Trigger**: Initiates daily workflow
Get Title**: Fetches pending video ideas from Google Sheet
Generate Topics**: Uses OpenAI to create a new video idea
Format Row**: Structures the idea into a Google Sheet row
Insert new Prompt, Caption and Title/Topic**: Adds the idea to Google Sheet
Generate Ideas**: Produces 3 POV sequences
Generate Script**: Expands a sequence into a detailed script
Set Topics**: Stores the script for media creation

Media Creation
Text-to-Image**: Generates an image with PIAPI.ai
Get Image**: Retrieves the generated image
Generate Video Prompt**: Creates a video prompt from the image
Generate Video**: Produces a 5-second video with PIAPI.ai
Access Videos**: Retrieves the video URL
Store Video**: Updates Google Sheet with video URL
Generate Sound Prompt**: Creates an audio prompt
Text-to-Sound**: Generates a 20-second audio clip with ElevenLabs
Store Sound**: Uploads audio to Google Drive
Allow Access**: Sets audio file permissions

Video Rendering
Merge**: Combines script, video, and audio data
List Elements**: Formats data for Creatomate
Render with Creatomate**: Renders the final video
Check Video Status**: Routes based on render success/failure

Storage and Notification
Google Drive**: Uploads the rendered video
New Render Video Alert**: Sends success email
Failed Render**: Sends failure email
Render Video Link**: Updates Google Sheet with final video URL

Approval Process
Approval Email**: Sends approval request email
Handle Approval/Rejection1**: Processes approval/rejection via webhook
Video Update1**: Updates Google Sheet with approval status

Social Media Posting
Get Latest Approved Video**: Polls for approved videos
Check Approval**: Routes based on approval status
Instagram Container**: Creates Instagram media container
Post to Instagram**: Publishes to Instagram
Facebook Posts**: Posts to Facebook
Download Video**: Downloads video for YouTube
Post YouTube**: Uploads to YouTube
Mark Rejected**: Updates status for rejected videos
Update Google Sheet**: Updates publish status

Customization Tips
Expand Platforms**: Add nodes to post to other platforms
Modify Approval Email**: Update the Send Approval Request node to customize the HTML template
Alternative Notifications**: Add nodes for Slack or Telegram alerts
Adjust Video Duration**: Modify Generate Video node to change duration (default: 5 seconds)

Nodes Used (13)

AI Agent
@n8n/n8n-nodes-langchain.agent
Basic LLM Chain
@n8n/n8n-nodes-langchain.chainLlm
Code
n8n-nodes-base.code
Facebook Graph API
n8n-nodes-base.facebookGraphApi
Gmail
n8n-nodes-base.gmail
Google Drive
n8n-nodes-base.googleDrive
Google Sheets
n8n-nodes-base.googleSheets
HTTP Request
n8n-nodes-base.httpRequest
Item List Output Parser
@n8n/n8n-nodes-langchain.outputParserItemList
OpenAI
@n8n/n8n-nodes-langchain.openAi
OpenAI Chat Model
@n8n/n8n-nodes-langchain.lmChatOpenAi
OpenRouter Chat Model
@n8n/n8n-nodes-langchain.lmChatOpenRouter
YouTube
n8n-nodes-base.youTube