# Folder structure for each mode (https://clout.wtf/guide/folder-structure-guide/)



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 (clean start) → proxy rotation → login → upload | Yes                 |

The content type inside Upload and Seeding is selected separately:

* `video` — regular videos
* `carousel` — 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) or `Random` (shuffled)
* **Move used files** — into a `used/` subfolder (**on by default**)
* **Delete after publishing** — takes priority over "move"

### Folder layout

```text
videos/
  clip_1.mp4
  clip_2.mp4
  clip_10.mp4
  promo.mov
  used/
    clip_1.mp4
    clip_2.mp4
```

Natural sort applies: `1, 2, 10` — not `1, 10, 2`. The `used/` folder is created automatically after the first successful upload.

### 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 carousel** — **turn on**

### Folder layout

```text
carousels/
  01_summer_post/
    1.jpg
    2.jpg
    3.heic
    content.json
  02_promo/
    photo_a.png
    photo_b.png
    description.json
  03_lifestyle/
    img1.png
    img2.jpg
  used/
    01_summer_post/
    02_promo/
```

One subfolder = one carousel; photo order inside — by filename. `content.json` is the optional caption for that specific carousel. After publishing, the entire subfolder moves into `used/` as a unit.

### 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. Anything above nine is selected in batches of nine inside the picker, and each extra batch adds about 30 seconds to the post.

### 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 for a clean start → 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):**

```
user1@gmail.com|GmailPass123|cooluser1|TikTokPass!
channel@outlook.com|OutlookPass|bestchannel|SecretPass!|1.ARw...refresh_token
```

> **Note:** **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](https://clout.wtf/guide/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

## Further reading on the blog

* [How to Build an AI-to-TikTok Content Pipeline in 2026](https://clout.wtf/blog/ai-to-tiktok-content-pipeline/)
* [Best AI Video Generators for TikTok in 2026: Tools, Workflows, and What Actually Works](https://clout.wtf/blog/best-ai-video-generators-tiktok/)
