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:
| Mode | What it does | Media files needed? |
|---|---|---|
| Upload | Posts videos or carousels to logged-in accounts | Yes |
| Warm-up | In-app warm-up: scrolls the feed, likes, searches by keywords, watches results | No |
| Seeding | Full mass-seeding cycle on fresh accounts: TikTok reinstall → fingerprint reset → proxy rotation → login → upload | Yes |
The content type inside Upload and Seeding is selected separately:
video— regular videoscarousel— photo carousel
Supported file formats
| Type | Extensions |
|---|---|
| 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
- Order —
Sequential(by name, natural sort) orRandom(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
.jsonwith 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 carousel — turn 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— not1, 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 carousel — turn 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):
| Format | Pattern |
|---|---|
| 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 colon | email: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>.jsonsidecar 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(ordescription.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