Automate your TikTok slideshows with Claude Opus 4.7: the full workflow at zero cost
Three weeks ago, I looked at my TikTok. 1,200 followers. 3 videos posted in 6 months. A disaster.
The real problem was not the ideas. I had things to say. It was time. Shooting a video, editing it, finding a hook that works, writing the caption, scheduling the post: 2 hours per TikTok. Multiply by 5 per week, you land at 10 hours. I did not have them.
Then I came across a post by Alex Nguyen, a Vietnamese indie hacker who publishes his AI workflows. His thing: he fully automates his TikTok slideshows with Claude Opus 4.7, Pinterest and two Node.js scripts. Production time: 2 hours for 30 posts. Cost: zero.
I tested it for 10 days on a blank account. First result: 47,000 cumulative views, 1,800 new followers, zero suspension, zero flag. Here is exactly what I set up, and how you can do the same for your practice, your health brand or your content channel.
Why TikTok slideshows right now
TikTok has been actively pushing slideshows since early 2026. Accounts launched 3 months ago are hitting 500,000 views on a static post. The reason is simple: the format is easier to consume than video, easier to produce, and easier for TikTok to moderate. The algorithm rewards it.
More importantly, the slideshow removes the need to be on camera. You are a naturopath, a nutrition coach, a supplement brand founder. You do not necessarily want to shoot 5 videos a day with your face in them. The slideshow lets you scale without showing your face, and without generating AI images that reek of GPT from 3 meters away.
Every image in the workflow comes from Pinterest. Real photos, real moods, undetectable. Cost: 0 euros.
The stack in one sentence
TikTok + SnapTik + Claude Opus 4.7 + Pinterest + Node.js Canvas + Postiz Agent CLI. Nothing paid, everything runs locally on your Mac.
If you are not a developer, do not panic. Node.js and the generation script, I will show you below how to get them running in 15 minutes. It is copy paste. The only intellectual prerequisite is being able to open a terminal without panicking.
Step 1: extract hooks from TikTok
The hook is the first sentence or the first image of the slideshow. The 2 seconds where your audience decides to scroll or to stay. Everything happens there. Not on the rest of the content, not on the music, not on your charisma: on those 2 seconds.
The good news is you do not have to invent hooks. You have to steal them.
Open TikTok, type a keyword from your niche. If you are in health: "naturopathy", "gut health", "liver detox", "menopause", "thyroid". Filter by "Most Liked" to see what is crushing right now in your lane.
Look at the first 15 slideshows that come up. Note what you see:
- the first text that appears
- the recurring structure ("3 mistakes that", "what nobody tells you", "I did X for 30 days")
- the tone (shock, curiosity, empathy, confession)
Download the 5 slideshows with the most views. For that, use SnapTik (snaptik.app) or SSSTik (ssstik.io). You paste the post link, you download without watermark. 10 seconds per slideshow.
That is your raw material for the next step.
Step 2: Claude Opus 4.7 extracts the patterns
This is the step 95 % of creators miss. They look at viral slideshows and try to copy the idea. Except the idea is not what makes them viral. It is the hook structure, the emotional mechanic, the exact phrasing.
Claude Opus 4.7 is frighteningly good at extracting those patterns. You upload the 5 downloaded slideshows (the images one by one, or the slideshow as a PDF), then you drop this prompt:
Analyze this TikTok slideshow and do the following:
1. Identify the main hook of the first slide
(focus on the text overlay, the headline, the visual framing)
2. Explain why this hook works
(curiosity / pain point / surprise / identification)
3. Break down the hook structure
(number + outcome, negative framing, identity targeting, etc.)
4. Write me 5 hook variations for the niche [YOUR NICHE]
- Each hook under 10 words
- Format: a question OR a strong statement
- Avoid generic openers like "Did you know that"
Output as a numbered list, one hook per line.
Replace [YOUR NICHE] with the lane you are targeting. For me, on a test account, it was "micronutrient deficiencies in active women".
Result delivered in 30 seconds:
- "3 deficiencies your fatigue has been hiding for 10 years"
- "Your menopause starts at 35 (and nobody tells you)"
- "Magnesium is useless if you take this next to it"
- "Why your bloodwork is normal even though you are exhausted"
- "She changed 2 things on her plate. In 6 weeks, everything flipped."
All 5 are usable, directly, no edits. Over 10 minutes of real work, you ship 25 hooks validated by the data of viral posts in your niche. That is the mechanic.
Save everything
Build yourself a hook library. That kind of brick lives perfectly inside a minimal second brain if you already have one. Notion, Obsidian, a Google Sheet, whatever. One column "hook", one column "niche", one column "source" (which post it came from), one column "status" (to produce, produced, posted).
After 4 weeks, you have 100 classified hooks. That is an asset. That is what makes you uncopyable.
Step 3: visuals, head to Pinterest
You have your hooks. Now you need the background images. No generative AI here, for a precise reason: Pinterest images are real photos, with textures, imperfections, human compositions. The brain recognizes them as "real" and stops on them. AI generated images, even good ones, trigger a micro rejection in the viewer. It is subtle, but across millions of impressions, it makes a huge difference.
While Claude Opus 4.7 still has your slideshows in memory, ask it for the precise Pinterest queries for each hook:
Now look at the visual style of this slideshow:
1. Describe the color palette, the light, the overall aesthetic
(dark/moody, light/clean, luxe, minimal, etc.)
2. What kind of images would work as backgrounds for the hooks
you just wrote?
3. Give me 5 precise Pinterest queries to find those images
- Format: short phrases of 2 to 4 words
- Optimized for Pinterest search, not Google
Typical output for a female health niche:
- "soft morning light aesthetic"
- "minimalist kitchen warm tones"
- "green juice aesthetic pinterest"
- "vintage medical illustration"
- "quiet luxury wellness"
Paste those queries into Pinterest. For each query, keep 5 images that tick three boxes:
- portrait ratio or close to 9:16 (the script will crop, but start clean)
- bright, contrasted colors (TikTok is a fireworks show, pastels disappear)
- little or no text already on the image (you will overlay your own)
To bulk download, install the Chrome extension PinDown. One click, full screen, download. File everything in an images/ folder by niche.
After 20 minutes, you have 50 images ready.
Step 4: generate slides automatically with Node.js Canvas
This is the part that scares non developers. It is the simplest part to set up once.
You will install a script that takes a JSON file (your hooks + the Pinterest images) and automatically outputs 1080 by 1920 PNGs ready to post. You touch nothing in Canva. Ever.
Install in 5 minutes
Open the terminal. If you are on Mac:
mkdir ~/tiktok-slideshow-factory
cd ~/tiktok-slideshow-factory
npm init -y
npm install @napi-rs/canvas
@napi-rs/canvas is a fast, native Canvas build for Node.js. No browser needed, no Puppeteer needed.
The config file: slides-config.json
Create a slides-config.json file in the folder:
{
"outputDir": "./output",
"width": 1080,
"height": 1920,
"font": "Inter Black",
"fontSize": 80,
"textColor": "#FFFFFF",
"shadowColor": "rgba(0, 0, 0, 0.6)",
"posts": [
{
"id": "post-001",
"slides": [
{
"image": "./images/morning-light-01.jpg",
"text": "3 deficiencies your fatigue has been hiding for 10 years"
},
{
"image": "./images/kitchen-warm-02.jpg",
"text": "The first one changes in 2 weeks"
}
]
}
]
}
Add as many posts and slides as you want. 10 posts of 6 slides is 60 images to generate.
The script: generate-slides.js
const { createCanvas, loadImage, GlobalFonts } = require('@napi-rs/canvas')
const fs = require('fs')
const path = require('path')
const config = JSON.parse(fs.readFileSync('./slides-config.json', 'utf-8'))
async function renderSlide(slide, width, height, style) {
const canvas = createCanvas(width, height)
const ctx = canvas.getContext('2d')
const img = await loadImage(slide.image)
const ratio = Math.max(width / img.width, height / img.height)
const w = img.width * ratio
const h = img.height * ratio
ctx.drawImage(img, (width - w) / 2, (height - h) / 2, w, h)
ctx.fillStyle = 'rgba(0, 0, 0, 0.25)'
ctx.fillRect(0, 0, width, height)
ctx.font = `${style.fontSize}px "${style.font}"`
ctx.fillStyle = style.textColor
ctx.textAlign = 'center'
ctx.shadowColor = style.shadowColor
ctx.shadowBlur = 12
const words = slide.text.split(' ')
const lines = []
let line = ''
for (const word of words) {
const test = line ? line + ' ' + word : word
if (ctx.measureText(test).width > width * 0.85) {
lines.push(line)
line = word
} else {
line = test
}
}
if (line) lines.push(line)
const lineHeight = style.fontSize * 1.1
const startY = (height - lines.length * lineHeight) / 2 + style.fontSize
lines.forEach((l, i) => ctx.fillText(l, width / 2, startY + i * lineHeight))
return canvas.toBuffer('image/png')
}
async function main() {
if (!fs.existsSync(config.outputDir)) fs.mkdirSync(config.outputDir)
for (const post of config.posts) {
const postDir = path.join(config.outputDir, post.id)
if (!fs.existsSync(postDir)) fs.mkdirSync(postDir)
for (let i = 0; i < post.slides.length; i++) {
const buffer = await renderSlide(post.slides[i], config.width, config.height, config)
fs.writeFileSync(path.join(postDir, `slide-${i + 1}.png`), buffer)
console.log(`${post.id}: slide ${i + 1} OK`)
}
}
}
main()
Run:
node generate-slides.js
Result: an output/ folder with one subfolder per post and your numbered PNGs. 30 seconds for 10 posts of 6 slides.
The real power
You can hand the slides-config.json file to your assistant, to an intern, to a friend. They fill in the hooks and the image paths. They run node generate-slides.js. They get 60 ready to post slides, without opening Canva. You just decoupled creation from layout. That is the real lever.
Step 5: schedule with Postiz Agent CLI
You have 60 slides. Now you need to post them. Manually, that is 5 minutes per post, so 50 minutes for 10 posts. We can do better.
Postiz is a multi platform content scheduling tool, self hostable and free on the community edition. Its CLI lets you drive the whole schedule from your terminal.
npm install -g @postiz/cli
export POSTIZ_API_KEY="your_key"
postiz integrations:list
If the list is empty, go to app.postiz.com, Integrations, Add Channel, TikTok. Authorize your account. Run integrations:list again, copy the TikTok ID.
To create a post:
postiz posts:create \
--integration <tiktok_integration_id> \
--files ./output/post-001/slide-1.png ./output/post-001/slide-2.png \
--caption "3 deficiencies your fatigue is hiding #naturopathy #health" \
--schedule "2026-04-22T18:00:00Z"
One line, one scheduled post. Multiply by 10, you have a week of content planned in 5 minutes.
Step 6: the anti shadowban trick (critical)
This is the part everyone skips and that costs accounts.
If you let Postiz publish directly through the API at fixed times from a server IP, TikTok will eventually spot the pattern: server IP, robotic interval, zero human interaction before publishing. Result: reach drop, silent restrictions, or even a full account flag. I have seen a 40,000 follower account die in 2 weeks that way.
The workaround is simple: instead of publishing live, we send the post as a draft into the TikTok app. You open the app at the right moment, you confirm, you publish. TikTok then sees: real device, residential network, human action. Clean signal.
For that, in the Postiz command, add --content-posting-method UPLOAD:
postiz posts:create \
--integration <tiktok_id> \
--files ./output/post-001/slide-*.png \
--caption "..." \
--content-posting-method UPLOAD \
--schedule "2026-04-22T18:00:00Z"
At the scheduled time, Postiz pushes the slideshow into your TikTok app Inbox. You get a notification. You open the app, you finalize, you publish. 15 seconds. And you preserve your account health for 6 months.
In the Postiz Dashboard, switch the publishing mode to "Notify" rather than "Direct Post". Postiz becomes your editorial calendar, your memory, your reminder. The final gesture stays human.
The dashboard after 10 days
Here is what I measured across 10 days of production:
- 40 slideshows produced (6 slides each on average)
- 2 hours of real cumulative production
- 47,000 total views
- 1,800 new followers
- 2 slideshows over 10,000 views each
- 0 flags, 0 restrictions, 0 reach drops
The big leverage is not raw volume. It is that every slideshow is based on a hook extracted from a post that already crushed it. The probability that it works is not random, it is already validated by the data.
What this really changes for a health entrepreneur
I think of several profiles I have worked with in recent months.
A naturopath running a practice in Montpellier. 25 active clients, fully booked, no room for more. She wants to shift part of her activity online, courses and workshops. She needs to build an audience without spending 3 hours a day on Instagram. This workflow lets her produce 30 slideshows in one Monday morning. She sleeps the rest of the week.
A sports nutrition coach, 2,000 TikTok followers, who wants to sell a 297 euro program. He needs pure visibility. Shipping 5 posts a day without burning his life, that is exactly what this workflow enables.
A small functional tea brand, tiny team, no agency budget. They want to test 50 editorial angles in a month to see which ones convert. Without this system, that is 50 hours of work. With it, it is an afternoon and a half.
The difference, every time, is the same: you take your time back. You stop producing content by hand, finger by finger. You build a system that produces for you, while you see your clients, formulate your next product, or take a weekend off.
Mistakes I made at the start
Three, so you can skip them.
One, I tried to generate the images with DALL-E and Midjourney. Result, 30 % less reach on the posts. The audience smells the synthesis. Pinterest, always.
Two, I posted live through the API for the first 3 days. On day 4, my reach dropped 60 % overnight. I switched to Draft mode, it took 5 days for reach to recover. Do not do that.
Three, I tried to over optimize from day one. I spent 2 days polishing the Node.js script, adding transitions, watermarks, animations. Useless. The simplest wins. White text, light dark overlay, Pinterest image. That is all.
Going further
The workflow described here produces massive content, not personal content. It makes you exist on TikTok, it generates reach, it attracts an audience. It does not sell, not on its own.
To convert, you need to plug this visibility machine into a mail machine. Every week, one post that pushes to your newsletter. Every 15 days, a link to a lead magnet (a PDF guide, a free mini course, a checklist). Once a month, one post that tells your story, signed in your voice, reminding people that behind the system there is a person. For an end to end example, read how François manages 250 affiliates with AI and where to start to build your second brain.
That combination is what turns 1,800 followers into 50 clients over 12 months.
If you want us to look at your specific situation, your niche, your current stack and build this full system together, I offer a free 20 minute call. We look at what is missing, what we can install in 2 weeks, and what it can bring in for you. Head to mthlvr.com/book.
Happy shipping.
- François
