AI Video Meme Maker avatar
AI Video Meme Maker

Pricing

from $0.01 / 1,000 results

Go to Apify Store
AI Video Meme Maker

AI Video Meme Maker

Create viral-worthy multi-scene videos using AI. Just describe what you want, and an AI agent orchestrates the entire creative process - from making a plan, finding/editing reference images to generating the final scenes. The Claude Code agent uses tools to call fal.ai models.

Pricing

from $0.01 / 1,000 results

Rating

0.0

(0)

Developer

Mark Rieck

Mark Rieck

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

29 minutes ago

Last modified

Categories

Share

AI Meme Maker - Generate Meme Images & Videos from Text Prompts

Create viral-worthy meme images and videos using AI. Just describe what you want, and an AI agent orchestrates the entire creative process - from finding reference images to generating the final meme.

This actor uses an AI Agent powered by Claude to intelligently create memes. It searches for reference photos, generates custom images, and combines them into the perfect meme. For videos, it animates your meme with realistic motion using Google's Veo 3.1.

What does AI Meme Maker do?

AI Meme Maker transforms text descriptions into meme content through a multi-step creative process:

  1. Understands your concept - Analyzes your prompt to determine the best approach
  2. Gathers reference images - Searches for real photos or generates fictional characters
  3. Creates the meme - Combines references into a polished final image
  4. Animates (for video) - Brings the meme to life with AI-generated motion and audio
  5. Adds captions (optional) - TikTok-style animated text overlays

Why Multi-Step?

Single-shot image generation often fails for memes because:

  • AI models struggle to generate recognizable real people without reference
  • Generic prompts produce generic results
  • The "vibe" of a meme matters as much as the subject

By using a reference-image-first approach, AI Meme Maker creates dramatically better results than simple text-to-image generation.

Output Types

Image Meme

A single still image. Fast and cheap - good for static social posts.

Video Meme (default)

A 4-8 second animated video with AI-generated motion and audio. Veo 3.1 can make characters talk with automatic lip sync when you include dialogue in your prompt.

Story Mode

Multi-scene videos for longer narratives. The agent breaks your story into 2-6 scenes, generates each one, and stitches them together into a cohesive video (15-45 seconds total).

Story mode supports two workflows:

  1. Full execution - Describe your story and the agent plans + generates everything
  2. Dry run (plan only) - Get the scene plan first, review it, then execute with approval

Voiceover vs Character Dialogue

For videos, you have two options for audio:

Option 1: Character Dialogue (Default for Veo)

Include dialogue in your video prompt and Veo 3.1 generates the audio with automatic lip sync.

Example prompt: "Elon Musk looking at the camera saying 'I'm going to Mars, want to come?'"

Option 2: Voiceover/Narration

Request a voiceover in your prompt for off-screen narration. The agent will generate the video without dialogue, create TTS audio with ElevenLabs, and merge them.

Example prompt: "A cat exploring space with dramatic narration: 'This is one small step for cat, one giant leap for feline kind.'"

Use voiceover for:

  • Explainer videos with product demos
  • Documentary-style narration
  • Tutorials where you show something while explaining
  • Any "narrator voice" that isn't a visible character

How much will it cost to run?

Pricing

AI Meme Maker uses pay-per-use pricing based on what gets generated:

EventPriceDescription
Image Operation$0.25Each image generated, edited, or expanded
Video Second$0.55Per second of video generated (4s, 6s, or 8s)
TTS Generation$0.05Each voiceover/narration generated
Audio Merge$0.02Each audio-video merge operation
Agent Turn$0.01Each AI reasoning step
Agent Tool Use$0.01Each tool the agent calls
Agent Image Read$0.02Each time the agent views an image

Typical Costs

Meme TypeTypical CostWhat You Get
Image Meme$1-3Reference search + 1-3 image generations + agent overhead
Video Meme (4s)$4-6Image generation + 4s video ($2.60) + agent overhead
Video Meme (8s)$6-9Image generation + 8s video ($5.20) + agent overhead
Video with Voiceover$5-10Video + TTS + audio merge + agent overhead
Story (3 scenes)$12-20Multiple scene generations + merging
Story Dry Run$0.10-0.30Agent overhead only (no generation)

