Skip to content

docs(tiktok): teach the skill which settings actually apply (posting-method + media-type axes) - #10

Closed
giladresisi wants to merge 2 commits into
mainfrom
docs/tiktok-settings-axes
Closed

docs(tiktok): teach the skill which settings actually apply (posting-method + media-type axes)#10
giladresisi wants to merge 2 commits into
mainfrom
docs/tiktok-settings-axes

Conversation

@giladresisi

@giladresisi giladresisi commented Jul 20, 2026

Copy link
Copy Markdown
Collaborator

Why

A production user ticked "Video made with AI" on a TikTok post that used the UPLOAD content-posting method, and the label was silently dropped. TikTok's Upload Video (inbox) endpoint accepts no post_info, so every setting except the title/content is discarded — and the API still reports success.

The app side was fixed in gitroomhq/postiz-app#1728 (hides DIRECT_POST-only settings on UPLOAD, adds @JSONSchema descriptions and provider @Rules). But an agent following this skill reads the static docs in this repo, not the postiz-app source — and those docs still contradicted the fixed behavior. This branch catches the skill docs up.

Two independent axes (verified against TikTok's API reference and postiz-app's buildTikokPostInfoBody)

  1. Posting method — every TikTok setting except title requires content_posting_method: "DIRECT_POST". With "UPLOAD", only the title/content survives.
  2. Media type (within DIRECT_POST):
    • Video-only: duet, stitch, video_made_with_ai
    • Photo-only: autoAddMusic
    • Both: privacy_level, comment, brand_content_toggle, brand_organic_toggle

Changes (docs/markdown only)

  • PROVIDER_SETTINGS.md — spell out both axes; tag every TikTok setting (DIRECT_POST-only; video-only / photo-only / both). autoAddMusic is no longer presented as generally required and is dropped from the video example (it's photo-only).
  • SKILL.md — add generic Rule 4: fetch integrations:settings before scheduling and honor the returned rules + per-field descriptions (inapplicable settings are silently discarded, not rejected). Fix the example's wrong "privacy" key → privacy_level.
  • README.md — same "privacy"privacy_level 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); drop 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.

Includes the earlier commit a557cd5 (UPLOAD never publishes — axis 1); this PR adds the media-type axis on top.

Related

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Documentation
    • Clarified TikTok posting settings, including direct-post and upload behaviors.
    • Updated guidance for video- and photo-specific options such as duet, stitch, AI labels, and automatic music.
    • Expanded documented TikTok settings with privacy, comments, brand-content controls, and posting methods.
    • Updated setup instructions, examples, and supported-platform references with current setting names and valid combinations.
    • Added guidance for honoring provider-specific rules and field descriptions when configuring posts.

giladresisi and others added 2 commits July 10, 2026 10:36
UPLOAD sends the media to the user's TikTok app inbox (SEND_TO_USER_INBOX),
where it must be finished manually within 24h or it is discarded. The API
still reports the post as successful, so an agent that picks UPLOAD - the
natural choice when a user says "upload this video" - silently never posts.

PROVIDER_SETTINGS.md listed the enum with no explanation, and it is what an
agent following this skill actually reads. Spell out the consequence and
name DIRECT_POST as the default.

Also stop the integrations:settings example from discarding .output.rules,
so provider guidance written upstream reaches skill users.

Mirrors gitroomhq/postiz-app#1687 and the parallel gitroomhq/postiz-docs fix.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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>
@postiz-contribution postiz-contribution Bot added the contribution:approved Approved contributor label Jul 20, 2026
@postiz-contribution

Copy link
Copy Markdown

Contribution-checker quality warning
Heuristic score: 0/100 (low). This is a non-blocking warning surfaced by the project's quality settings.

Heuristics that flagged:

  • Wall-of-text PR body: 2532 chars (>2500)
  • Excessive inline code references: 29 inline refs (>3)
  • AI watermark phrase: Matched: "Generated with Claude Code"
  • Commit message too long: Longest: 1350 chars
  • Excessive added comments: 11 added comment lines (ratio 0.44)
  • Cross-module sprawl: 6 top-level dirs

If this is a genuine contribution, please add detail to your PR description and tighten the diff scope before reviewers look at it.

@coderabbitai

coderabbitai Bot commented Jul 20, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

TikTok settings documentation, examples, and agent guidance now describe content_posting_method, media-specific applicability, updated setting names, provider rules, and silent handling of inapplicable settings.

Changes

TikTok settings alignment

Layer / File(s) Summary
TikTok provider rules and applicability
PROVIDER_SETTINGS.md, INTEGRATION_SETTINGS_DISCOVERY.md
Documents posting-method behavior, media-specific constraints, optional autoAddMusic, and silent discarding of settings on the wrong axis.
Reference documentation and examples
PROVIDER_SETTINGS_SUMMARY.md, README.md, examples/tiktok-video.json
Updates TikTok settings tables and examples with privacy_level, content_posting_method, brand toggles, and media-specific options.
Agent posting guidance
SKILL.md
Adds TikTok posting rules and requires exposing and honoring provider rules and field descriptions from integration settings.

