Folder structure for each mode

guide setup

Where to put media, how to name files and subfolders, and what the app does with your content after publishing in Upload, Warm-up, and Seeding modes.

This is a short reference: which modes exist, which file extensions are supported, how to lay out videos and photos, what happens after publishing, and a self-check checklist before you launch.


What modes are there

The app has 3 modes, selected in a template via the Run Mode toggle:

ModeWhat it doesMedia files needed?
UploadPosts videos or carousels to logged-in accountsYes
Warm-upIn-app warm-up: scrolls the feed, likes, searches by keywords, watches resultsNo
SeedingFull mass-seeding cycle on fresh accounts: TikTok reinstall → fingerprint reset → proxy rotation → login → uploadYes

The content type inside Upload and Seeding is selected separately:

  • video — regular videos
  • carousel — photo carousel

Supported file formats

TypeExtensions
Video.mp4, .mov, .m4v, .avi, .mkv
Photo (carousel).jpg, .jpeg, .png, .heic
Captions (sidecar).json next to media

Any other extensions are ignored.

Mode 1. Upload — Video

Template fields

  • Video folder — absolute path to the folder
  • OrderSequential (by name, natural sort) or Random (shuffled)
  • Move used files — into a used/ subfolder (on by default)
  • Delete after publishing — takes priority over "move"

Folder layout

videos/
├── clip_1.mp4
├── clip_2.mp4
├── clip_10.mp4          ← natural sort: 1, 2, 10 (not 1, 10, 2)
├── promo.mov
└── used/                ← created automatically after the first successful upload
    ├── clip_1.mp4
    └── clip_2.mp4

What happens after publishing

  • If "move" is on → the file goes into used/ inside the same folder
  • If "delete" is on → the file is permanently deleted (used/ is never created)
  • The sidecar .json with the caption is moved / deleted together with the video

Multi-device mode

If multiple devices run with the same folder, a hidden .publish_history.json file is created next to the media — it guarantees the same file isn't uploaded twice by different devices (claim TTL is 30 minutes).

Mode 1. Upload — Carousel (recommended: subfolders)

When to use

When you have "packaged" content — each carousel already laid out into its own folder with a clear photo order.

Template fields

  • Photo folder — absolute path
  • Each subfolder = one carouselturn on

Folder layout

carousels/
├── 01_summer_post/              ← one carousel
│   ├── 1.jpg                     ← photo order in the carousel — by filename
│   ├── 2.jpg
│   ├── 3.heic
│   └── content.json              ← caption for this specific carousel (optional)
├── 02_promo/
│   ├── photo_a.png
│   ├── photo_b.png
│   └── description.json
├── 03_lifestyle/
│   ├── img1.png
│   └── img2.jpg
└── used/                         ← created automatically
    ├── 01_summer_post/           ← the entire subfolder moves as a unit
    └── 02_promo/

Rules

  • The subfolder name used (any case) is reserved. It's never scanned. Don't name your carousels that way.
  • Inside a subfolder, photos are sorted naturally: 1, 2, 10 — not 1, 10, 2.
  • Subfolders themselves are published in the same natural order of names.
  • TikTok accepts 1 to 35 photos per carousel — stay within that limit.

What happens after publishing

The entire subfolder moves into used/ as a unit (or is deleted). The sidecar inside goes along.

Mode 1. Upload — Carousel (flat mode)

When to use

When you don't want to group photos into subfolders — all images sit "loose" in one folder.

Template fields

  • Photo folder
  • Each subfolder = one carouselturn off
  • Photos per carousel — how many images per carousel (1 to 35)

Folder layout

photos/
├── img_01.jpg          ┐
├── img_02.jpg          │  carousel #1 (if photo_count=5)
├── img_03.jpg          │
├── img_04.jpg          │
├── img_05.jpg          ┘
├── img_06.jpg          ┐
├── img_07.jpg          │  carousel #2
├── img_08.jpg          │
├── img_09.jpg          │
├── img_10.jpg          ┘
└── used/
    ├── img_01.jpg
    └── ...

Rules

  • All photos are sorted naturally by name and chunked into blocks of the configured size.
  • Sidecar captions don't work in flat mode — there's no unambiguous photo-to-group binding. If you need per-carousel captions, switch to subfolder mode.

Mode 2. Warm-up

What it does

  • Launches TikTok
  • Scrolls the feed: views N videos, occasionally likes, may follow
  • Searches by configured keywords, watches the results
  • Doesn't upload or touch any files

Folder structure

No media folders are needed. The video / photo folder fields in a warm-up template are ignored.

What's configured

A warm-up template configures behavior parameters:

  • How many videos to scroll in the feed, how many seconds each
  • Like / follow / save probability
  • List of search keywords (one per line)
  • How many videos to watch in the search results

Mode 3. Seeding (mass-seeding)

What it does

For each account in turn: reinstalls TikTok with a clean fingerprint → switches to a proxy from the rotation → logs in with the provided credentials → (optionally) runs a short warm-up → publishes the content → moves on. Camera and microphone permissions are granted automatically in Settings.

Content folder structure

Same as Upload mode — the same video folders or carousel folders. In the template pick Run Mode = Seeding; the Seeding fields use their own path and carousel options.

Content is reused across accounts

Unlike Upload, Seeding intentionally uploads the same content to multiple fresh accounts — that's the whole point of seeding. Publish history is tracked per-account.

Account file format

One account per line. Three formats are supported (auto-detected):

FormatPattern
Pipe (recommended)email|email_pass|username|tiktok_pass[|refresh_token][|client_id]
Colon (legacy)username:password:email[:totp_or_refresh][:refresh_or_client_id]
Old colonemail:password[:totp]

Example (pipe):

[email protected]|GmailPass123|cooluser1|TikTokPass!
[email protected]|OutlookPass|bestchannel|SecretPass!|1.ARw...refresh_token

Heads up: if your TikTok password contains a : character, use the pipe format only. Colon parsing will break.

Shared protection: publish history

In every content folder, the app creates a hidden .publish_history.json file. It protects against double-publishing when the same folder is used by multiple devices at once — each file goes to TikTok exactly once. Don't delete that file manually — already-published content may otherwise get re-uploaded.

"Folders prepared correctly" checklist

For Upload — Video

  • All videos in one folder, extensions from the supported list (mp4, mov, m4v, avi, mkv)
  • Filenames sorted as you want (natural sort is used)
  • No used/ subfolder yet (it'll be created automatically) or it's empty
  • If you need per-file captions — a <name>.json sidecar lives next to each video (see the Set Description guide)

For Upload — Carousel (subfolders)

  • Each carousel = a separate subfolder
  • Photos inside are numbered or named so natural sort gives the desired order
  • No subfolders named used (reserved)
  • The "Each subfolder = one carousel" toggle is on
  • If a per-carousel caption is needed — a content.json (or description.json / caption.json) lives inside the subfolder

For Upload — Carousel (flat)

  • All photos in one folder, sorted by name
  • Photo count is a multiple of "Photos per carousel" (otherwise the tail won't form a full carousel)
  • Sidecar captions are not used — pick one of the global caption sources instead

For Seeding

  • Folder structure same as Upload
  • Account file in pipe format (email|email_pass|username|tiktok_pass)
  • Proxies assigned (Stash / Happ / System) — DIRECT is not allowed for Seeding

Ready to scale TikTok publishing across your iOS fleet?

Get early access to Clout Uploader — content operations platform for TikTok creators and agencies.

Get Early Access