With the Free plan's $5 monthly credit, you can create 1-2 image memes or explore the actor's capabilities.

Save Money with Your Own Fal.ai API Key

Provide your own fal.ai API key to eliminate image and video generation charges (typically 60-80% of the total cost). You'll only pay for agent overhead.

Meme TypeWith Our KeyWith Your KeyYou Save
Image Meme$1-3$0.20-0.50~80%
Video Meme (4s)$4-6$0.50-1.00~80%
Video Meme (8s)$6-9$0.50-1.00~85%
Story (3 scenes)$12-20$1-3~85%

How to get a fal.ai API key:

  1. Sign up at fal.ai (free tier available)
  2. Go to your dashboard and create an API key
  3. Paste it in the falApiKey input field

Fal.ai offers competitive pay-as-you-go pricing for image/video generation. You'll be billed directly by fal.ai for the generation costs.

How to use AI Meme Maker

Step 1: Write your prompt

Describe the meme you want to create. Be specific about:

  • Who/what is in the meme
  • The mood/emotion they should convey
  • The scene/setting
  • The joke or message (if applicable)

Good prompt examples:

  • "Elon Musk looking confused at a whiteboard full of complicated equations"
  • "A cute blue alien dancing on the moon"
  • "Mark Zuckerberg trying to act human at a BBQ"

For stories, describe the narrative arc:

  • "A day in the life of a stressed programmer: waking up tired, fighting with code, celebrating when it finally works"

For voiceover, include the narration text:

  • "A timelapse of a flower blooming with narration: 'Nature's patience teaches us that growth takes time.'"

Step 2: Choose output type

  • video (default) - Animated meme with motion and audio
  • image - Static meme image
  • story - Multi-scene narrative video

Step 3: Run the actor

Click "Start" and wait. The agent will:

  1. Search for reference images (for real people) or generate them (for fictional)
  2. Combine references into the meme scene
  3. Review the result and regenerate if needed
  4. For videos: expand to correct aspect ratio and animate
  5. For stories: repeat for each scene, then merge all videos

Step 4: Get your meme

Results are saved to:

  • OUTPUT key in Key-Value Store - The final result URL
  • Dataset - Full details including all generated URLs and costs

Input Parameters

Required

FieldTypeDescription
promptStringDescribe the meme you want to create. For stories, describe the narrative arc. For voiceovers, include the narration text.

Optional

FieldTypeDefaultDescription
memeTypeString"video"Output type: "image", "video", or "story"
dryRunBooleanfalseStory mode only: return the scene plan without generating content
storyPlanObject-Story mode only: execute a pre-approved plan from a previous dry run
refineFeedbackString-Story mode only: feedback to refine a previous plan (use with storyPlan + dryRun)
maxAttemptsInteger5Max regeneration attempts before giving up
addCaptionsBooleantrueAdd TikTok-style animated captions (video/story only)
captionPresetString"bounce"Caption style: "bounce", "highlightColor", or "backgroundBox"
falApiKeyString-Your own fal.ai API key to save on generation costs

Input Examples

Simple Image Meme

{
"prompt": "Elon Musk looking confused at a whiteboard full of complicated equations",
"memeType": "image"
}

Video Meme with Character Dialogue

{
"prompt": "A golden retriever wearing a tiny business suit giving a TED talk, saying 'And that's why treats should be tax deductible'",
"memeType": "video",
"addCaptions": true,
"captionPreset": "bounce"
}

Video with Voiceover Narration

{
"prompt": "A majestic eagle soaring over mountains with dramatic narration: 'Freedom isn't given. It's taken. One wing beat at a time.'",
"memeType": "video"
}

Story Mode - Full Execution

{
"prompt": "The rise and fall of a TikTok influencer: starting with zero followers filming in their bedroom, going viral, living the celebrity life, then getting cancelled and back to the bedroom",
"memeType": "story",
"maxAttempts": 5
}

