← All posts
How-ToAugust 29, 2026 · 5 min

How to Make Faceless AI Videos for TikTok - Step-by-Step Blueprint

You can generate viral short-form videos without ever stepping in front of a camera by combining Pika Labs' video generation AI with ElevenLabs' voice synthesis and wiring the two together in an n8n workflow. The result is a ready-to-post TikTok (or YouTube Shorts) clip that looks professional, sounds natural, and scales to dozens of pieces per week.

faceless AI video automation is the process of creating short video content with synthetic visuals and AI-generated voiceovers, without any human on-camera presence.

Below you'll find the exact stack, a reproducible workflow, and the hard truths that usually bite newcomers.


What you need

ToolPlan / PriceRole
Pika Labs (video generation AI)See Pika's current pricing pageGenerates the visual layer from a text prompt
ElevenLabs (AI voiceover)See ElevenLabs' current pricing pageProduces lifelike speech from a script
n8n (workflow automation)Self-hosted (Docker, free) or n8n.cloud Free tierOrchestrates API calls, file handling, and posting
ffmpeg (media processing)Free, open-sourceMerges video and audio tracks
AWS S3 (or similar object store)Free tier (5 GB) or pay-as-you-goHolds intermediate assets for the workflow
TikTok Developer Account / APIFree (requires approval)Sends the final clip to your TikTok channel
Optional: Google Sheet (script source)FreeSimple UI for copy-pasting prompts and scripts

Estimated build time: roughly 8 hours including testing and credential setup.


How to make faceless AI videos for TikTok - the build

1. Prepare your environment

  1. Install n8n locally with Docker (recommended for quick iteration):
bash
docker run -d --name n8n \
 -p 5678:5678 \
 -v ~/.n8n:/home/node/.n8n \
 n8nio/n8n
  1. Install ffmpeg on the same machine (Linux example):
bash
sudo apt-get update && sudo apt-get install -y ffmpeg
  1. Create an AWS S3 bucket (e.g., my-faceless-assets). Keep the access key ID and secret handy - you'll need them in n8n's credential store.

2. Wire the trigger

The simplest trigger is a Google Sheet row addition. In n8n:

Add a Google Sheets node, set Operation to Watch (poll every 5 minutes). * Choose the sheet where you'll write three columns: Prompt, Script, Title.

Tip: Using a sheet lets non-technical collaborators submit ideas without touching the workflow.

3. Generate the visual with Pika Labs

Add an HTTP Request node right after the trigger. Configure it as follows:

Method: `POST` URL: https://api.pika.art/v1/generate (refer to the latest Pika Labs docs) Authentication: Bearer token (store the token in n8n credentials) Headers: Content-Type: application/json Body (JSON):

json
{
 "prompt": "{{$json[\"Prompt\"]}}",
 "duration_seconds": 15,
 "style": "cinematic"
}

This node sends your textual prompt to Pika Labs and returns a JSON payload containing a temporary video_url.

4. Synthesize the voice with ElevenLabs

Insert another HTTP Request node, connected to the previous one:

Method: `POST` URL: https://api.elevenlabs.io/v1/text-to-speech/{{voice_id}} (replace {{voice_id}} with the ID of the voice you created) Authentication: Bearer token (store in n8n) Headers: Content-Type: application/json Body (JSON):

json
{
 "text": "{{$json[\"Script\"]}}",
 "model_id": "eleven_monolingual_v1",
 "voice_settings": {
 "stability": 0.75,
 "similarity_boost": 0.85
 }
}

ElevenLabs returns a binary audio stream; enable Response FormatFile so n8n saves it as a temporary file.

5. Merge video and audio with ffmpeg

Add an Execute Command node. Its command builds the final TikTok-ready clip:

bash
ffmpeg -y -i "{{$node["HTTP Request (Pika)"].json.video_url}}" \
 -i "{{$node["HTTP Request (ElevenLabs)"].binary.data}}" \
 -c:v libx264 -c:a aac -shortest "/data/output/{{$json[\"Title\"]}}.mp4"

