Tiktok carousel forge
Practical open-source agent skills with working examples, validation, and guides for first-time users and technical operators
npx -y skills add fullREFIT/skills --skill tiktok-carousel-forgeAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 12 days oldThe repository was created 12 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Produce TikTok vertical carousel image sets (1080×1920 PNG, 9:16) from an existing LinkedIn carousel package. Reads LIC-linkedin-carousel/slides/ HTML files, reflows each slide to the vertical canvas using documented reflow rules, renders via Playwright Chromium, verifies every PNG is exactly 1080×1920 and non-blank, writes a tt-caption_{slug}_{MMDDYY}.md file, and stages everything into TT-tiktok-carousel/. Works standalone for re-renders after carousel revisions. Brand tokens (wordmark, tagline, colors) are set in config.example.md. MANDATORY TRIGGERS: tiktok carousel, TT carousel, tiktok post, tiktok images, produce tiktok, build tiktok, tt-carousel, tiktok-carousel-forge, TikTok PNGs, re-render tiktok, tiktok content, vertical carousel, 9:16 carousel.
SKILL.md
6.3 KB, ~1.4k tokens by cl100k_base, as published. Nobody here has run it
TikTok Carousel Forge
Produce a TikTok vertical carousel image set (1080×1920 PNGs, 9:16) and caption file from an existing LinkedIn carousel package. Same content, vertical container. Use config.example.md to set your brand tokens (wordmark, tagline, colors) before first use.
Prerequisites
pip install playwright pillow
playwright install chromium
Input
Provide one of:
--package /path/to/NNN-slug— full path to a content title folder- Inline (no args) — skill infers the title folder from the current working directory
The package must contain LIC-linkedin-carousel/slides/slide-*.html — the source HTML files the LinkedIn carousel was built from. Also reads:
LI-linkedin-post/linkedin-post_{slug}_{MMDDYY}.md— for caption derivation and content sync verificationLI-linkedin-post/first-comment_{slug}_{MMDDYY}.md— for the CTA link reference
Process
-
Read source HTML slides. Load each
LIC-linkedin-carousel/slides/slide-{NN}.htmlfile. Extract the content structure: headline, body text, labels, list items, CTA copy, and any data values from each slide. -
Reflow to vertical. For each slide, create a new 1080×1920 HTML document applying the vertical reflow rules in
references/tt-reflow-rules.md. Key changes: canvas becomes 1080×1920, content zone padding becomes 200px top/bottom (was 140px), and font sizes scale up per the reflow table. Your brand tokens fromconfig.example.md(colors, wordmark, tagline, fonts) are preserved exactly. Content is NOT re-angled or re-worded — same live wire, same CTA, same claims. -
Write vertical HTML files. Save each reflowed slide as
TT-tiktok-carousel/slides-vertical/slide-vertical-{NN}.html. -
Render via Playwright. Run
scripts/render_tt_carousel.pywith the slides-vertical directory and output directory. Playwright Chromium renders each HTML file at a 1080×1920 viewport and screenshots it toTT-tiktok-carousel/tiktok-carousel_{slug}_{MMDDYY}_{NN}.png. Wait 700ms before each screenshot to allow Google Fonts to load. -
Verify. Confirm every PNG is exactly 1080×1920 and file size > 5 KB. Report any failures.
-
Content sync check. Read slide 1 and the CTA slide of both the LinkedIn carousel and the TikTok set. Confirm the headline and CTA text match exactly. Any drift is a production error — re-render the affected slides.
-
Write caption. Read the LinkedIn post file. Derive the TikTok caption following the rules in
references/tt-format-specs.md. WriteTT-tiktok-carousel/tt-caption_{slug}_{MMDDYY}.md. -
Archive build script. Write a hardcoded copy of
render_tt_carousel.pywith the slug, date, and paths filled in atTT-tiktok-carousel/build_tt_carousel.pyfor future re-runs without CLI args.
Output Structure
TT-tiktok-carousel/
slides-vertical/
slide-vertical-01.html
slide-vertical-02.html
...
tiktok-carousel_{slug}_{MMDDYY}_01.png
tiktok-carousel_{slug}_{MMDDYY}_02.png
...
tt-caption_{slug}_{MMDDYY}.md
build_tt_carousel.py
Vertical Reflow Rules (summary — full rules in references/tt-reflow-rules.md)
| Element | LinkedIn 1080×1080 | TikTok 1080×1920 |
|---|---|---|
| Canvas | 1080×1080 | 1080×1920 |
| Content zone | top:140px / bottom:140px | top:200px / bottom:200px |
| Hook headline | 74–92px, weight 900 | 92px, weight 900 |
| Body text | 34–38px | 42–46px |
| Gold label | 20px, JetBrains Mono | 20px (unchanged) |
| Red divider bar | width:100px | width:140px |
| Gold statement | 32–34px | 38px |
| Wordmark/footer | unchanged | unchanged |
All brand tokens from config.example.md are preserved across LinkedIn and TikTok: colors, fonts (Outfit + JetBrains Mono via Google CDN), wordmark, and footer tagline placement.
TikTok Caption Rules (summary — full rules in references/tt-format-specs.md)
- Max 4,000 characters (TikTok limit)
- Same opening live wire as LinkedIn post — no re-angling
- Typically shorter than LinkedIn: strip the longer body sections, keep the core tension and CTA
- Hashtags: 3–8 at end of caption (or inline). No branded terms.
- No exclamation points, no em dashes, no semicolons, no emoji
- No link in caption — end with "link in bio"
Re-render use
If the LinkedIn carousel was revised, run this skill again with --package. Re-read the updated HTML slides, reflow fresh, re-render. The TT-tiktok-carousel/ folder is overwritten in-place. Do not rewrite the caption unless the carousel copy changed.
Content Sync Guarantee
TikTok and LinkedIn/Instagram always show the same content. The reflow changes dimensions and scales typography only. Verify by comparing:
- Slide 1 headline text: must match exactly
- CTA slide headline and button text: must match exactly
- Slide count: must match the LinkedIn carousel
Any content difference between formats is a bug, not a design choice.
Acceptance
TT-tiktok-carousel/slides-vertical/contains one HTML file per LinkedIn carousel slideTT-tiktok-carousel/contains one PNG per source slide (minimum 6)- Every PNG is exactly 1080×1920 and > 5 KB (confirmed by render script output)
tt-caption_{slug}_{MMDDYY}.mdexists with caption and hashtags- Slide 1 headline and CTA text match the LinkedIn carousel exactly
build_tt_carousel.pyis present for re-render capability
Gives 0 of the 12 instructions most slides presentations skills give in ~1.4k tokens
Counted across 568 of the 571 authors here whose files we hold, read 2026-08-06
- include a visual element on every slidein 52 of 568, across 21 files
- put one idea per slidein 50 of 568, across 42 files
- state the design approach before writing codein 38 of 568, across 8 files
- validate XML immediately after each editin 37 of 568, across 7 files
- rasterize gradients and icons as PNG images before referencing themin 37 of 568, across 7 files
- generate and inspect thumbnails to validate layoutin 37 of 568, across 7 files
- commit to a single visual motif across every slidein 37 of 568, across 12 files
- use web-safe fonts onlyin 36 of 568, across 7 files
- keep 0.5 inch minimum marginsin 35 of 568, across 9 files
- use two-column layout for slides with charts or tablesin 34 of 568, across 5 files
- save a template inventory analysis to a filein 33 of 568, across 4 files
- use subagents to visually inspect rendered slidesin 33 of 568, across 9 files
Said here and by no other author read
- use brand tokens from config before first use
- read source HTML slides from the package
- reflow slides to 1080x1920 applying vertical rules
- preserve brand tokens across formats exactly
- scale typography dimensions without changing content
- save reflowed slides as vertical HTML files
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.