M

How I automated my TikTok content workflow from scratch

9 min readView source ↗

Cover image

I've been working on a system that turns TikTok content production into something I can run in 5 minutes instead of 2-3 hours. It started as a way to clone proven slideshows faster. It ended up as something that proposes its own posts from a library it built itself, no source URL required.

Here's the workflow.

Article image

Why slideshows over videos

There are two formats carrying TikTok right now: short videos and slideshows. I picked slideshows for three reasons.

→ They force active engagement. A good hook on slide 1 makes the user swipe. That swipe is intent, not autoplay.

→ They're cheap to produce. No editing timeline, no audio sync, no transitions. Just images and text.

→ They scale across accounts. The same generation pipeline can output 10 slideshows in the time a video pipeline outputs one.

The structure I use is fixed across every post:

→ slide 1 = hook

→ middle slides = story / context / proof

→ last slide = CTA (or second to last if the slideshow is long)

I never deviate from this. Structure consistency frees me up to focus on the hook, which is the only slide that decides whether the rest get seen.

Article image

The shift that made everything else possible: clone, don't template

This is the single decision the entire system is built on.

The first approach I tried was templating. Find proven slideshows, turn them into reusable templates, refill the templates with stock images from Pinterest. I tested it for weeks in my niche and the conversion wasn't where I wanted it.

My theory was that the original post worked because of the real photo, the real product, the real label, the real composition. When you template it and fill with Pinterest stock, you keep the skeleton but lose the part that made the post specific.

So I tried the opposite and it converted better.

Instead of templating, I clone. The system takes the actual photos from the source post and edits them. My product gets dropped into the same composition. Same lighting, same angle, same framing. Labels stay pixel-faithful because the model isn't inventing anything, it's editing what already exists.

The image step uses GPT Image 2 and Nano Banana Pro. Both are good enough at this kind of edit that the result looks like the original photographer shot my product. If a viewer can tell it's an edit, the clone is bad.

Article image

Phase 1: cloning one URL at a time

The first version of the system was URL driven.

→ Paste a proven TikTok slideshow URL

→ Scraper pulls the slides

→ Claude reads the structure: hook position, text patterns, density, CTA placement

→ Output: a parallel slideshow proposal for my niche, same rhythm, my product

The rule is fidelity. If the source uses short verdict labels, the clone uses short verdict labels. If slide 1 is a single emotional hook, the clone is a single emotional hook. Don't get clever, copy what already works.

This cut production time massively. But the bottleneck moved upstream: every post still required scrolling TikTok to find a source. I'd cut editing time but I was still spending an hour a day on the FYP.

Article image

Phase 2: every clone becomes a permanent pattern

The change that broke the URL dependency was a single decision: never throw away the analysis.

Every time the system clones a post, it stores:

→ the full structural analysis (hook, density, CTA, rhythm)

→ the source images

→ the niche tags

→ the per account history of what's been generated

After a few weeks of normal work, this isn't a folder of saved slideshows anymore. It's a library of patterns proven in your niche, each one already broken down and ready to be reused without re-analyzing.

Two things happen with this library:

→ Curation: the best patterns get promoted to canonical archetypes; the rest stays as backup

→ Per account history: the system knows what each account has already published, not just what works in the niche

I never sat down to write metadata. The library built itself as a side effect of normal use.

Article image

Phase 3: the system proposes posts with no source URL

Once the library is dense, the question changes from "clone this URL" to "look at everything I've ever cloned, posted, and learned , propose new posts."

This is where it stops being a tool and becomes an engine. The model gets the entire creative history in one pass and writes brand-new posts. Not copies, fresh hooks, fresh angles, built on the structures that already proved out.

Built-in rules:

→ Anti-repeat: no angle reused from the last 14 days

→ Niche rotation: favors parts of the niche untouched for 30+ days

→ Image-fit selection: picks source images from the library that match the new angle so the render still has real product shots

What used to be a 2-hour scroll session is now: click "propose," skim a few fresh ideas, pick one, edit. The system pitches; I review.