Story Mode - Dry Run (Plan Only)

Get the scene plan first without generating any content:

{
"prompt": "A day in the life of a cat: waking up, demanding food, ignoring the human, napping in a sunbeam, causing chaos at 3am",
"memeType": "story",
"dryRun": true
}

Dry run output example:

{
"dry_run": true,
"story_plan": {
"title": "A Day in the Life of a Cat",
"summary": "Follow a house cat through a typical day of demanding attention, strategic napping, and nocturnal chaos.",
"estimatedTotalDuration": 24,
"scenes": [
{
"sceneNumber": 1,
"title": "Morning Demands",
"videoPrompt": "Orange tabby cat sitting next to empty food bowl, meowing loudly at camera",
"duration": 4,
"referenceStrategy": "generate",
"generationPrompt": "fluffy orange tabby cat sitting next to empty silver food bowl, morning kitchen light"
},
{
"sceneNumber": 2,
"title": "Ignoring the Human",
"videoPrompt": "Cat deliberately turning away from human's outstretched hand, looking aloof",
"duration": 4,
"referenceStrategy": "generate",
"generationPrompt": "orange tabby cat looking away dismissively, human hand reaching toward it"
}
],
"styleNotes": "Comedic, relatable cat owner humor"
},
"message": "Story plan created - review and execute with storyPlan parameter",
"total_charge_usd": 0.15
}

Story Mode - Execute Pre-Approved Plan

After reviewing and optionally editing the dry run plan, execute it:

{
"prompt": "Execute the cat story",
"memeType": "story",
"storyPlan": {
"title": "A Day in the Life of a Cat",
"summary": "Follow a house cat through a typical day...",
"estimatedTotalDuration": 24,
"scenes": [
{
"sceneNumber": 1,
"title": "Morning Demands",
"videoPrompt": "Orange tabby cat sitting next to empty food bowl, meowing loudly at camera",
"duration": 4,
"referenceStrategy": "generate",
"generationPrompt": "fluffy orange tabby cat sitting next to empty silver food bowl, morning kitchen light"
}
]
}
}

Story Mode - Refine a Plan

Not happy with the plan? Pass it back with feedback to refine it:

{
"prompt": "A day in the life of a cat",
"memeType": "story",
"dryRun": true,
"storyPlan": { "...previous plan from dry run..." },
"refineFeedback": "Add a scene where the cat knocks things off a table. Also make the final scene longer - 8 seconds instead of 4."
}

The agent receives the full system prompt plus your previous plan and feedback, then returns an updated plan. You can refine multiple times until satisfied, then execute.

Complex Scene with Voiceover

{
"prompt": "Donald Trump and Joe Biden playing chess in Central Park, both looking intensely focused. Narration: 'In Washington, every move is calculated. Every piece has a purpose. But only one can win.'",
"memeType": "video",
"maxAttempts": 5
}

Using Your Own Fal.ai Key (Save ~80%)

{
"prompt": "A cat astronaut floating in space looking majestic",
"memeType": "video",
"falApiKey": "your-fal-api-key-here"
}

API Usage Examples

Using cURL

$curl -X POST "https://api.apify.com/v2/acts/YOUR_USERNAME~ai-meme-maker/runs" -H "Content-Type: application/json" -H "Authorization: Bearer YOUR_APIFY_TOKEN" -d '{"prompt": "A cat astronaut floating in space looking majestic", "memeType": "video"}'

Story Dry Run via cURL

$curl -X POST "https://api.apify.com/v2/acts/YOUR_USERNAME~ai-meme-maker/runs" -H "Content-Type: application/json" -H "Authorization: Bearer YOUR_APIFY_TOKEN" -d '{"prompt": "A programmer debugging code at 3am, finding the bug, celebrating", "memeType": "story", "dryRun": true}'

Using JavaScript/Node.js

