Install
$ agentstack add skill-sergebulaev-tiktok-skills-tt-caption-writer ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
TikTok Caption Writer
Write the caption that sits under the video: a tight caption inside the 2,200 char API limit, a mixed-reach hashtag set, and the platformSettings.tiktok flags that control reach and interaction. On TikTok the caption supports the video, it does not carry it. The hook is in the first 1-3 seconds of the clip (see tt-hook-scripter); the caption's job is to add context and earn a comment.
When to use
- User has a video (or a script) and needs the caption, hashtags, and settings
- User is about to upload and wants the posting flags right
- User wants Claude Code or Codex to schedule a rendered .mp4 via Publora
What this skill produces
- Caption ( upload -> schedule) when a video file
is supplied
The TikTok settings (platformSettings.tiktok)
Build these with lib.tiktok_settings(...). Defaults match Publora's.
| Setting | Values / default | What it does | |---|---|---| | viewerSetting | PUBLICTOEVERYONE (default), MUTUALFOLLOWFRIENDS, FOLLOWEROFCREATOR, SELF_ONLY | who can view. Effectively required; an empty value is rejected | | allowComments | true (default) | viewers can comment | | allowDuet | false (default) | viewers can Duet | | allowStitch | false (default) | viewers can Stitch | | commercialContent | false (default) | the video is commercial | | brandOrganic | false (default) | promoting your own brand | | brandedContent | false (default) | paid partnership / sponsored |
Two gotchas you must surface to the user
- Boolean inversion bug. Publora currently maps
allowComments,
allowDuet, allowStitch to TikTok's disable_* flags, so the booleans can land inverted (sending allowDuet: true may disable duets). The status cannot be confirmed from the API alone. Test with a SELF_ONLY draft before trusting these values. Tell the user this whenever they change a flag.
- Commercial disclosure. If
commercialContentis true, at least one of
brandOrganic (your own brand) or brandedContent (paid partnership) must also be true, or Publora rejects it. lib.tiktok_settings enforces this.
Posting reality
- Unaudited apps post PRIVATE only. Until the publishing app passes TikTok's
review, posts are forced to SELF_ONLY regardless of viewerSetting. Warn the user if a "public" post lands private.
- For reach, use
PUBLIC_TO_EVERYONE. For an end-to-end test, useSELF_ONLY.
Steps
- Gather inputs, goal first. Ask (or infer) what the caption should earn,
then shape for it: comments -> end on one specific question tied to the video; saves -> promise reference value ("the 3 settings are in the caption"); shares -> a claim people will want to show someone; profile taps -> an open loop the pinned video pays off. Then gather the video topic/script, the niche, whether it is commercial, and whether a rendered .mp4 path exists.
- Draft the caption. Front-load the first visible line with a reason to read
or a specific question to comment on. Keep it tight. No em dashes, no AI vocab. Optionally restate the hook's open loop as a comment prompt.
- Pick hashtags. 3 to 5, mixed reach: one broad, one to two niche-defining,
one to two specific to the video. Put them at the end. Never stuff.
- Set the flags. Default to
PUBLIC_TO_EVERYONE, comments on, duet/stitch
off, no commercial flags. Adjust per the user, and surface the two gotchas. Build with lib.tiktok_settings(...).
- Char check. Confirm caption + hashtags , videopath=, platformsettings=,
scheduled_time=, platforms=[])`. With a video path and Publora configured, it runs draft -> upload -> schedule. Without one, it returns the caption and settings to upload in-app.
Hard rules
Global voice rules: see root SKILL.md Voice rules. Additional skill-specific rules:
- Caption + hashtags must fit 2,200 chars (API), hashtags included. Aim far under.
- 3 to 5 hashtags, mixed reach, at the end. Never 10+, never mid-sentence.
- The caption never does the hook's job. The hook is in the video.
- Always set
viewerSetting. Never ship an empty value. - Surface the boolean inversion warning whenever an interaction flag changes.
Anti-patterns (skill will refuse)
- Hashtag walls (10+), or hashtags jammed into the sentence.
- Em dashes in the caption.
- "Follow for part 2 / like and subscribe / don't forget to share" stacks.
- A caption that repeats the spoken hook word for word.
commercialContent: truewith neither brand flag set.- Claiming a post will be public when the app is unaudited (it will be private).
Resources
../../references/voice-rules.md- caption and hashtag rules../../references/algorithm-heuristics.md- caption, hashtag, and settings heuristicsreferences/settings-matrix.md- every platformSettings.tiktok value, defaults, and the known bugslib/publora_client.py-tiktok_settings(...),publish_video(...),create_draft(...)
Related skills
tt-hook-scripter- the in-video hook (the caption does not replace it)tt-humanizer- scrub the caption before publishingtt-content-planner- schedule captions across a posting week
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: sergebulaev
- Source: sergebulaev/tiktok-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.