Estimated code review effort: 2 (Simple) | ~10 minutes

Suggested reviewers: nevo-david

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly matches the PR’s main doc update: explaining which TikTok settings apply by posting method and media type.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/tiktok-settings-axes

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@PROVIDER_SETTINGS_SUMMARY.md`:
- Line 18: Update the TikTok quick-reference entries in
PROVIDER_SETTINGS_SUMMARY.md (line 18) and README.md (line 738) to explicitly
label privacy_level, comment, brand_content_toggle, and brand_organic_toggle as
“(video + photo)”; leave the existing video-only and photo-only annotations
unchanged.

In `@SKILL.md`:
- Around line 410-421: Update the settings-discovery example around
SETTINGS_JSON to enable fail-closed shell behavior with set -euo pipefail and
validate that postiz integrations:settings succeeds and returns usable JSON
before reading MAX_LENGTH, rules, or settings. Ensure failures stop execution
rather than allowing empty or null discovery values to continue.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: d4adf905-ce5b-43e0-a8a7-a24e0a840092

📥 Commits

Reviewing files that changed from the base of the PR and between 41c5a9d and 86cc3ed.

📒 Files selected for processing (6)
  • INTEGRATION_SETTINGS_DISCOVERY.md
  • PROVIDER_SETTINGS.md
  • PROVIDER_SETTINGS_SUMMARY.md
  • README.md
  • SKILL.md
  • examples/tiktok-video.json
💤 Files with no reviewable changes (1)
  • examples/tiktok-video.json

| **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) |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Make shared TikTok settings explicitly media-agnostic.

Both quick-reference tables identify video-only and photo-only fields but leave the shared fields unscoped, which weakens the PR’s central applicability guidance.

  • PROVIDER_SETTINGS_SUMMARY.md#L18-L18: mark privacy_level, comment, and both brand toggles as (video + photo).
  • README.md#L738-L738: mark privacy_level, comment, and both brand toggles as (video + photo).
🧰 Tools
🪛 LanguageTool

[uncategorized] ~18-~18: Did you mean “TikTok” (= social networking app)?
Context: .../story), collaborators | | TikTok | tiktok | content_posting_method (use DIRECT_P...

(TIK_TOK)

📍 Affects 2 files
  • PROVIDER_SETTINGS_SUMMARY.md#L18-L18 (this comment)
  • README.md#L738-L738
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@PROVIDER_SETTINGS_SUMMARY.md` at line 18, Update the TikTok quick-reference
entries in PROVIDER_SETTINGS_SUMMARY.md (line 18) and README.md (line 738) to
explicitly label privacy_level, comment, brand_content_toggle, and
brand_organic_toggle as “(video + photo)”; leave the existing video-only and
photo-only annotations unchanged.

Comment thread SKILL.md
Comment on lines +410 to +421
# Get integration settings
SETTINGS_JSON=$(postiz integrations:settings "$INTEGRATION_ID")
MAX_LENGTH=$(echo "$SETTINGS_JSON" | jq '.output.maxLength')

# Provider-specific guidance written for agents. Read it and follow it — it explains
# what the settings values actually do (e.g. which enum value publishes vs. silently
# does not). Do not skip this because a field name looks self-explanatory.
echo "$SETTINGS_JSON" | jq -r '.output.rules // empty'

# The settings JSON schema. Property `description` fields carry the same guidance
# per-field; check them before choosing a value.
echo "$SETTINGS_JSON" | jq '.output.settings'

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🩺 Stability & Availability | 🟠 Major | ⚡ Quick win

Fail closed when settings discovery fails.

This bash example does not enable set -euo pipefail or validate the response before using it. If postiz integrations:settings fails, the script can continue with empty/null rules and MAX_LENGTH, undermining the new mandatory discovery step.

🧰 Tools
🪛 SkillSpector (2.3.11)

[warning] 774: [MP2] Context Window Stuffing: Skill attempts to fill the context window with filler content, displacing legitimate instructions and safety constraints. This can degrade agent performance or bypass safety boundaries.

Remediation: Implement context-window management that detects and rejects padding or stuffing attempts. Prioritize system instructions over user-injected content.

(Memory Poisoning (MP2))


[warning] 790: [MP2] Context Window Stuffing: Skill attempts to fill the context window with filler content, displacing legitimate instructions and safety constraints. This can degrade agent performance or bypass safety boundaries.

Remediation: Implement context-window management that detects and rejects padding or stuffing attempts. Prioritize system instructions over user-injected content.

(Memory Poisoning (MP2))

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@SKILL.md` around lines 410 - 421, Update the settings-discovery example
around SETTINGS_JSON to enable fail-closed shell behavior with set -euo pipefail
and validate that postiz integrations:settings succeeds and returns usable JSON
before reading MAX_LENGTH, rules, or settings. Ensure failures stop execution
rather than allowing empty or null discovery values to continue.

@giladresisi

Copy link
Copy Markdown
Collaborator Author

Closing in favor of two stacked PRs: the posting-method change and the settings/media-type change are being split into separate PRs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

contribution:approved Approved contributor

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant