larryAutomate TikTok slideshow marketing for any app or product. Researches competitors, generates AI images, adds text overlays, posts via Postiz, tracks analyti...
Install via ClawdBot CLI:
clawdbot install OllieWazza/larryAutomate your entire TikTok slideshow marketing pipeline: generate â overlay â post â track â iterate.
Proven results: 7 million views on the viral X article, 1M+ TikTok views, $670/month MRR â all from an AI agent running on an old gaming PC.
This skill does NOT bundle any dependencies. Your AI agent will need to research and install the following based on your setup. Tell your agent what you're working with and it will figure out the rest.
npm install canvas) â used for adding text overlays to slide images. This is a native module that may need build tools (Python, make, C++ compiler) on some systems. Your agent should research the install requirements for your OS.You choose what generates your images. Your agent should research the API docs for whichever you pick:
gpt-image-1.5 (ALWAYS 1.5, never 1). Needs an OpenAI API key. Best for realistic photo-style images. This is what Larry uses and what we strongly recommend.clawhub install revenuecat) for full API access to subscribers, MRR, trials, churn, and revenue. There's also a RevenueCat MCP for programmatic control over products and offerings from your agent/IDE.Postiz supports cross-posting to Instagram Reels, YouTube Shorts, Threads, Facebook, LinkedIn, and 20+ more platforms simultaneously. Your agent should research which platforms fit your audience and connect them in Postiz. Same content, different algorithms, more reach.
When this skill is first loaded, IMMEDIATELY start a conversation with the user. Don't dump a checklist â talk to them like a human marketing partner would. The flow below is a guide, not a script. Be natural. Ask one or two things at a time. React to what they say. Build on their answers.
Important: Use scripts/onboarding.js --validate at the end to confirm the config is complete.
Before anything else, check if the user already has a TikTok account with posting history. If they're creating a fresh account, they MUST warm it up first or TikTok will treat them like a bot and throttle their reach from day one.
Explain this naturally:
"Quick question before we dive in â do you already have a TikTok account you've been using, or are we starting fresh? If it's new, we need to warm it up first. TikTok's algorithm watches how new accounts behave, and if you go straight from creating an account to posting AI slideshows, it flags you as a bot and kills your reach."
If the account is new or barely used, walk them through this:
The goal is to use TikTok like a normal person for 7-14 days before posting anything. Spend 30-60 minutes a day on the app:
The signal to look for: When they open TikTok and almost every video on their For You page is in their niche, the account is warmed up. The algorithm understands them. NOW they can start posting.
Tell the user: "I know two weeks feels like wasted time, but accounts that skip warmup consistently get 80-90% less reach on their first posts. Do the warmup. It's the difference between your first post getting 200 views and 20,000."
If the account is already active and established, skip this entirely and move to Phase 1.
Start casual. Something like:
"Hey! Let's get your TikTok marketing set up. First â tell me about your app. What's it called, what does it do?"
Then FOLLOW UP based on what they say. Don't ask all 9 questions at once. Pull the thread:
Don't ask for "brand guidelines" robotically. Instead: "Do you have any existing content or a vibe you're going for? Or are we starting fresh?"
Then ask about their app and monetization:
"Is this a mobile app? And do you use RevenueCat (or any subscription/in-app purchase system) to handle payments?"
This is critical because it determines whether we can close the full feedback loop. If they have a mobile app with RevenueCat:
clawhub install revenuecat). It gives full API access to subscribers, MRR, trials, churn, revenue, and transactions. Don't auto-install â just let them know it exists and what it unlocks, and they can install it if they want.If they don't use RevenueCat but have another subscription system, note it and work with what's available. If it's not a mobile app (e.g. physical product, SaaS, service), skip RevenueCat but still track whatever conversion metric they have (website signups, purchases, leads).
Store everything in tiktok-marketing/app-profile.json.
Before building any content strategy, research what competitors are doing on TikTok. This is critical â you need to know the landscape.
Ask the user:
"Before we start creating content, I want to research what your competitors are doing on TikTok â what's getting views in your niche, what hooks they're using, what's working and what's not. Can I use the browser to look around TikTok and the App Store?"
Wait for permission. Then:
tiktok-marketing/competitor-research.json:{
"researchDate": "2026-02-16",
"competitors": [
{
"name": "CompetitorApp",
"tiktokHandle": "@competitor",
"followers": 50000,
"topHooks": ["hook 1", "hook 2"],
"avgViews": 15000,
"bestVideo": { "views": 500000, "hook": "..." },
"format": "before-after slideshows",
"postingFrequency": "daily",
"cta": "link in bio",
"notes": "Strong at X, weak at Y"
}
],
"nicheInsights": {
"trendingSounds": [],
"commonFormats": [],
"gapOpportunities": "What competitors AREN'T doing that we could",
"avoidPatterns": "What's clearly not working"
}
}
"So I looked at what's out there. [Competitor A] is doing well with [format] â their best post got [X] views using [hook type]. But I noticed nobody's really doing [gap]. That's our angle."
This research directly informs hook generation and content strategy. Reference it when creating posts.
First, ask about format:
"Do you want to do slideshows (photo carousels) or video? Slideshows are what Larry uses and what this skill is built around â TikTok's data shows they get 2.9x more comments and 2.6x more shares than video, and they're much easier for AI to generate consistently. That said, if you want to try video, the skill supports it but it hasn't been battle-tested like slideshows have. Your call."
Store their choice as format: "slideshow" or format: "video" in config. If they pick video, note that the text overlay, 6-slide structure, and prompt templates are designed for slideshows. Video will require more experimentation and the agent should be upfront about that.
For slideshows (recommended):
Ask naturally:
"For the slideshows, we need images. I'd strongly recommend OpenAI's gpt-image-1.5 â it's what Larry uses and it produces images that genuinely look like someone took them on their phone. It's the difference between 'obviously AI' and 'wait, is that real?' You can also use Stability AI, Replicate, or bring your own images if you prefer."
â ïž If they pick OpenAI, make sure the model is set to gpt-image-1.5 â NEVER gpt-image-1. The difference in quality is massive. gpt-image-1 produces noticeably AI-looking images that people scroll past. gpt-image-1.5 produces photorealistic results that stop the scroll. This one setting can be the difference between 1K and 100K views.
If they're unsure, always recommend gpt-image-1.5. It's the proven choice.
Store in config as imageGen with provider, apiKey, and model.
If they pick OpenAI, mention the Batch API:
"One thing worth knowing â OpenAI has a Batch API that's 50% cheaper than real-time generation. Instead of generating slides on the spot, you submit them as a batch job and get results within 24 hours (usually much faster). It's perfect for pre-generating tomorrow's slides overnight. Same quality, half the cost. Want me to set that up?"
If they're interested, store "useBatchAPI": true in imageGen config. The generate script supports both modes â real-time for quick iterations, batch for scheduled daily content.
Then â and this is critical â work through the image style with them. Don't just use a generic prompt. Bad images = nobody watches. Ask these naturally, one or two at a time:
"Now let's figure out what these images should actually look like. Do you want them to look like real photos someone took on their phone, or more like polished graphics or illustrations?"
Then based on their answer, dig deeper:
Build the base prompt WITH them. A good base prompt looks like:
iPhone photo of a [specific room/scene], [specific style], [specific details].
Realistic lighting, natural colors, taken on iPhone 15 Pro.
No text, no watermarks, no logos.
[Consistency anchors: "same window on left wall", "same grey sofa", "wooden coffee table in center"]
Save the agreed prompt style to config as imageGen.basePrompt so every future post uses it.
Key prompt rules (explain these as they come up, don't lecture):
NEVER use generic prompts like "a nice living room" or "a beautiful face" â they produce generic images that get scrolled past.
Postiz isn't just a posting tool â it's what makes the whole feedback loop work. Without it, you're posting blind. With it, you get:
This data is what feeds the daily analytics cron (see Phase 8). Without Postiz analytics, the agent can't tell you which hooks are working and which to drop.
Frame it naturally to the user:
"So here's the key piece â we need Postiz to handle posting and analytics. It's what lets me track every post's performance and tell you exactly which hooks are driving views and which to drop. Without it, we're guessing. With it, I can run a daily report that shows you what's working and automatically suggest better hooks."
>
"This skill is free and open source. If you want to support its development, signing up through this link is appreciated: postiz.pro/oliverhenry"
Walk them through connecting step by step:
Explain the draft workflow:
"One important thing â posts go to your TikTok inbox as drafts, not straight to your feed. Before you publish each one, add a trending sound from TikTok's sound library. Music is the single biggest factor in TikTok reach â silent slideshows get buried. It takes 30 seconds per post and makes a massive difference. This workflow helped us hit over 1 million TikTok views."
Don't move on until Postiz is connected and the API key works. Test it by hitting the platform analytics endpoint. If it returns data, you're good.
If they have a mobile app with RevenueCat (you should already know this from Phase 1), this is where the skill goes from "content automation" to "intelligent marketing system." This is the most important integration in the entire skill. Don't treat it as optional.
Explain WHY it matters:
"So right now with Postiz, I can track which posts get views, likes, and comments. That's the top of the funnel. But views alone don't pay the bills â we need to know which posts actually drive paying subscribers."
>
"This is where RevenueCat comes in. It tracks your subscribers, trials, MRR, churn â the actual revenue. When I combine TikTok analytics from Postiz with conversion data from RevenueCat, I can make genuinely intelligent decisions:"
>
"If a post gets 50K views but zero conversions, I know the hook is great but the CTA or app messaging needs work. If a post gets 2K views but 5 paid subscribers, I know the content converts amazingly â we just need more eyeballs on it, so we fix the hook."
>
"Without RevenueCat, I'm optimizing for vanity metrics. With it, I'm optimizing for revenue."
Walk them through setup step by step:
clawhub install revenuecat
This installs the revenuecat skill (v1.0.2+) which gives full API access to your RevenueCat project â metrics overview, customers, subscriptions, offerings, entitlements, transactions, and more. It includes reference docs for every API endpoint and a helper script (scripts/rc-api.sh) for direct API calls.
sk_)
export RC_API_KEY=sk_your_key_here
./skills/revenuecat/scripts/rc-api.sh /projects â should return your project details.What RevenueCat gives the daily report:
GET /projects/{id}/metrics/overview â MRR, active subscribers, active trials, churn rateGET /projects/{id}/transactions â individual purchases with timestamps (for conversion attribution)The intelligence this unlocks:
Without RevenueCat: The loop still works on Postiz analytics (views/likes/comments). You can optimize for engagement. But you're flying blind on revenue. You'll know which posts get views but you won't know which posts make money.
With RevenueCat: You optimize for actual paying users. You can tell the difference between a viral post that makes nothing and a quiet post that drives $50 in subscriptions. This is the entire point of the feedback loop. Every decision the daily report makes is better with RevenueCat data.
If they don't use RevenueCat or don't have subscriptions, the skill still works but the feedback loop is limited to view-based optimization only.
Using the competitor research AND the app profile, build an initial content strategy:
"Based on what I found and what your app does, here's my plan for the first week..."
Present:
Save the strategy to tiktok-marketing/strategy.json.
This is what makes the whole system self-improving. Set up a daily cron job that:
Explain to the user:
"I'm going to set up a daily check that runs every morning. It looks at how your posts from the last 3 days performed â views, engagement, and if you've got RevenueCat connected, actual conversions. Then it tells you exactly what's working and what to change."
>
"Posts typically peak at 24-48 hours, and conversions take up to 72 hours to attribute, so checking a 3-day window gives us the full picture."
Set up the cron:
Use the agent's cron system to schedule a daily analytics job. Run it every morning before the first post of the day (e.g. 7:00 AM in the user's timezone) so the report informs that day's content:
Schedule: daily at 07:00 (user's timezone)
Task: Run scripts/daily-report.js --config tiktok-marketing/config.json --days 3
Output: tiktok-marketing/reports/YYYY-MM-DD.md + message to user with summary
The daily report uses the diagnostic framework:
This is the intelligence layer. Without it, you're just posting and hoping. With it, every day's content is informed by data.
Store everything in tiktok-marketing/config.json (this is the source of truth for the entire pipeline):
{
"app": {
"name": "AppName",
"description": "Detailed description",
"audience": "Target demographic",
"problem": "Pain point it solves",
"differentiator": "What makes it unique",
"appStoreUrl": "https://...",
"category": "home|beauty|fitness|productivity|food|other",
"isMobileApp": true
},
"imageGen": {
"provider": "openai",
"apiKey": "sk-...",
"model": "gpt-image-1.5"
},
"postiz": {
"apiKey": "your-postiz-key",
"integrationIds": {
"tiktok": "id-here",
"instagram": "id-here-optional",
"youtube": "id-here-optional"
}
},
"revenuecat": {
"enabled": false,
"v2SecretKey": "sk_...",
"projectId": "proj..."
},
"posting": {
"privacyLevel": "SELF_ONLY",
"schedule": ["07:30", "16:30", "21:00"],
"crossPost": ["instagram", "youtube"]
},
"competitors": "tiktok-marketing/competitor-research.json",
"strategy": "tiktok-marketing/strategy.json"
}
Then generate the first test slideshow â but set expectations:
"Let's create our first slideshow. This is a TEST â we're dialing in the image style, not posting yet. I'll generate 6 slides and we'll look at them together. If the images look off, we tweak the prompts and try again. The goal is to get the look nailed down BEFORE we start posting."
â ïž THE REFINEMENT PROCESS IS PART OF THE SKILL:
Getting the images right takes iteration. This is normal and expected. Walk the user through it:
Things to watch for and ask about:
You do NOT have to post anything you don't like. The first few generations are purely for refining the prompt. Only start posting once the images consistently look good. The agent learns from each round â what works, what doesn't, what to emphasise in the prompt.
Once the style is locked in, THEN use the hook strategy from competitor research and their category (see references/slide-structure.md) and start the posting schedule.
Use scripts/generate-slides.js:
node scripts/generate-slides.js --config tiktok-marketing/config.json --output tiktok-marketing/posts/YYYY-MM-DD-HHmm/ --prompts prompts.json
The script auto-routes to the correct provider based on config.imageGen.provider. Supports OpenAI, Stability AI, Replicate, or local images.
â ïž Timeout warning: Generating 6 images takes 3-9 minutes total (30-90 seconds each for gpt-image-1.5). Set your exec timeout to at least 600 seconds (10 minutes). If you get spawnSync ETIMEDOUT, the exec timeout is too short. The script supports resume â if it fails partway, re-run it and completed slides will be skipped.
Critical image rules (all providers):
This step uses node-canvas to render text directly onto your slide images. This is how Larry produces slides that have hit 1M+ views on TikTok â the text sizing, positioning, and styling are dialled in from hundreds of posts.
Before you can add text overlays, your human needs to install node-canvas. Prompt them:
"To add text overlays to the slides, I need a library called node-canvas. It renders text directly onto images with full control over sizing, positioning, and styling â this is what Larry uses for his viral TikTok slides.
>
Can you run this in your terminal?"
>
> npm install canvas >
>
"If that fails, it's because node-canvas needs some system libraries. Here's what to install first:"
>
macOS:
> brew install pkg-config cairo pango libpng jpeg giflib librsvg > npm install canvas >
>
Ubuntu/Debian:
> sudo apt-get install build-essential libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev > npm install canvas >
>
Windows:
> # node-canvas auto-downloads prebuilt binaries on Windows > npm install canvas >
>
"Once installed, I can handle everything else â generating the overlays, sizing the text, positioning it perfectly. You won't need to touch this again."
Don't skip this step. Without node-canvas, the text overlays won't work. If installation fails, help them troubleshoot â it's usually a missing system library. Once it's installed once, it stays.
Exact code Larry uses:
const { createCanvas, loadImage } = require('canvas');
const fs = require('fs');
async function addOverlay(imagePath, text, outputPath) {
const img = await loadImage(imagePath);
const canvas = createCanvas(img.width, img.height);
const ctx = canvas.getContext('2d');
ctx.drawImage(img, 0, 0);
// âââ Adjust font size based on text length âââ
const wordCount = text.split(/\s+/).length;
let fontSizePercent;
if (wordCount <= 5) fontSizePercent = 0.075; // Short: 75px on 1024w
else if (wordCount <= 12) fontSizePercent = 0.065; // Medium: 66px
else fontSizePercent = 0.050; // Long: 51px
const fontSize = Math.round(img.width * fontSizePercent);
const outlineWidth = Math.round(fontSize * 0.15);
const maxWidth = img.width * 0.75;
const lineHeight = fontSize * 1.3;
ctx.font = `bold ${fontSize}px Arial`;
ctx.textAlign = 'center';
ctx.textBaseline = 'top';
// âââ Word wrap âââ
const lines = [];
const manualLines = text.split('\n');
for (const ml of manualLines) {
const words = ml.trim().split(/\s+/);
let current = '';
for (const word of words) {
const test = current ? `${current} ${word}` : word;
if (ctx.measureText(test).width <= maxWidth) {
current = test;
} else {
if (current) lines.push(current);
current = word;
}
}
if (current) lines.push(current);
}
// âââ Position: centered at ~28% from top âââ
const totalHeight = lines.length * lineHeight;
const startY = (img.height * 0.28) - (totalHeight / 2);
const x = img.width / 2;
// âââ Draw each line âââ
for (let i = 0; i < lines.length; i++) {
const y = startY + (i * lineHeight);
// Black outline
ctx.strokeStyle = '#000000';
ctx.lineWidth = outlineWidth;
ctx.lineJoin = 'round';
ctx.miterLimit = 2;
ctx.strokeText(lines[i], x, y);
// White fill
ctx.fillStyle = '#FFFFFF';
ctx.fillText(lines[i], x, y);
}
fs.writeFileSync(outputPath, canvas.toBuffer('image/png'));
}
Key details that make Larry's slides look professional:
\n breaks but also auto-wraps lines that exceed 75% width. No squashing.\n in your text for control. Keep lines to 4-6 words.Text content rules:
The difference between OK slides and viral slides is in these details. Larry's slides consistently hit 50K-150K+ views because the text is sized right, positioned right, and readable at a glance while scrolling.
â ïž LINE BREAKS ARE CRITICAL â Read This:
The texts.json file must contain text with \n line breaks to control where lines wrap. If you pass a single long string without line breaks, the script will auto-wrap, but manual breaks look much better because you control the rhythm.
Good (manual breaks, 4-6 words per line):
[
"I showed my landlord\nwhat AI thinks our\nkitchen should look like",
"She said you can't\nchange anything\nchallenge accepted",
"So I downloaded\nthis app and\ntook one photo",
"Wait... is this\nactually the same\nkitchen??",
"Okay I'm literally\nobsessed with\nthis one",
"Snugly showed me\nwhat's possible\nlink in bio"
]
Bad (no breaks â will auto-wrap but looks worse):
[
"I showed my landlord what AI thinks our kitchen should look like",
...
]
Rules for writing overlay text:
\n to break lines â gives you control over the rhythmThe script auto-wraps any line that exceeds 75% width as a safety net, but always prefer manual \n breaks for the best visual result.
Use scripts/post-to-tiktok.js:
node scripts/post-to-tiktok.js --config tiktok-marketing/config.json --dir tiktok-marketing/posts/YYYY-MM-DD-HHmm/ --caption "caption" --title "title"
Posts go to your TikTok inbox as drafts, NOT published directly. This is intentional and critical:
This is the workflow that helped us hit 1M+ TikTok views and $670/month MRR. Don't skip the music step.
Tell the user during onboarding: "Posts will land in your TikTok inbox as drafts. Before publishing each one, add a trending sound from TikTok's library â this is the single biggest factor in reach. It takes 30 seconds and makes a massive difference."
Cross-posts to any connected platforms (Instagram, YouTube, etc.) automatically via Postiz.
Caption rules: Long storytelling captions (3x more views). Structure: Hook â Problem â Discovery â What it does â Result â max 5 hashtags. Conversational tone.
After the user publishes from their TikTok inbox, the post needs to be connected to its TikTok video ID before per-post analytics work.
â ïž CRITICAL: Wait at least 1-2 hours after publishing before connecting. TikTok's API has an indexing delay â if you try to connect immediately, the new video won't be in the list yet, and you might connect to the wrong video. This mistake is hard to undo (Postiz doesn't easily allow overwriting a release ID once set).
Use scripts/check-analytics.js to automate the connection:
node scripts/check-analytics.js --config tiktok-marketing/config.json --days 3 --connect
The script:
GET /posts/{id}/missing to get all TikTok videos on the accountPUT /posts/{id}/release-idHow the matching works:
7605531854921354518, 7605630185727118614)Manual connection (if needed):
GET /posts/{id}/missing â returns all TikTok videos with thumbnail URLsPUT /posts/{id}/release-id with {"releaseId": "tiktok-video-id"}GET /analytics/post/{id} now returns views/likes/comments/sharesThe daily cron handles all of this automatically. It runs in the morning, checks posts from the last 3 days (all well past the 2-hour indexing window), connects any unconnected posts, and generates the report.
Once a Postiz post is connected to a TikTok video ID via PUT /posts/{id}/release-id, it cannot be changed. If you connect the wrong video, the analytics will permanently show the wrong video's stats for that post. The PUT endpoint appears to accept the update but silently keeps the original ID.
This is why the 2-hour wait is non-negotiable. If you connect too early (before TikTok has indexed the new video), the missing endpoint will show older videos and you'll connect the wrong one. There is no undo.
Best practice:
See references/analytics-loop.md for full Postiz analytics API docs.
This is what separates "posting TikToks" from "running a marketing machine." The daily cron pulls data from two sources:
Combined, the agent can make intelligent decisions about what to do next â not guessing, not vibes, actual data-driven optimization.
Every morning before the first post, the cron runs scripts/daily-report.js:
tiktok-marketing/reports/YYYY-MM-DD.md with findingsThis is the core intelligence. Two axes: views (are people seeing it?) and conversions (are people paying?).
High views + High conversions â đą SCALE IT
High views + Low conversions â đĄ FIX THE CTA
Low views + High conversions â đĄ FIX THE HOOKS
Low views + Low conversions â đŽ FULL RESET
High views + High downloads + Low paying subscribers â đŽ APP ISSUE
High views + Low downloads â đĄ CTA ISSUE
The daily report automates all of this. It cross-references TikTok views (Postiz) with downloads and revenue (RevenueCat) and tells you exactly which part of the funnel is broken â per post. It also auto-generates new hook suggestions based on your winning patterns and flags when CTAs need rotating.
Track in tiktok-marketing/hook-performance.json:
{
"hooks": [
{
"postId": "postiz-id",
"text": "My boyfriend said our flat looks like a catalogue",
"app": "snugly",
"date": "2026-02-15",
"views": 45000,
"likes": 1200,
"comments": 45,
"shares": 89,
"conversions": 4,
"cta": "Download Snugly â link in bio",
"lastChecked": "2026-02-16"
}
],
"ctas": [
{
"text": "Download [App] â link in bio",
"timesUsed": 5,
"totalViews": 120000,
"totalConversions": 8,
"conversionRate": 0.067
},
{
"text": "Search [App] on the App Store",
"timesUsed": 3,
"totalViews": 85000,
"totalConversions": 12,
"conversionRate": 0.141
}
],
"rules": {
"doubleDown": ["person-conflict-ai"],
"testing": ["listicle", "pov-format"],
"dropped": ["self-complaint", "price-comparison"]
}
}
The daily report updates this automatically. Each post gets tagged with its hook text, CTA, view count, and attributed conversions. Over time, this builds a clear picture of which hook + CTA combinations actually drive revenue â not just views.
CTA rotation: When the report detects high views but low conversions, it automatically recommends rotating to a different CTA and tracks performance of each CTA separately. The agent should tag every post with the CTA used so the data accumulates.
```
Decision rules:
When views are good but conversions are low, cycle through CTAs:
Track which CTAs convert best per hook category.
Optimal times (adjust for audience timezone):
3x/day minimum. Consistency beats sporadic viral hits. 100 posts beats 1 viral.
Postiz supports cross-posting the same content to multiple platforms simultaneously. Recommend:
Same slides, different algorithms, more surface area. Each platform's algo evaluates content independently.
See references/app-categories.md for category-specific slide prompts and hook formulas.
| Mistake | Fix |
|---------|-----|
| 1536x1024 (landscape) | Use 1024x1536 (portrait) |
| Font at 5% | Use 6.5% of width |
| Text at bottom | Position at 30% from top |
| Different rooms per slide | Lock architecture in EVERY prompt |
| Labels not reactions | "Wait this is nice??" not "Modern style" |
| Only tracking views | Track conversions â views without revenue = vanity |
| Same hooks forever | Iterate based on data, test new formats weekly |
| No cross-posting | Use Postiz to post everywhere simultaneously |
| Connecting release ID too soon | Wait 2+ hours â TikTok API indexing delay |
| Wrong video connected | Can't overwrite â always verify before connecting |
| spawnSync ETIMEDOUT | Exec timeout too short â image gen takes 3-9 min for 6 slides. Use a 10-minute timeout or generate slides one at a time |
Generated Mar 1, 2026
A new fitness app uses the skill to create slideshow posts demonstrating workout routines and nutrition tips. The agent researches competitor fitness content, generates motivational images, overlays key exercise steps, and posts daily. It tracks which posts drive app downloads and optimizes CTAs for free trial sign-ups.
An online store selling eco-friendly products automates TikTok marketing with slideshows showcasing product benefits and customer testimonials. The agent generates lifestyle images, adds text overlays highlighting features, posts via Postiz, and uses analytics to identify top-performing posts for cross-posting to Instagram Reels and YouTube Shorts.
A SaaS company promoting a project management tool uses the skill to create educational slideshows on productivity tips. The agent researches trending topics in tech, generates AI images of workspaces, overlays text with software features, and tracks conversions via RevenueCat to optimize posts for paid subscription sign-ups.
A restaurant automates TikTok posts to showcase daily specials and behind-the-scenes kitchen content. The agent generates appetizing food images, adds text overlays with menu prices and promotions, posts at peak times, and uses Postiz analytics to adjust hooks based on view counts and customer engagement.
Mobile or web apps with recurring revenue models use the skill to drive free trial sign-ups and reduce churn. By tracking views vs. conversions with RevenueCat, the agent iterates on hooks and CTAs to target high-intent users, optimizing for long-term subscriber retention.
Online stores with low overhead use the skill to promote trending products through viral slideshows. The agent researches competitor ads, generates product-focused images, adds urgency-driven text overlays, and cross-posts to multiple platforms to maximize reach and drive direct sales.
Content creators or marketers promote third-party products via affiliate links. The skill automates slideshow creation around product reviews and tutorials, with the agent tracking post performance to focus on high-converting niches and optimize CTAs for click-through rates and commission earnings.
đŹ Integration Tip
Ensure Postiz is set up first for analytics tracking, and use RevenueCat integration to link post performance directly to revenue data for optimal feedback loops.
Generate/edit images with Nano Banana Pro (Gemini 3 Pro Image). Use for image create/modify requests incl. edits. Supports text-to-image + image-to-image; 1K/2K/4K; use --input-image.
Capture frames or clips from RTSP/ONVIF cameras.
Batch-generate images via OpenAI Images API. Random prompt sampler + `index.html` gallery.
Generate images using the internal Google Antigravity API (Gemini 3 Pro Image). High quality, native generation without browser automation.
äœżçšć çœź image_generate.py èæŹçæćŸç, ć〿ž æ°ć ·äœç `prompt`ă
AI image generation powered by CellCog. Create images, edit photos, consistent characters, product photography, reference-based images, sets of images, style transfer. Professional image creation with AI.