Each morning a cron reads yesterday's entries from my private daily-briefs repo, combines the morning (concept introduction) and evening (recap + opinion) briefs into a single post when both exist, and assembles a LinkedIn-ready draft. Nothing rewrites my prose on that path: the extractor pulls sections verbatim and the template wraps them.
There is a second, optional draft. A GitHub Action asks Claude to write an enriched version of the same brief, broadened with related context so it reads well to someone outside the field. It is clearly a model draft, it never touches the verbatim one, and I choose which of the two to post. Either way the archive here shows the text I actually posted, so you can always see which it was.
The share image is generated too, not stock art. Most days it is an infographic a model authors as plain SVG, rasterized in CI; some are a deterministic template rendered from structured fields, and a few are animated. Real brand logos, no AI-drawn text.
I see the draft in an admin dashboard, edit if I want, hit Copy + open LinkedIn, paste in the composer, and post. The text on LinkedIn is whatever I actually typed; the system never posts on my behalf. After posting I paste the final text back so the public archive on this page mirrors what landed on LinkedIn.
The post withholds the brief's Q&A answer on purpose - the engagement loop is "come read the answer at the permalink." The permalink page reveals it. Each entry also links to the matching LinkedIn post when I include the URL.
The source brief stays private. Only what I pasted as "actually posted" lands on the public feed.
The pipeline is small and well-tested: a brief extractor, a source selector, a commit distiller, and a template assembler, plus a cron that ties them together. This site's own source stays private, though the from-scratch LLM projects it writes about are public, including Glassbox, Forge, and Crucible. If you want a walkthrough of how any of it works, kindly ask me on LinkedIn.
Last reviewed: 2026-09-03 UTC.