AI Video Meme Maker
Pricing
from $0.01 / 1,000 results
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
Actor stats
0
Bookmarked
3
Total users
2
Monthly active users
29 minutes ago
Last modified
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:
- Understands your concept - Analyzes your prompt to determine the best approach
- Gathers reference images - Searches for real photos or generates fictional characters
- Creates the meme - Combines references into a polished final image
- Animates (for video) - Brings the meme to life with AI-generated motion and audio
- 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:
- Full execution - Describe your story and the agent plans + generates everything
- 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:
| Event | Price | Description |
|---|---|---|
| Image Operation | $0.25 | Each image generated, edited, or expanded |
| Video Second | $0.55 | Per second of video generated (4s, 6s, or 8s) |
| TTS Generation | $0.05 | Each voiceover/narration generated |
| Audio Merge | $0.02 | Each audio-video merge operation |
| Agent Turn | $0.01 | Each AI reasoning step |
| Agent Tool Use | $0.01 | Each tool the agent calls |
| Agent Image Read | $0.02 | Each time the agent views an image |
Typical Costs
| Meme Type | Typical Cost | What You Get |
|---|---|---|
| Image Meme | $1-3 | Reference search + 1-3 image generations + agent overhead |
| Video Meme (4s) | $4-6 | Image generation + 4s video ($2.60) + agent overhead |
| Video Meme (8s) | $6-9 | Image generation + 8s video ($5.20) + agent overhead |
| Video with Voiceover | $5-10 | Video + TTS + audio merge + agent overhead |
| Story (3 scenes) | $12-20 | Multiple scene generations + merging |
| Story Dry Run | $0.10-0.30 | Agent 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 Type | With Our Key | With Your Key | You 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:
- Sign up at fal.ai (free tier available)
- Go to your dashboard and create an API key
- Paste it in the
falApiKeyinput 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:
- Search for reference images (for real people) or generate them (for fictional)
- Combine references into the meme scene
- Review the result and regenerate if needed
- For videos: expand to correct aspect ratio and animate
- 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
| Field | Type | Description |
|---|---|---|
prompt | String | Describe the meme you want to create. For stories, describe the narrative arc. For voiceovers, include the narration text. |
Optional
| Field | Type | Default | Description |
|---|---|---|---|
memeType | String | "video" | Output type: "image", "video", or "story" |
dryRun | Boolean | false | Story mode only: return the scene plan without generating content |
storyPlan | Object | - | Story mode only: execute a pre-approved plan from a previous dry run |
refineFeedback | String | - | Story mode only: feedback to refine a previous plan (use with storyPlan + dryRun) |
maxAttempts | Integer | 5 | Max regeneration attempts before giving up |
addCaptions | Boolean | true | Add TikTok-style animated captions (video/story only) |
captionPreset | String | "bounce" | Caption style: "bounce", "highlightColor", or "backgroundBox" |
falApiKey | String | - | 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 memeconst 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 resultsconst { 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 feedbackconst 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 planconst 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 ApifyClientclient = 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().itemsprint('Meme URL:', dataset_items[0]['result_url'])
Story Mode with Plan Refinement (Python)
from apify_client import ApifyClientimport jsonclient = 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 feedbackrefine_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 planexecute_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
| Field | Description |
|---|---|
result_url | URL to the final meme (image or video) |
message | Description of what was created |
meme_type | "image", "video", or "story" |
image_gen_count | Number of image operations performed |
video_gen_count | Number of videos generated |
video_duration | Video length in seconds (0 for images) |
tts_gen_count | Number of TTS/voiceover generations |
audio_merge_count | Number of audio-video merges |
total_charge_usd | Total cost of this run |
all_generated_urls | All 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.pnggenerated-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:
- Preview the plan before spending money on generation
- Refine the plan with feedback (pass
storyPlan+refineFeedback+dryRun: true) - Iterate multiple times until the plan is perfect
- Approve execution only when you're happy with the plan
- 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