{"slug": "tiktok-skill-for-claude-code-make-check-preview-and-post-tiktok-videos-from-your", "title": "TikTok Skill for Claude Code: Make, Check, Preview and Post TikTok Videos From Your Agent", "summary": "A developer released TikTok Skill, a free, MIT-licensed agent skill for Claude Code, Codex, Cursor, OpenClaw and Gemini CLI that turns ideas, notes, clips or photos into finished TikTok videos and photo posts, checks every file and setting against TikTok's posting rules, previews posts as they appear in the For You feed, and schedules them after user approval. All processing up to posting runs locally with Python, Pillow and ffmpeg, with no paid API, and the bundled tt_check.py validates frame rate, codecs, length limits, photo formats, privacy choices and branded-content rules, with a --fix mode that writes corrected copies.", "body_md": "TikTok skill for Claude Code, free and MIT licensed: TikTok Skill lets your agent turn an idea, notes, your clips or your photos into finished TikTok videos and photo posts, check every file and setting against TikTok's posting rules, show you each post as the For You feed shows it, and schedule them after you say yes. It also works in Codex, Cursor and OpenClaw.\n\nEverything up to posting runs on your own computer with Python, Pillow and ffmpeg. There is no paid API. This post covers what the skill does, how to install it, the example in the repo, and then the parts that are code: the checker, the video tools, inbox drafts, per-account versions and the learning loop.\n\n```\nnpx skills add social-media-skills/tiktok-skill -g -a claude-code -y\n```\n\nRepo: [github.com/social-media-skills/tiktok-skill](https://github.com/social-media-skills/tiktok-skill)\n\n*The example in the repo, for \"Earth in Numbers\", a made-up science account. Footage and photos: NASA/JPL-Caltech and NASA; figures: USGS and NASA (no endorsement implied).*\n\nAn agent skill is a folder with a `SKILL.md` that tells an agent like Claude Code how to do a job, plus the scripts it runs. Most Claude TikTok help stops at text: a hook, a script, some hashtags. Then the upload fails on something nobody checked: a 50 fps export the API refuses, a PNG in a photo post, a video longer than the account may post, or a missing privacy choice, which TikTok requires the user to make every time.\n\nThis skill ships the scripts that make and check the posts, so the agent hands you real files:\n\nClaude Code:\n\n```\nnpx skills add social-media-skills/tiktok-skill -g -a claude-code -y\n```\n\nCodex, Cursor and other agents: `npx skills add social-media-skills/tiktok-skill`, then pick your agent. OpenClaw: `openclaw skills install @social-media-skills/tiktok-skill`. Gemini CLI: `gemini extensions install https://github.com/social-media-skills/tiktok-skill`.\n\nIt needs Python 3.9+ with Pillow, and ffmpeg for video. `scripts/check_setup.py` tells you what's missing and prints the install command for your OS.\n\n`examples/fresh-water/` is a full batch for a made-up science account with an English profile (New York) and a Spanish one (Madrid):\n\nEvery slide, check, preview, schedule and request in that folder was made by the skill's scripts.\n\n`tt_check.py` reads `plan.json` (the batch: accounts, posts, settings) and checks each file and target. A few rules that cost people uploads:\n\n| Rule | Why it matters | \n|---|---|\n| 23 to 60 fps, constant | Other frame rates fail with `frame_rate_check_failed` | \n| H.264 (or H.265, VP8, VP9), 8-bit | 10-bit and odd codecs get rejected or re-encoded badly | \n| Length up to the account's own maximum | Many accounts may post 3 minutes through the API; it reads the account's limit from WoopSocial | \n| JPEG or WebP photos, up to 1080p and 20 MB | PNG is rejected for photo posts | \n| Privacy chosen by the user, no default | TikTok's rule for every posting app; the plan records `\"privacy_from\": \"user\"` | \n| Branded content never private | TikTok refuses \"Paid partnership\" with \"only me\" | \n| Interactions off unless turned on | Another of TikTok's posting-app rules | \n\n`--fix` writes fixed copies to `fixed/` (frame rate, codecs, shape, PNG to JPEG) and keeps the originals. A landscape video that would lose a lot of its width is an error, not a silent crop: the agent shows you the frames and asks.\n\nThe checker also knows things a file probe can't: the same media on two accounts (by content hash, so renaming doesn't hide it), two posts on one account within a week that teach the same fact, and a single clip you didn't film that keeps its own audio, which TikTok treats as reused material.\n\nPublic domain means you may use a clip. It doesn't mean TikTok counts it as yours. A hook plate on someone else's single clip is the easiest thing for TikTok to match, especially when the original audio is still there.\n\nSo the skill treats such footage as material for an edit of your own:\n\n```\npython3 scripts/video.py montage clips.json --out video/montage.mp4\npython3 scripts/video.py text video/montage.mp4 --beats beats.json --out video/fresh-water.mp4\n```\n\n`clips.json` lists the shots with a start, an end and `x`, where the subject sits (0 left, 0.5 middle, 1 right), so each shot is cropped around its subject instead of the middle. `beats.json` holds the timed points. Each point picks TikTok's classic outlined text or the highlight style, depending on how bright the background behind it is, and stays clear of the buttons and caption.\n\nNo posting API can attach a TikTok sound. For photo posts, `autoAddMusic` lets TikTok add recommended music on a direct post. For anything that needs a chosen sound, the skill sends the post to the account's TikTok inbox as a draft (`postMode: MEDIA_UPLOAD`).\n\nTwo details make drafts usable. A draft lands at its scheduled time, not at the time it should go live, so `schedule.py` sends it 2 hours early. And video drafts arrive without a caption, so `schedule.md` lists each draft with the caption to paste. Privacy and `autoAddMusic` are left out of the draft request: you pick them in the app.\n\nPosting goes through [WoopSocial](https://woopsocial.com/?utm_source=tiktok-skill&utm_medium=devto), a social media API and MCP server for AI agents. Its [TikTok MCP server](https://woopsocial.com/social-media-mcp/tiktok-mcp?utm_source=tiktok-skill&utm_medium=devto) posts videos and photo posts, directly or as inbox drafts, now or scheduled, with a cover, privacy, interaction settings, Promotional content and Paid partnership labels, and the AI label on videos.\n\nThis matters for anyone who searched for a TikTok developer API key: TikTok's Content Posting API only lets unaudited apps post \"only me\", for at most 5 users a day. WoopSocial's app is audited, so posts can be public from the start, and you don't need a developer account. Disclosure: the skill is maintained by Frank Heijdenrijk and the team behind WoopSocial. The free plan covers 2 social accounts.\n\nThe agent uploads each file, writes one request per post and account, validates them, and posts only after you say yes on the preview. WoopSocial doesn't write captions or edit media; the skill does that on your computer.\n\nEach account gets its own version of a post: another hook, cut, order or language written for that country (in Spain \"grifo\", in Mexico \"llave\"; metric units; decimal commas). Two accounts in the same language get their own idea, not the same slides with new words. Each account posts at its own times in its own time zone.\n\nAfter a few days, `log.py results` reads the post numbers WoopSocial collects and measures each post at the value nearest to day 7, so posts from different weeks are compared at the same age. It ranks against the same account's posts of the same type:\n\nIt names a best post only after 6 of a type. Saves, follows and watch time that the API doesn't report come from TikTok Studio, via `insights.csv`. Missing numbers are \"not reported\", never zero.\n\nThe repo is [social-media-skills/tiktok-skill](https://github.com/social-media-skills/tiktok-skill). Issues and pull requests are welcome, especially when a TikTok limit in `references/tiktok-specs.md` changes. More free skills from the same team are at [social-media-skills.com](https://social-media-skills.com/?utm_source=tiktok-skill&utm_medium=devto).", "url": "https://wpnews.pro/news/tiktok-skill-for-claude-code-make-check-preview-and-post-tiktok-videos-from-your", "canonical_source": "https://dev.to/fheijdenrijk/tiktok-skill-for-claude-code-make-check-preview-and-post-tiktok-videos-from-your-agent-42e6", "published_at": "2026-11-05 16:44:08+00:00", "updated_at": "2026-11-05 16:49:32.470652+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "developer-tools", "generative-ai"], "entities": ["TikTok", "Claude Code", "Codex", "Cursor", "OpenClaw", "Gemini CLI", "WoopSocial", "NASA"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/tiktok-skill-for-claude-code-make-check-preview-and-post-tiktok-videos-from-your", "markdown": "https://wpnews.pro/news/tiktok-skill-for-claude-code-make-check-preview-and-post-tiktok-videos-from-your.md", "text": "https://wpnews.pro/news/tiktok-skill-for-claude-code-make-check-preview-and-post-tiktok-videos-from-your.txt", "jsonld": "https://wpnews.pro/news/tiktok-skill-for-claude-code-make-check-preview-and-post-tiktok-videos-from-your.jsonld"}}