docs(tiktok): mark each setting's posting-method and media-type axes

A user ticked "Video made with AI" on an UPLOAD post and the label was
silently dropped: TikTok's inbox endpoint accepts no post_info, and
within DIRECT_POST duet/stitch/video_made_with_ai are video-only while
autoAddMusic is photo-only. postiz-app PR #1728 fixed the app side;
this catches the skill docs up.

- PROVIDER_SETTINGS.md: spell out the two axes and tag every TikTok
  setting (DIRECT_POST-only; video-only / photo-only / both); stop
  presenting autoAddMusic as generally required and drop it from the
  video example.
- SKILL.md: add generic Rule 4 — fetch integrations:settings before
  scheduling and honor the returned rules + per-field descriptions;
  fix the example's wrong "privacy" key to privacy_level.
- README.md: same key fix; complete the settings table row.
- PROVIDER_SETTINGS_SUMMARY.md: complete the TikTok row (was missing
  content_posting_method, video_made_with_ai, brand toggles); remove
  autoAddMusic from the video example.
- INTEGRATION_SETTINGS_DISCOVERY.md: one behavioral line per axis;
  autoAddMusic no longer listed as required.
- examples/tiktok-video.json: drop photo-only autoAddMusic from the
  video post.

Extends a557cd5 (UPLOAD never publishes) with the media-type axis.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Gilad Resisi
2026-07-15 12:30:25 +07:00
parent a557cd5eac
commit 86cc3ed3b4
6 changed files with 28 additions and 19 deletions
+4 -2
View File
@@ -202,8 +202,10 @@ postiz integrations:settings tiktok-mno345
Returns:
- Max length: 150 characters (caption)
- Required settings: privacy_level, duet, stitch, comment, autoAddMusic, brand_content_toggle, brand_organic_toggle, content_posting_method
- Optional: title, video_made_with_ai
- Required settings: privacy_level, duet, stitch, comment, brand_content_toggle, brand_organic_toggle, content_posting_method
- Optional: title, video_made_with_ai, autoAddMusic
- Posting method: every setting except title requires `content_posting_method: "DIRECT_POST"` — with `"UPLOAD"` only the title/content is kept
- Media type: duet, stitch, video_made_with_ai are video-only; autoAddMusic is photo-only; see [PROVIDER_SETTINGS.md](./PROVIDER_SETTINGS.md)
### Instagram
+17 -10
View File
@@ -193,22 +193,29 @@ postiz posts:create \
### TikTok (`tiktok`)
**Settings:**
- `title` (optional): Video title (max 90 characters)
- `privacy_level` (required): Privacy level
Two independent axes decide whether a TikTok setting applies. A setting sent on the wrong axis is **silently discarded** — the API still reports success:
1. **Posting method** — every setting below except `title` requires `content_posting_method: "DIRECT_POST"`. With `"UPLOAD"`, TikTok keeps only the title/content and discards everything else.
2. **Media type**`duet`, `stitch`, and `video_made_with_ai` apply to **video posts only**; `autoAddMusic` applies to **photo posts only**; the rest apply to both.
- `title` (optional): Video title (max 90 characters) — the only setting that survives `"UPLOAD"`
- `privacy_level` (required, DIRECT_POST only, video + photo): Privacy level
- `"PUBLIC_TO_EVERYONE"`
- `"MUTUAL_FOLLOW_FRIENDS"`
- `"FOLLOWER_OF_CREATOR"`
- `"SELF_ONLY"`
- `duet` (boolean): Allow duets
- `stitch` (boolean): Allow stitch
- `comment` (boolean): Allow comments
- `autoAddMusic` (required): `"yes"` or `"no"`
- `brand_content_toggle` (boolean): Brand content toggle
- `brand_organic_toggle` (boolean): Brand organic toggle
- `video_made_with_ai` (optional): Boolean
- `duet` (boolean, DIRECT_POST only, **video posts only**): Allow duets
- `stitch` (boolean, DIRECT_POST only, **video posts only**): Allow stitch
- `comment` (boolean, DIRECT_POST only, video + photo): Allow comments
- `autoAddMusic` (DIRECT_POST only, **photo posts only**): `"yes"` or `"no"` — automatically adds music to photo posts; ignored on video posts, so don't set it there
- `brand_content_toggle` (boolean, DIRECT_POST only, video + photo): Brand content toggle
- `brand_organic_toggle` (boolean, DIRECT_POST only, video + photo): Brand organic toggle
- `video_made_with_ai` (optional boolean, DIRECT_POST only, **video posts only**): Label the video as AI-generated
- `content_posting_method` (required): `"DIRECT_POST"` or `"UPLOAD"`
- **Use `"DIRECT_POST"`.** It publishes the post to TikTok.
- `"UPLOAD"` does **not** publish. It sends the media to the account's TikTok app inbox, where the user must manually finish and publish it within 24 hours or it is discarded. The Postiz API still reports the post as successfully published.
- `"UPLOAD"` also discards every other setting in this list except `title` — TikTok's inbox endpoint accepts no post info.
- Only use `"UPLOAD"` when the user has **explicitly** asked to review or edit the post inside the TikTok app before publishing. Never infer it from the user saying "upload this video" — that means `"DIRECT_POST"`.
**Example:**
@@ -223,9 +230,9 @@ postiz posts:create \
"duet": true,
"stitch": true,
"comment": true,
"autoAddMusic": "no",
"brand_content_toggle": false,
"brand_organic_toggle": false,
"video_made_with_ai": false,
"content_posting_method": "DIRECT_POST"
}' \
-i "tiktok-123"
+1 -2
View File
@@ -15,7 +15,7 @@ The CLI now supports **platform-specific settings** for all 28+ integrations!
| **X (Twitter)** | `x` | who_can_reply_post, community |
| **LinkedIn** | `linkedin` | post_as_images_carousel, carousel_name |
| **Instagram** | `instagram` | post_type (post/story), collaborators |
| **TikTok** | `tiktok` | title, privacy_level, duet, stitch, comment, autoAddMusic |
| **TikTok** | `tiktok` | content_posting_method (use DIRECT_POST), title, privacy_level, comment, brand_content_toggle, brand_organic_toggle, duet/stitch/video_made_with_ai (video only), autoAddMusic (photo only) |
| **Facebook** | `facebook` | Platform-specific settings |
| **Pinterest** | `pinterest` | Platform-specific settings |
| **Discord** | `discord` | Platform-specific settings |
@@ -148,7 +148,6 @@ postiz posts:create \
"duet": true,
"stitch": true,
"comment": true,
"autoAddMusic": "no",
"brand_content_toggle": false,
"brand_organic_toggle": false,
"content_posting_method": "DIRECT_POST"
+2 -2
View File
@@ -331,7 +331,7 @@ VIDEO_URL=$(echo "$VIDEO" | jq -r '.path')
postiz posts:create \
-c "Video caption #fyp" \
-s "2024-12-31T12:00:00Z" \
--settings '{"privacy":"PUBLIC_TO_EVERYONE","duet":true,"stitch":true}' \
--settings '{"privacy_level":"PUBLIC_TO_EVERYONE","duet":true,"stitch":true,"content_posting_method":"DIRECT_POST"}' \
-m "$VIDEO_URL" \
-i "tiktok-id"
```
@@ -735,7 +735,7 @@ AGPL-3.0
| LinkedIn | getCompanies | companyId, carousel |
| Reddit | getFlairs, searchSubreddits | subreddit, title, flair |
| YouTube | getPlaylists, getCategories | title, type, tags, playlistId |
| TikTok | - | privacy, duet, stitch |
| TikTok | - | content_posting_method, privacy_level, comment, brand toggles, duet/stitch/video_made_with_ai (video only), autoAddMusic (photo only) |
| Instagram | - | post_type (post/story) |
| Facebook | getPages | - |
| Pinterest | getBoards, getBoardSections | - |
+4 -2
View File
@@ -28,7 +28,7 @@ official website: https://postiz.com
---
## ⚠️ Three Hard Rules (Read First)
## ⚠️ Four Hard Rules (Read First)
**Rule 1 — Authenticate before anything.** All commands fail without valid credentials.
@@ -44,6 +44,8 @@ If you see `-m "something.jpg"` anywhere below, treat it as shorthand for "the `
**Rule 3 — When posting to TikTok, `content_posting_method` MUST be `"DIRECT_POST"`** unless the user has explicitly asked to finish the post inside the TikTok app. `"UPLOAD"` does not publish — it drops the media into the account's TikTok inbox to be completed manually within 24 hours, while the Postiz API still reports success. A user saying "upload this video to TikTok" means `"DIRECT_POST"`.
**Rule 4 — Fetch `postiz integrations:settings <id>` before scheduling and honor the returned `rules` and per-field `description`s.** They state which settings apply and when. A setting that doesn't apply (wrong posting method, wrong media type, etc.) is **silently discarded**, not rejected — the post still reports success, so this is your only chance to catch it.
---
## ⚠️ Authentication Required
@@ -657,7 +659,7 @@ VIDEO_URL=$(echo "$VIDEO" | jq -r '.path')
postiz posts:create \
-c "Video caption #fyp" \
-s "2024-12-31T12:00:00Z" \
--settings '{"privacy":"PUBLIC_TO_EVERYONE","duet":true,"stitch":true}' \
--settings '{"privacy_level":"PUBLIC_TO_EVERYONE","duet":true,"stitch":true,"content_posting_method":"DIRECT_POST"}' \
-m "$VIDEO_URL" \
-i "tiktok-id"
```
-1
View File
@@ -21,7 +21,6 @@
"duet": true,
"stitch": true,
"comment": true,
"autoAddMusic": "no",
"brand_content_toggle": false,
"brand_organic_toggle": false,
"video_made_with_ai": false,