Hi,πŸ‘‹ we have updated the app and fixed multiple bugs. We are lacking funds, request to free user not to use Adblock. Ads are non intrusive. 😊

How to Automate TikTok Slideshow Content Creation with Claude Opus 4.7 (Step-by-Step Playbook)

@maverickecom
87 views Apr 24, 2026
Advertisement

Most e-commerce brands are running TikTok the wrong way. They hire an influencer for a flat fee, cross their fingers, and watch the post die in 48 hours. They run Meta ads at $6 CPM and wonder why their CAC is through the roof. They treat content like a transaction instead of a system.

Media image

There is a different approach β€” one that compounds rather than decays, scales without proportionally scaling your budget, and consistently produces content that doesn't look like marketing because it isn't marketing. It's distribution disguised as content.

That approach is TikTok slideshows. And most brands still aren't taking them seriously β€” which is exactly why they work.

This is the full strategy, step by step. By the end, you'll have a clear picture of how to find a format, build the creative, post it at scale, and turn it into a repeatable system that drives real revenue.

✦

THE FULL PIPELINE

What You're Building

Before diving in, here's what the complete workflow looks like end-to-end. Each step feeds the next:

[TikTok Scroll] β†’ find viral formats in your niche
↓
[SnapTik Download] β†’ save the slideshows for analysis
↓
[Claude β€” Hook Extraction] β†’ reverse-engineer what made it work + generate variations
↓
[Pinterest] β†’ source images at zero cost
↓
[Node.js Canvas Script] β†’ generate all PNG slides programmatically
↓
[Postiz Agent CLI] β†’ schedule as drafts
↓
[TikTok App] β†’ open draft at peak time, tap Post manually
Stack cost: ~$0/month. Once set up, 30 posts/week in under 2 hours.

✦

PART ONE

Why Slideshows Beat Every Other Format Right Now

TikTok is actively pushing slideshow content harder than most video formats β€” it's a platform incentive. They want creators using the format, so the algorithm rewards it. But the behavioral reason matters more: the swipe mechanic keeps viewers inside your content instead of passively watching it. Someone swiping through six slides is not scrolling past you. They're moving through your product story at their own pace.

That shift in control changes how they receive your product. It stops feeling like an ad. It feels like stumbling onto something useful.

Beyond the algorithm advantage, slideshows are dramatically cheaper and faster to produce than video. No shooting, no editing timeline, no voiceover. Just images and text. That means you can post at a volume that's completely unrealistic with video β€” and volume is what the algorithm rewards above almost everything else.

One more thing that most founders miss: you don't need to generate images with AI at all. Pinterest is an endless, free library of high-quality images across every aesthetic imaginable. It's the sourcing method almost nobody is talking about, and it completely removes the image generation bottleneck.

✦

PART TWO

Step 1 β€” Find What's Already Working

Don't try to invent a format. The algorithm has already told you what your audience wants to watch. Your job is to find it.

Open TikTok. Search keywords in your niche β€” the problem your product solves, the lifestyle adjacent to your customer, the product category. Filter by Most Liked or Most Recent. Look specifically for slideshows. When you find something performing well, favorite it. This trains your For You page to show you more of the same. Within a few days your entire feed becomes a curated research feed in your niche.