import { ApifyClient } from 'apify-client';
const apifyClient = new ApifyClient({
token: 'YOUR_APIFY_TOKEN',
});
// Simple video meme
const run = await apifyClient
.actor('YOUR_USERNAME~ai-meme-maker')
.call({
prompt: 'A cat astronaut floating in space looking majestic',
memeType: 'video',
addCaptions: true
});
console.log('Run started:', run);
// Wait for completion and get results
const { items } = await apifyClient
.dataset(run.defaultDatasetId)
.listItems();
console.log('Meme URL:', items[0]?.result_url);

Story Mode with Plan Refinement (JavaScript)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const actor = client.actor('YOUR_USERNAME~ai-meme-maker');
// Step 1: Get initial plan (dry run)
const planRun = await actor.call({
prompt: 'A dog learning to skateboard: first attempts, falling, practicing, finally succeeding',
memeType: 'story',
dryRun: true
});
const planResult = await client.dataset(planRun.defaultDatasetId).listItems();
let storyPlan = planResult.items[0].story_plan;
console.log('Initial plan:', JSON.stringify(storyPlan, null, 2));
// Step 2: Refine the plan with feedback
const refineRun = await actor.call({
prompt: 'A dog learning to skateboard',
memeType: 'story',
dryRun: true,
storyPlan: storyPlan,
refineFeedback: 'Make it funnier - add a scene where the dog crashes into a trash can. Also add a triumphant ending scene.'
});
const refineResult = await client.dataset(refineRun.defaultDatasetId).listItems();
storyPlan = refineResult.items[0].story_plan;
console.log('Refined plan:', JSON.stringify(storyPlan, null, 2));
// Step 3: Execute the final plan
const executeRun = await actor.call({
prompt: 'Execute the skateboarding dog story',
memeType: 'story',
storyPlan: storyPlan
});
const result = await client.dataset(executeRun.defaultDatasetId).listItems();
console.log('Final video:', result.items[0].result_url);

Using Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_APIFY_TOKEN')
run = client.actor('YOUR_USERNAME~ai-meme-maker').call(
run_input={
'prompt': 'A cat astronaut floating in space looking majestic',
'memeType': 'video',
'addCaptions': True
}
)
dataset_items = client.dataset(run['defaultDatasetId']).list_items().items
print('Meme URL:', dataset_items[0]['result_url'])

Story Mode with Plan Refinement (Python)

from apify_client import ApifyClient
import json
client = ApifyClient('YOUR_APIFY_TOKEN')
actor = client.actor('YOUR_USERNAME~ai-meme-maker')
# Step 1: Get initial plan (dry run)
plan_run = actor.call(run_input={
'prompt': 'A chef cooking a disaster: starting confident, things catching fire, serving burnt food with a smile',
'memeType': 'story',
'dryRun': True
})
plan_result = client.dataset(plan_run['defaultDatasetId']).list_items().items[0]
story_plan = plan_result['story_plan']
print('Initial plan:')
print(json.dumps(story_plan, indent=2))
# Step 2: Refine the plan with feedback
refine_run = actor.call(run_input={
'prompt': 'A chef cooking a disaster',
'memeType': 'story',
'dryRun': True,
'storyPlan': story_plan,
'refineFeedback': 'Add more drama - include a scene where the smoke alarm goes off. Make the final scene more awkward.'
})
refine_result = client.dataset(refine_run['defaultDatasetId']).list_items().items[0]
story_plan = refine_result['story_plan']
print('Refined plan:')
print(json.dumps(story_plan, indent=2))
# Step 3: Execute the final plan
execute_run = actor.call(run_input={
'prompt': 'Execute the chef story',
'memeType': 'story',
'storyPlan': story_plan
})
result = client.dataset(execute_run['defaultDatasetId']).list_items().items[0]
print('Final video:', result['result_url'])

Get Run Status

$curl "https://api.apify.com/v2/actor-runs/RUN_ID" -H "Authorization: Bearer YOUR_APIFY_TOKEN"

Get Results

$curl "https://api.apify.com/v2/datasets/DATASET_ID/items" -H "Authorization: Bearer YOUR_APIFY_TOKEN"

Results

Output Structure

