🎬 Generate social videos with AI avatars using VEED, Claude, and OpenAI

243 views · 🎬 Content Creation & Video

💡 Pro Tip — Since TikTok doesn’t have a public API, getting data usually means fragile HTTP scraping. ScraperNode is a community node that gives you clean JSON for TikTok profiles, videos, and comments — drop it into your workflow and skip the parsing.

View All Scrapers

Description

Generate social videos with AI avatars using VEED and Claude

Overview

This n8n workflow automatically generates TikTok/Reels-ready talking head videos from scratch. You provide a topic and intention, and the workflow handles everything: scriptwriting, avatar generation, voiceover creation, and video rendering.

Output: Vertical (9:16) AI-generated videos with lip-synced avatars, ready for social media posting.


What It Does

Topic + Intention → Claude writes script → OpenAI generates avatar → OpenAI creates voiceover → VEED renders video → Saved to Google Drive + logged to Sheets

Pipeline Breakdown

StepToolWhat Happens
1. Script GenerationClaude Sonnet 4Creates hook, script (30-45 sec), caption, and image prompt based on your topic and intention
2. Avatar GenerationOpenAI gpt-image-1Generates photorealistic portrait image (1024×1536)
3. VoiceoverOpenAI TTS-1-HDConverts script to natural speech (Nova voice)
4. Video RenderingVEED Fabric 1.0Lip-syncs avatar to audio, creates final video
5. StorageGoogle DriveUploads final MP4
6. LoggingGoogle SheetsRecords all metadata (script, caption, URLs, timestamps)

Required Connections

API Keys (entered in Configuration node)

ServiceKey TypeWhere to Get
AnthropicAPI Keyhttps://console.anthropic.com/settings/keys
OpenAIAPI Keyhttps://platform.openai.com/api-keys

> ⚠️ OpenAI Note: gpt-image-1 requires organization verification. Go to https://platform.openai.com/settings/organization/general to verify.

n8n Credentials (connect in n8n)

NodeCredential TypePurpose
�� Generate Video (VEED)FAL.ai APIVEED video rendering
�� Upload to DriveGoogle Drive OAuth2Store final videos
�� Log to SheetsGoogle Sheets OAuth2Track all generated content

Configuration Options

Edit the ⚙️ Workflow Configuration node to customize. The configuration uses a JSON format:

{
  "topic": "AI video creation tools",
  "intention": "informative",
  "brand_name": "YOUR_BRAND_NAME",
  "target_audience": "content creators and marketers",
  "trending_hashtags": "#AIvideo #ContentCreation #VideoMarketing #AItools #TikTokTips",
  "num_videos": 1,
  "anthropic_api_key": "YOUR_ANTHROPIC_API_KEY",
  "openai_api_key": "YOUR_OPENAI_API_KEY",
  "video_resolution": "720p",
  "video_aspect_ratio": "9:16",
  "custom_avatar_description": "",
  "custom_script": ""
}

Configuration Fields Explained

FieldRequiredDescription
topicThe subject of your video (e.g., “AI productivity tools”)
intentionContent style: informative, lead_generation, or disruption
brand_nameYour brand/product name to mention
target_audienceWho you’re creating content for
trending_hashtagsHashtags to include in the caption
num_videosHow many videos to generate (1-5 recommended)
anthropic_api_keyYour Anthropic API key
openai_api_keyYour OpenAI API key
video_resolutionVideo quality: 720p or 1080p
video_aspect_ratioAspect ratio: 9:16 (vertical) or 16:9 (horizontal)
custom_avatar_descriptionOptional: Describe your avatar (leave empty for AI-generated)
custom_scriptOptional: Your own script (leave empty for AI-generated)

Intention Types

IntentionContent StyleBest For
informativeEducational, value-driven, builds trustThought leadership, tutorials
lead_generationCreates curiosity, soft CTAProduct awareness, funnels
disruptionBold, provocative, scroll-stoppingViral potential, brand awareness

Custom Avatar & Script Options

The workflow supports flexible content generation - you can let Claude generate everything, or provide your own inputs.

Custom Avatar Description

Leave custom_avatar_description empty to let Claude decide, or provide your own:

"custom_avatar_description": "a female influencer in her 30s, with a coworking space in the background, attractive but charismatic"

Examples:

Custom Script