A format is worth replicating when it passes all four of these:

  • More than 100,000 views β€” real validation, not a fluke
  • Posted within the last 30 days β€” format still active, not fading
  • Easy to recreate without advanced editing skills
  • Multiple videos use the same format β€” repeatable system, not a one-hit wonder
  • When you find one that passes, download it. Use SnapTik or SSSTik β€” paste the TikTok link, download the version without a watermark, save locally. You'll use it in the next step.

    ✦

    PART THREE

    Step 2 β€” Extract the Hook With Claude

    This is the step most people skip. Instead of guessing what made a slideshow work, you reverse-engineer it using Claude β€” feeding in the actual content and asking it to break down the structure.

    Upload the downloaded slideshow images directly to Claude and run this prompt:

    PROMPT

    Analyze this TikTok slideshow and:

    1. Identify the main hook used in the first slide
    (text overlay, headline, visual framing)

    2. Explain why this hook works
    (curiosity / pain point / surprise / relatability)

    3. Break down the hook structure
    (number + outcome, negative framing, identity targeting, etc.)

    4. Write 5 similar hook variations for the niche [YOUR NICHE]
    - Each hook under 10 words
    - Format: a question OR a strong statement
    - Avoid openers like "Did you know"

    Output as a numbered list, one hook per line.

    If you only have the text from the slides (no images), use this version instead:

    PROMPT (TEXT ONLY)

    Here is the content of a viral TikTok slideshow in the niche [NICHE]:
    [PASTE CONTENT HERE]

    - Identify the core hook from the first slide
    - Write 7 hook variations for a similar slideshow
    - Each hook must trigger one of 3 emotions:
    curiosity / FOMO / empathy
    - Max 8 words per hook
    - Include a short explanation of why each hook works

    Save every output. Build a hook library in Notion or Google Sheets. Over time you'll accumulate a database of proven angles β€” and creative ideation gets faster every cycle.

    Also Pull Your Pinterest Search Terms

    While you still have the slideshow in Claude, run this bonus prompt to get your image sourcing terms for Step 3:

    PROMPT

    Based on this slideshow:

    1. Describe the color palette, lighting, and overall aesthetic
    (dark/moody, bright/clean, luxury, minimal, etc.)

    2. What kind of images would work as slideshow backgrounds
    for the hooks you just wrote?

    3. Give me 5 specific Pinterest search queries to find those images
    - Format: short keyword phrases, 2-4 words each
    - Optimized for Pinterest search, not Google

    Copy these directly into Pinterest in the next step. No guessing what to look for.

    ✦

    PART FOUR

    Step 3 β€” Source Images From Pinterest (Cost: $0)

    This is the sourcing method almost no one uses, and it's the biggest unlock in the whole pipeline. Pinterest has millions of high-quality, aesthetically curated images across every niche and visual style imaginable. No AI generation required. No licensing headaches for organic social use. Just search and save.

    What to Look For

    Use the exact Pinterest search queries Claude generated for you. Paste them directly. When evaluating images, you're looking for:

  • Portrait / 9:16 ratio β€” the script will crop landscape, but portrait is cleaner
  • Bold, high contrast β€” the TikTok feed is competitive; soft pastels disappear
  • Minimal existing text β€” you'll be overlaying your own text on top
  • Emotional match to your hook β€” money hook = aspirational lifestyle image; fitness hook = action shot
  • How to Download

    For manual sourcing: install the PinDown Chrome extension, or click the image to full size, right-click, open in new tab, then save. For batch downloading, use this simple Python script:

    PYTHON β€” PINTEREST_DOWNLOADER.PY

    import requests
    from pathlib import Path

    def download_image(url, filename, folder="pinterest_images"):
    Path(folder).mkdir(exist_ok=True)
    r = requests.get(url, stream=True)
    if r.status_code == 200:
    with open(f"{folder}/{filename}.jpg", "wb") as f:
    for chunk in r.iter_content(1024):
    f.write(chunk)

    # Paste your Pinterest image URLs here
    urls = [
    "https://i.pinimg.com/originals/...",
    "https://i.pinimg.com/originals/...",
    ]

    for i, url in enumerate(urls):
    download_image(url, f"image_{i+1:03d}")

    Organize your images by niche folder: pinterest_images/finance/, pinterest_images/fitness/, etc. This keeps the generation script clean.

    ✦

    PART FIVE

    Step 4 β€” Generate the Slides Programmatically

    This is where the pipeline becomes genuinely scalable. Instead of designing in Canva slide by slide, you define your content in a config file and a Node.js script generates all your 1080Γ—1920 PNG slides automatically. Change the config, re-run the script, get new slides. No design software open.

    Setup

    TERMINAL

    mkdir tiktok-slide-gen && cd tiktok-slide-gen
    npm init -y
    npm install @napi-rs/canvas sharp

    The Slide Config

    Drive all your content from a JSON file so your team can update hooks and images without touching code:

    SLIDES-CONFIG.JSON

    [
    {
    "imagePath": "./pinterest_images/finance/image_001.jpg",
    "lines": [
    { "text": "I saved $5k in 6 months", "size": 88, "weight": "bold", "y": 860 },
    { "text": "doing this one thing", "size": 72, "weight": "normal", "y": 970 }
    ]
    },
    {
    "imagePath": "./pinterest_images/finance/image_002.jpg",
    "lines": [
    { "text": "Most people spend before they save.", "size": 64, "weight": "bold", "y": 880 },
    { "text": "Here's why that's a trap.", "size": 56, "weight": "normal", "y": 970 }
    ]
    },
    {
    "imagePath": "./pinterest_images/finance/image_006.jpg",
    "lines": [
    { "text": "Save this post πŸ”–", "size": 80, "weight": "bold", "y": 860 },
    { "text": "Follow for more tips every week", "size": 52, "weight": "normal", "y": 970 }
    ]
    }
    ]

    Structure every slideshow the same way: Hook β†’ Problem/Setup β†’ Points 1-3 β†’ CTA. Six slides, every time.

    The Generation Script

    GENERATE-SLIDES.JS

    import { createCanvas, loadImage, GlobalFonts } from '@napi-rs/canvas'
    import { writeFileSync, mkdirSync, readFileSync } from 'fs'
    import { join } from 'path'

    const OUTPUT_DIR = './output'
    const W = 1080, H = 1920
    const OVERLAY = 'rgba(0,0,0,0.52)'

    // Optional: register a custom font
    // GlobalFonts.registerFromPath('./fonts/Montserrat-Black.ttf', 'Montserrat')

    const slides = JSON.parse(readFileSync('./slides-config.json', 'utf-8'))

    function wrapText(ctx, text, maxWidth) {
    const words = text.split(' '), lines = []
    let current = ''
    for (const word of words) {
    const test = current ? `${current} ${word}` : word
    if (ctx.measureText(test).width > maxWidth && current) {
    lines.push(current); current = word
    } else { current = test }
    }
    if (current) lines.push(current)
    return lines
    }

    async function generateSlide(slide, index) {
    const canvas = createCanvas(W, H)
    const ctx = canvas.getContext('2d')

    // Background image β€” cover fit
    const img = await loadImage(slide.imagePath)
    const scale = Math.max(W / img.width, H / img.height)
    ctx.drawImage(img, (W - img.width*scale)/2, (H - img.height*scale)/2,
    img.width*scale, img.height*scale)

    // Dark overlay
    ctx.fillStyle = OVERLAY
    ctx.fillRect(0, 0, W, H)

    // Text layers
    for (const line of slide.lines) {
    ctx.font = `${line.weight} ${line.size}px sans-serif`
    ctx.fillStyle = '#ffffff'
    ctx.textAlign = 'center'
    ctx.textBaseline = 'middle'
    ctx.shadowColor = 'rgba(0,0,0,0.75)'
    ctx.shadowBlur = 12; ctx.shadowOffsetY = 4

    const wrapped = wrapText(ctx, line.text, W - 160)
    wrapped.forEach((l, i) =>
    ctx.fillText(l, W/2, line.y + i * line.size * 1.2))
    }

    mkdirSync(OUTPUT_DIR, { recursive: true })
    const out = join(OUTPUT_DIR, `slide_${String(index+1).padStart(2,'0')}.png`)
    writeFileSync(out, canvas.toBuffer('image/png'))
    console.log(`βœ“ ${out}`)
    }

    async function main() {
    for (let i = 0; i < slides.length; i++) await generateSlide(slides[i], i)
    console.log(`\nDone β†’ ${OUTPUT_DIR}/`)
    }
    main().catch(console.error)

    TERMINAL

    node generate-slides.js

    βœ“ output/slide_01.png
    βœ“ output/slide_02.png
    βœ“ output/slide_03.png
    βœ“ output/slide_04.png
    βœ“ output/slide_05.png
    βœ“ output/slide_06.png

    Done β†’ output/

    Post-Production: The Details That Separate 10K Views From 1M Views

    These two minutes of work consistently make the difference between content that gets pushed and content that gets buried:

  • Add 2–3% film grain in CapCut. Removes the "too clean" digital look. Makes slides blend naturally with real UGC in the feed.
  • Export at 1080p, not 4K. 4K signals produced content. Lower resolution reads as organic.
  • Compress through Telegram. Upload the final file to Telegram, download it, then upload that version to TikTok. This strips metadata and adds the natural compression artifacts real user content has. The algorithm treats it as organic UGC.
  • ✦

    PART SIX

    Step 5 β€” Schedule With Postiz Agent CLI

    With your slides ready, Postiz handles the distribution calendar. It's free when self-hosted and unlimited β€” no artificial posting caps like Buffer or Later.

    TERMINAL

    Install globally
    npm install -g postiz

    # Set your API key (get it from app.postiz.com β†’ Settings β†’ API Keys)
    export POSTIZ_API_KEY=your_api_key_here

    # Verify connected accounts
    postiz integrations:list

    Connect your TikTok account at app.postiz.com β†’ Integrations β†’ Add Channel β†’ TikTok. Once connected, integrations:list will return your TikTok integration ID β€” you'll need that for every post command.

    Batch-Schedule a Full Week

    Define your week's content in a JSON file, then run one command to schedule everything:

    SCHEDULE.JSON

    [
    {
    "slides": ["./output/mon_01.png", "./output/mon_02.png", "./output/mon_03.png",
    "./output/mon_04.png", "./output/mon_05.png", "./output/mon_06.png"],
    "caption": "I saved $5k in 6 months doing this πŸ’° #personalfinance",
    "scheduledAt": "2025-04-21T09:00:00Z"
    },
    {
    "slides": ["./output/tue_01.png", "./output/tue_02.png", "./output/tue_03.png",
    "./output/tue_04.png", "./output/tue_05.png", "./output/tue_06.png"],
    "caption": "Stop putting money in these 3 things 🚫 #moneytips",
    "scheduledAt": "2025-04-22T09:00:00Z"
    }
    ]

    BATCH-SCHEDULE.JS

    import { execSync } from 'child_process'
    import { readFileSync } from 'fs'

    const INTEGRATION_ID = process.env.TIKTOK_INTEGRATION_ID
    const schedule = JSON.parse(readFileSync('./schedule.json', 'utf-8'))

    for (const post of schedule) {
    const slideFlags = post.slides.map(slide => {
    const result = JSON.parse(execSync(`postiz upload ${slide}`).toString())
    return `-m "${result.path}"`
    }).join(' ')

    execSync(
    `postiz posts:create -c "${post.caption}" ${slideFlags} -s "${post.scheduledAt}" -i "${INTEGRATION_ID}"`,
    { stdio: 'inherit' }
    )
    console.log(`βœ“ Scheduled: ${post.slides.length} slides at ${post.scheduledAt}`)
    }

    TERMINAL

    TIKTOK_INTEGRATION_ID=clx9abc123 node batch-schedule.js

    βœ“ Scheduled: 6 slides at 2025-04-21T09:00:00Z
    βœ“ Scheduled: 6 slides at 2025-04-22T09:00:00Z
    ...

    One command. Entire week scheduled.

    ✦

    PART SEVEN

    Step 6 β€” Post From Drafts, Not the API Directly

    This is the most overlooked part of any TikTok automation setup, and skipping it is what kills accounts that are otherwise doing everything right.

    When you auto-publish via API on a scheduled timer, TikTok sees a server IP initiating the post, consistent robotic intervals, and no human interaction before it goes live. On new accounts or at high volume, this pattern gets flagged β€” reduced reach, shadow restrictions, or full account flags.

    "The actual publish action needs to come from your phone. Everything else can be automated. This one step stays human."

    The fix is simple. Instead of auto-publishing, push to Drafts and publish manually from the app:

    1

    Set Postiz to Notify mode instead of Direct Post. It manages your editorial calendar and sends a push notification at the scheduled time.

    2

    When the notification arrives, open TikTok on your phone. The draft is waiting.

    3

    Review it, tap Post. From TikTok's perspective: a human published from a real device on a real network. No server fingerprint on the actual publish action.

    To push to TikTok's native Drafts inbox (so the post appears in your TikTok app directly), use content_posting_method: "UPLOAD" in your Postiz settings:

    POSTIZ β€” PUSH TO TIKTOK DRAFTS INBOX

    postiz posts:create \
    -c "Your caption #fyp" \
    -m "$VIDEO_URL" \
    -s "2025-04-21T09:00:00Z" \
    -p tiktok \
    --settings '{
    "privacy_level": "SELF_ONLY",
    "content_posting_method": "UPLOAD"
    }' \
    -i "your-tiktok-integration-id"

    This is the hybrid that keeps your account healthy at scale: fully automated content production and scheduling, with the final publish step remaining human.

    ✦

    PART EIGHT

    The Strategy Layer: Making It Actually Convert

    All of the above is infrastructure. The creative strategy is what determines whether it drives revenue or just views.

    Product Integration Is Everything

    There are only two ways a format fails: it goes viral but nobody converts, or it converts but nobody watches. The whole game is finding the balance.

    Your product needs to live inside the content, not on top of it. A product bolted onto a trending format feels like an ad β€” the viewer watches, enjoys the content, and scrolls on without ever connecting it to your brand. Millions of views, zero sales.

    The target is a slideshow where the content is genuinely useful or interesting, and your product shows up as the natural next step. The viewer swipes to the last slide thinking: where do I get that? β€” not why am I being sold to?

    Write Copy That Sounds Human

    The biggest tell in AI-generated slideshow content isn't the visuals. It's the text. Default AI copy sounds like a marketer: "Discover the transformative power of..." Nobody on TikTok talks like that.

    The fix: feed Claude real comments pulled from viral videos in your niche. Tell it to write like someone who just discovered the product and is genuinely surprised. Add negative constraints: no words like game-changing, revolutionary, or must-have. The negative constraints matter as much as the positive direction.

    Track Revenue Per Million Views

    Views without conversion data mean nothing. Before scaling any format, calculate what one million views is actually worth in revenue. If the unit economics work, scale. If they don't β€” if views are there but purchases aren't β€” the integration is wrong, not the format. Fix how the product enters the content and test again.

    $0.34EFFECTIVE CPM β€” WELL-RUN SLIDESHOW CAMPAIGNS

    $4–8AVERAGE META ADS CPM β€” CONSUMER APPS

    20Γ—COST ADVANTAGE OVER TRADITIONAL PAID SOCIAL

    ✦

    THE SUMMARY

    The Full Playbook at a Glance

    COMPLETE STEP-BY-STEP

    β†’ Find the format. Scroll your niche, favorite viral slideshows, download with SnapTik.

    β†’ Extract the hook. Upload to Claude, reverse-engineer the structure, generate 5–7 variations.

    β†’ Pull Pinterest search terms. Ask Claude to generate 5 specific image queries while you have the slideshow loaded.

    β†’ Source images from Pinterest. Zero cost, unlimited aesthetic variety, no generation required.

    β†’ Generate slides with Node.js Canvas. Define content in slides-config.json, run the script, get production-ready PNGs.

    β†’ Post-process the output. Film grain in CapCut, 1080p export, compress through Telegram.

    β†’ Schedule with Postiz CLI. Define your week in schedule.json, run batch-schedule.js, everything queued in one command.

    β†’ Post from Drafts, not the API. Use Notify mode. Publish manually from your phone at peak time.

    β†’ Track revenue per million views. When unit economics work, scale. When they don't, fix the integration.

    The brands still running flat-fee influencer deals are doing the math wrong. One post, one shot, paid whether it performs or not. The brands that crack performance-based, systematic distribution early build a data and volume advantage that's nearly impossible for competitors to close.

    Slideshows are the entry point. Once you understand the underlying loop β€” find what's working, replicate with precision, produce at volume, measure relentlessly β€” you can run it on any format.

    That's not a content strategy. That's a distribution machine.

    Free game to scale your Ecom brand with Ai & human UGC: whop.com/frydberg

    Actions
    Visual Editor Carousel Maker NEW
    Update Thread
    What You Can Do
    • Download as PDF
    • Save to Notion
    • Export as Markdown
    • Visual Editor
    • LinkedIn & Instagram Carousel Maker
    Create Free Account

    Includes 7-day Premium trial

    Advertisement