{
"result_url": "https://fal.media/files/example/final-meme.mp4",
"message": "Created video meme of cat astronaut in space",
"meme_type": "video",
"image_gen_count": 2,
"video_gen_count": 1,
"video_duration": 4,
"tts_gen_count": 0,
"audio_merge_count": 0,
"total_charge_usd": 4.85,
"prompt": "A cat astronaut floating in space looking majestic",
"processing_time_ms": 180000,
"all_generated_urls": [
"https://fal.media/files/example/reference.png",
"https://fal.media/files/example/expanded.png",
"https://fal.media/files/example/final-meme.mp4"
]
}

Story Mode Output

{
"result_url": "https://fal.media/files/example/merged-story.mp4",
"message": "Created 3-scene story video",
"meme_type": "story",
"image_gen_count": 6,
"video_gen_count": 3,
"video_duration": 16,
"tts_gen_count": 0,
"audio_merge_count": 0,
"total_charge_usd": 15.20,
"story_plan": { "...plan object..." },
"scene_results": [
{
"sceneNumber": 1,
"videoUrl": "https://...",
"duration": 4
}
],
"canvas_export": { "...canvas format for import..." }
}

Output Fields

FieldDescription
result_urlURL to the final meme (image or video)
messageDescription of what was created
meme_type"image", "video", or "story"
image_gen_countNumber of image operations performed
video_gen_countNumber of videos generated
video_durationVideo length in seconds (0 for images)
tts_gen_countNumber of TTS/voiceover generations
audio_merge_countNumber of audio-video merges
total_charge_usdTotal cost of this run
all_generated_urlsAll intermediate and final assets created
story_plan(Story only) The scene plan used
scene_results(Story only) Results for each scene
dry_run(Dry run only) True if this was a plan-only run

Accessing Generated Assets

All generated images and videos are also saved to the Key-Value Store with keys like:

  • generated-1-filename.png
  • generated-2-filename.mp4

This lets you access intermediate results if the final meme used multiple generation steps.

FAQ

What models are used?

  • Images: nano-banana-pro for generation, reve-remix for combining references
  • Videos: Veo 3.1 (Google) for best quality with audio, ltxv-2 as fallback
  • TTS/Voiceover: ElevenLabs with multiple voice options
  • Agent: Claude for orchestration and decision-making

Why did my video fail?

Common reasons:

  • Content policy: Veo 3.1 has content restrictions. The agent will retry with ltxv-2 automatically.
  • Max attempts reached: Complex scenes may need more attempts. Increase maxAttempts.
  • Ambiguous prompt: Be more specific about what you want.

How long does it take?

  • Image memes: 1-3 minutes
  • Video memes: 3-8 minutes (video generation takes ~5 minutes)
  • Video with voiceover: 4-10 minutes (adds TTS and merge steps)
  • Story (3 scenes): 10-20 minutes
  • Story dry run: 30 seconds - 1 minute (agent planning only)

When should I use voiceover vs character dialogue?

  • Character dialogue: When a visible person/character should be speaking on screen. Veo 3.1 handles lip sync automatically.
  • Voiceover: When you want narration over the video, documentary style, or when the speaker shouldn't be visible.

What's the point of story dry run mode?

Dry run lets you:

  1. Preview the plan before spending money on generation
  2. Refine the plan with feedback (pass storyPlan + refineFeedback + dryRun: true)
  3. Iterate multiple times until the plan is perfect
  4. Approve execution only when you're happy with the plan
  5. Save money if the agent misunderstood your story

Can I use copyrighted characters?

The AI may struggle with specific copyrighted characters. For best results with fictional characters, describe their appearance rather than naming them.

Why are videos limited to 4-8 seconds?

This is a limitation of current video generation models. For longer content, use story mode which chains multiple scenes together (up to ~45 seconds total).

Can I disable captions?

Yes, set addCaptions: false in your input.

How do I save money on runs?

Provide your own fal.ai API key in the falApiKey input field. This eliminates image/video generation charges (typically 60-80% of the cost). You'll only pay agent overhead on Apify, and fal.ai bills you directly for generation.

Support

Having issues or feature requests? Report them on the Apify actor page.


AI-powered meme generation using Claude + fal.ai