TikTok Slideshow Skill for Claude Code: Make and Post App Slideshows for Free An open-source project called the TikTok slideshow skill lets coding agents such as Claude Code, Codex, Cursor and OpenClaw write, render and post TikTok photo-mode slideshows for apps. The MIT-licensed skill generates first-person hooks in batches, renders slides locally with a bundled Python/Pillow script (no image API key or credits), and uploads approved slideshows to TikTok as drafts. The TikTok slideshow skill is a free, open-source skill that lets Claude Code, OpenClaw, Codex or Cursor write, render and post TikTok photo-mode slideshows for your app. It writes hooks in batches, renders slides that look like a person's post rather than an ad, and sends them to TikTok as drafts once you approve. The slides are rendered on your machine with a small Python script, so there's no image API key and no credits. Repo MIT : github.com/social-media-skills/tiktok-slideshow-skill https://github.com/social-media-skills/tiktok-slideshow-skill The example slideshow in the repo, for a made-up app called "plodd". Photos are one Pexels shoot. If you've looked at app marketing on TikTok, you've seen the slideshow accounts: a handful of photos, short text, and an app that turns out to be the answer. They're cheap to make, which is why so many indie devs and app founders run them. Most of them fail for a small set of reasons: The skill is built to avoid each of those. npx skills add social-media-skills/tiktok-slideshow-skill -g -a claude-code -y For Codex, Cursor or another agent, run npx skills add social-media-skills/tiktok-slideshow-skill and pick it from the list. On OpenClaw: openclaw skills install @social-media-skills/tiktok-slideshow-skill . On claude.ai, upload the zip from the latest GitHub release under Customize Skills. Rendering needs Python 3.8+ and Pillow pip install pillow . You say something like: "Make TikTok slideshows for my app, a habit tracker without streaks. Screenshots are in ./screens. No photos." The agent then: The stories question matters more than it looks. Some formats only work when something really happened "my sister said I'd quit by day 9" . The skill only writes first-person lines from what you tell it. Without a story, it uses a format that doesn't need one. | Format | Slide 1 example | Needs your own story? | |---|---|---| | Relatable scenario | "habit apps when you miss ONE day:" | No the default | | Someone else, conflict, reveal | "my sister said I'd quit by day 9" | Yes | | Tension then release | "studying at 2am the night before finals" | No | | Honest test | "I tried 4 habit tracker apps for 30 days" | Yes | | Mistake list | "3 mistakes I made with my first budget" | Yes | | Tiny tutorial | "how to plan a week in 4 minutes" | No | The relatable scenario is the default because it describes the viewer's moment and claims nothing about you. Every slideshow follows the same five parts, and it works fine by hand too: Each slide carries one text block in one size, one to three short lines, mostly lowercase. A headline with a smaller line under it is what makes a slideshow read like a deck. The slides come from scripts/render slides.py , which ships with the skill. Here is a shortened version of the spec behind the example above: { "theme": {"style": "highlight", "strip": "black"}, "slides": {"text": "habit apps when you miss ONE day:", "image": "photos/bed-phone.jpg"}, {"text": "fell asleep once.\nstreak: 0", "image": "photos/bed-asleep.jpg", "position": "center"}, {"text": "plodd: miss a day,\nnothing resets", "image": "screens/plodd-today.png", "layout": "fullscreen"} } python3 scripts/render slides.py slides.json --out slideshow/ What it does with that: highlight text on strips, white or black or classic white with a thin outline and a soft shadow . upper , top , center , bottom so it never sits on a face. "layout": "fullscreen" . The photos matter as much as the text. The skill looks for one shoot per slideshow, the same person in the same room and light, so it reads like one person's camera roll. On Pexels, photographers often publish many shots from a single session, which is enough for a slideshow. Six strangers in six rooms reads as stock. Because the renderer is a plain script, you can use it on its own as a TikTok slideshow generator in any pipeline, agent or not. Once you approve a batch, the agent posts each slideshow as a native TikTok photo post photo mode, with the swipe interface, not a video made of images . By default it lands as a draft in your TikTok inbox. You add a sound and publish. Direct posting is there when you want it. Posting goes through the MCP server of WoopSocial https://woopsocial.com/?utm source=tiktok-slideshow-skill&utm medium=article , a social media API for AI agents. Disclosure: the skill is maintained by Frank Heijdenrijk and the team behind WoopSocial. The free plan covers two social accounts. Setup steps for each agent are at woopsocial.com/agents https://woopsocial.com/agents?utm source=tiktok-slideshow-skill&utm medium=article . If you don't want to connect anything, the skill gives you the finished images and caption and you post them yourself. Operators who share their results describe a similar routine: 7 to 14 days of normal use on a new account before the first post, then 1 to 3 slideshows per account per day once it's warmed up. That's what they report, not a promise of reach, and the skill says so. It batches the work to match: one session writes the hooks and renders a week of slideshows, and you confirm the batch once. If you run several accounts for one app, each gets its own angle and its own hooks, and posting times are staggered. The skill won't post the identical slideshow to more than one account. After two or three days the agent reads the posts' stored metrics back through WoopSocial when TikTok provides them and asks you for daily downloads from App Store Connect, Play Console, RevenueCat or your analytics. Both go into hooks.md , and the agent reads them as a simple matrix: | Views | Downloads | What to do | |---|---|---| | High | High | Scale: 2 or 3 variants of the hook, more accounts | | High | Low | The hook works, the app slide doesn't: fix the reveal, caption and bio link | | Low | High | The idea converts: keep it and test new hooks | | Low | Low | Retire after two tries and change the format | High and low are measured against the same account's usual numbers. The skill never estimates downloads from views. The skill is MIT-licensed: github.com/social-media-skills/tiktok-slideshow-skill https://github.com/social-media-skills/tiktok-slideshow-skill . More free skills for social media work are at social-media-skills.com https://social-media-skills.com . If you try it on your app, tell us which format you started with and what you'd change.