Explanation: `-i` pulls the generated video and the synthesized audio. -c:v libx264 encodes video in H.264 (TikTok's preferred codec). `-c:a aac` encodes audio in AAC. -shortest trims any excess so the two tracks end together.

The resulting file lands in n8n's /data/output/ folder.

6. Store the asset on S3

Add an AWS S3 node:

Operation: `Upload` Bucket: my-faceless-assets File Name: `{{$json["Title"]}}.mp4` File Content: {{ $node["Execute Command"].binary.data }}

You now have a persistent URL (s3://...) that you can reuse for analytics or re-posting.

7. Publish to TikTok

TikTok's public API for video upload is still in beta; the reliable route is the TikTok Business API. Assuming you have obtained an access_token:

Add another HTTP Request node. Method: POST URL: `https://open-api.tiktok.com/video/upload/` Authentication: Bearer token ({{ $credentials.tiktok.access_token }}) Form Data: video_file → File from the previous S3 node ({{ $node["AWS S3"].json.s3_url }}) * title{{$json["Title"]}}

If the upload succeeds, TikTok returns a video_id. You can optionally call the Create Post endpoint to publish immediately.

8. Notify yourself

Finish the workflow with a Telegram or Email node that sends you the TikTok link, the S3 URL, and any error logs. This keeps you in the loop without staring at the n8n UI.


Where this breaks

Failure modeSymptomFix
API authentication expiresHTTP 401 from Pika or ElevenLabsStore refresh logic in n8n credentials; set token lifespan alerts
Rate-limit hit429 response, workflow stallsBack-off using n8n's built-in Retry option; batch prompts to stay under provider caps
Mismatched durationsAudio continues after video ends, producing silenceUse -shortest flag (already in ffmpeg command) or pre-calculate script length and set duration_seconds accordingly
TikTok upload size limitAPI returns file_too_largeKeep final MP4 under 100 MB (TikTok's limit) - 15 s at 1080p usually stays well below
Unexpected formatVideo appears distorted on TikTokVerify codec (libx264 + aac) and use -pix_fmt yuv420p flag in ffmpeg if needed
Cost creepMonthly bill spikesMonitor usage dashboards in Pika and ElevenLabs; set n8n alerts when daily API calls exceed a threshold

Key insight: The most common blocker is token expiration; automate credential rotation early to avoid silent failures.


For a deeper technical reference, see n8n's documentation.

Frequently asked questions

How do I get a TikTok developer token?

Sign up for a TikTok for Developers account, create an app, and follow the OAuth flow to generate an `access_token`. The token must be refreshed every 60 days; n8n can run a small cron workflow that calls the refresh endpoint and updates the credential store.

Can I use a different text-to-speech provider?

Yes. Replace the ElevenLabs HTTP node with any provider that accepts a plain-text payload and returns an audio file. Just adjust the request body and authentication accordingly.

Is it possible to run the whole pipeline in the cloud without a local ffmpeg install?

n8n.cloud offers a Docker execution mode where you can define a custom Docker image that includes ffmpeg. Alternatively, use a serverless function (e.g., AWS Lambda) that invokes ffmpeg via a layer.

What if I want to batch-produce 30 videos per day?

Scale horizontally: run multiple n8n workers behind a queue (e.g., Redis). Keep each worker's API request count under the providers' daily limits, and stagger the Google Sheet trigger to avoid spikes.

Do I need to pay for the AWS S3 bucket?

AWS provides a free tier of 5 GB storage and 20 000 GET requests per month. Monitor usage in the AWS console; once you exceed the free tier, costs are pay-as-you-go at $0.023 / GB per month.

Where can I learn more about faceless AI video automation?

Check the AI automations you can sell guide on our site (https://getaab.com/ai-automations-to-sell) and download the free guide for deeper case studies (https://getaab.com/free). --- By following this blueprint you'll have a repeatable, low-maintenance system that turns a single line of text into a polished TikTok video - no camera, no studio, no actor required. The same workflow can be repurposed

Get the full toolkit

Grab the free guide with the node-by-node build for all 10 automations.

No spam. Unsubscribe anytime. Just the good stuff.