Leave custom_script empty to let Claude write it, or provide your own:

"custom_script": "This is my custom script. VEED is a great platform for creating videos like this. You can try it too!"

Guidelines for custom scripts:

Behavior Matrix

custom_avatar_descriptioncustom_scriptWhat Claude Generates
EmptyEmptyAvatar + Script + Caption
ProvidedEmptyScript + Caption
EmptyProvidedAvatar + Caption
ProvidedProvidedCaption only

Content Angles (auto-rotated)

When generating multiple videos, the workflow automatically varies the approach:

#AngleHook Style
1Problem-solutionOpens with a question
2Myth-bustingOpens with controversial statement
3Quick-tipOpens with a number/statistic
4Before-afterOpens with transformation
5Trend-commentaryOpens with news/timely angle

Output

Per Video Generated

AssetFormatLocation
Final VideoMP4 (720p, 9:16)Google Drive folder
Avatar ImagePNG (1024×1536)tmpfiles.org (temporary)
VoiceoverMP3tmpfiles.org (temporary)
MetadataRow entryGoogle Sheets

Google Sheets Columns

ColumnDescription
topicVideo topic
intentionContent intention used
brand_nameBrand mentioned
content_theme2-3 word theme summary
script_audioFull voiceover script
script_imageImage generation prompt
captionReady-to-post TikTok caption with hashtags
image_urlTemporary avatar image URL
audio_urlTemporary audio URL
video_urlGoogle Drive link to final video
statusdone/error
created_atTimestamp

Estimated Costs Per Video

ServiceUsageApproximate Cost
Claude Sonnet 4~2K tokens~$0.01
OpenAI gpt-image-11 image (1024×1536)~$0.04-0.08
OpenAI TTS-1-HD~450 characters~$0.01
VEED/FAL.ai1 video render~$0.10-0.20
Total~$0.15-0.30 per video

> Costs vary based on script length and current API pricing.


Setup Checklist

Step 1: Import Workflow

Step 2: Configure API Keys

Step 3: Connect n8n Credentials

Step 4: Configure Storage

Step 5: Customize Content

Step 6: Test


MCP Integration (Optional)

This workflow can also be exposed to Claude Desktop via n8n’s Model Context Protocol (MCP) integration, allowing you to generate videos through natural language prompts.

To enable MCP:

  1. Add a Webhook Trigger node to the workflow (in addition to the Manual Trigger)
  2. Connect it to the same ⚙️ Workflow Configuration node
  3. Go to SettingsInstance-level MCP → Enable the workflow
  4. Configure Claude Desktop with your n8n MCP server URL

Claude Desktop Configuration (Windows):

{
  "mcpServers": {
    "n8n-mcp": {
      "command": "supergateway",
      "args": [
        "--streamableHttp",
        "https://YOUR_N8N_INSTANCE.app.n8n.cloud/mcp-server/http",
        "--header",
        "authorization:Bearer YOUR_MCP_ACCESS_TOKEN"
      ]
    }
  }
}

> Note: Install supergateway globally first: npm install -g supergateway


Limitations & Notes

Technical Limitations

Content Considerations

Best Practices

  1. Start small: Test with 1 video before scaling to 5
  2. Review scripts: Claude generates good content but review before posting
  3. Monitor costs: Check API usage dashboards weekly
  4. Backup sheets: The Google Sheet serves as your content database

Troubleshooting

IssueSolution
”Organization must be verified”Verify at platform.openai.com/settings/organization/general
VEED authentication errorRe-add FAL.ai credential to VEED node
Google Drive “no binary field”Ensure Download Video outputs to field named data
JSON parse error from ClaudeWorkflow has fallback content; check Claude node output
Image URL blockedWorkflow uses base64 to avoid this; ensure gpt-image-1 model
MCP “Server disconnected” (Windows)Install supergateway globally: npm install -g supergateway
MCP path error on WindowsUse supergateway directly instead of npx

Version History

VersionDateChanges
2.0Jan 2026Added custom avatar/script options, MCP integration support, improved configuration
1.0Jan 2026Initial release with portrait mode, gpt-image-1, native VEED node

Credits

Built with:

🔗 Nodes Used

Google Sheets, HTTP Request, Google Drive

📥 Import

Download workflow.json and import into n8n: Workflow menu → Import from File

📖 Importing guide · 🔑 Credential setup