Article image

Phase 4: publishing depends on account age

Generation is solved. Publishing depends on how mature the account is.

New accounts (under 2 weeks): publish by hand. TikTok is still profiling the account and any pattern that looks bot-like, same upload time, same metadata, same mechanism, can suppress reach permanently. Manual upload, manual caption, manual post. The content was generated in 5 minutes instead of 2 hours, so the speed win is already locked in upstream.

Aged accounts (2 weeks+ and behaving): push to drafts. Three options for the drafting layer:

→ Genviral: fastest setup, monthly cost, limited control

→ Postiz: fast setup, monthly cost, limited control

→ Custom (TikTok API): build it yourself, free, full control

I went with the custom route. You can ask a model to build it for you in a few hours and it pays back fast, no subscription, no surprise API changes, wires straight into the generation step. If you want something running tomorrow, Genviral or Postiz get you 80% there without writing code.

Embedded post:

Author: Adrià Martinez (@adriamatz) Post ID: 2055627180550357421 Source: https://x.com/adriamatz/status/2055627180550357421 Reply to: none

Text:

> Spent the morning replacing my TikTok middleman tool with a direct API integration. > > Drafts now land in my inbox, ready to publish > > If you want to do the same: > > 1. Create a TikTok dev app (sandbox, free, no audit) > > 2. Set up OAuth for your accounts > > 3. Host images on a verified domain (Vercel Blob works) > > 4. Hit Content Posting API → send drafts > > Thanks @maks6361 for the nudge.

Media:

Quoted: https://x.com/maks6361/status/2054189367921451013

Where I've kept things manual on purpose

I could automate more than I do. I haven't, and that's intentional.

Generation runs on a "propose" button, not a schedule. I want to review what the model pitches before it goes into the queue. Once you let proposals auto-fire, you lose the chance to catch a bad angle before it eats into your library and starts influencing future proposals. The human gate is cheap, a few seconds per session and the cost of not having it compounds badly.

Posting rules get reviewed by me before they're baked in. The system can suggest rules from performance data, but I check them before they become law. Bad rules pollute everything downstream. Better to slow that step down on purpose.

Image generation still uses real source photos, not pure from-scratch generation. This is the one I'm actively working on changing. But right now, leaning on real photos is what makes the clones convert for me. Generating slide images from zero is the next thing to unlock, and I'll move there only when the quality matches what edited source photos give me today.

The hook and CTA text I still add by hand inside the TikTok app. Everything else, the slide images, the captions, the hashtags, comes out of the system. But the text overlay on slide 1 (the hook) and on the CTA slide gets typed in TikTok's native editor before posting. Native text gets treated better by the algorithm than baked-in text, and the hook is too important to risk with a wrong font, wrong color, or wrong placement that the system might pick. Thirty seconds per post for a much higher floor on reach.

The shape of the system today is autonomous concept generation, draft-gated. Ideas generate themselves; publishing is reviewed. That's the right place for a content system to sit until your accounts are old enough that you can trust automation end-to-end.

What you actually need to build this

If you're trying to replicate the system, here's the minimum stack:

→ A scraper that pulls proven TikTok slideshows

→ A model that reads structure and proposes parallel slideshows (Claude, GPT, whatever)

→ An image editor that edits source photos rather than generating from scratch (GPT Image 2 or Nano Banana Pro work)

→ A library that stores every clone's analysis and source images permanently

→ A per-account history of what each account has published

→ A "propose from library" step that reads everything and synthesizes new posts

→ A publishing layer (manual for new accounts, drafts for aged ones)

The order matters. Cloning has to work before you build the library. The library has to fill up before the propose step is useful. Don't try to skip ahead.

The whole system compounds. Every post you generate makes the next one easier to propose. Every post you publish and track makes the next proposal smarter. That's the actual win, not the time saved on any single post, but the fact that the bottleneck stops being production and starts being judgment.

Which hooks hold attention. Which CTAs convert. Which formats survive being posted over and over. Those are the questions you want to be spending time on.

The rest should run itself.

Related articles