The approach: fill in a styled HTML template, render it to PDF with headless Chrome,
and visually verify before handing it over. The template carries the TechHive Labs
brand so every carousel looks like part of the same family.
-
Get the source. Usually a blog post in content/blog/. Pull out the hook, the
2-4 strongest data points, and the takeaway. If the source is thin, ask Tony for the
key stats — a carousel lives and dies on having real numbers, not filler.
-
Plan the slides. Aim for 8-10 slides, one idea each. The arc that works:
- Cover — the hook as a big statement (the same line you'd open the LinkedIn post with)
- Context / the question — why this matters, framed for the audience (Tony's
LinkedIn is construction + tech, not homelab — angle it toward business stakes:
cost, data ownership, decision-making, not GPU specs)
- Setup — what was tested / built, briefly
- Stat slides — one big number per slide (this is the payload; see the
stat layout)
- Takeaway — the quotable thesis line
- CTA — "full writeup → link in the comments" (never a bare URL on a slide)
Each table from a blog post should collapse into one big stat on its own slide, not
a reproduced grid. The detail stays in the article; the carousel sells the story.
-
Build the HTML. Copy assets/template.html to a working dir (e.g. carousel/)
and replace the slide sections. The template has a reusable CSS system and one example
of each layout (cover, stat, vs comparison chips, ticks list, quote, cta).
Keep the <section class="slide"> wrapper, the footer, and the slide counter on every
slide. Update the counter (01 / 09) and total to match the real slide count.
-
Render to PDF. Run the bundled script (it also renders preview PNGs):
bash .claude/skills/linkedin-carousel/scripts/render.sh carousel/carousel.html
It produces carousel.pdf next to the HTML and a contact.png contact sheet.
-
Verify visually. Read the contact.png contact sheet (and zoom into any
text-heavy slide). Check: web fonts actually loaded (Teko headers, mono numbers — if
they fell back to a serif, the render didn't wait long enough), no text clipping off
the edges, footers and counters consistent. Fix the HTML and re-render until clean.
Always look at the rendered output — never hand over a PDF you haven't seen.
-
Deliver + advise. Send the PDF with SendUserFile. Remind Tony to post it as a
Document post (not image/video), give it a title (the title shows on the carousel),
write the text post natively, and drop the blog link as the first comment — external
links in the post body cost ~60% reach on LinkedIn.
Don't reinvent these — they're the TechHive Labs identity and live in the template CSS.