The story
The problem
Most LinkedIn automation optimises for volume, which produces generic, AI-sounding posts and puts the account at risk. I wanted an agent that does the slow parts well (research, layout, first draft, consistency) while a person keeps control of what is published under their name.
The approach
I built an open-source agent skill that drafts one post at a time and then stops. It works as a SKILL.md skill for Claude, or with any agent that can read a markdown playbook and run Python. It never posts on a schedule: scheduled runs only draft and notify, and a human reads each draft and presses Post.
Lanes and memory
Each posting day has a lane (a verified news take on Monday, a first-person story on Wednesday, a skimmable checklist or comparison on Friday) so the feed does not repeat itself. A history file with one JSON line per draft treats every past topic as used, and a voice file holds the author's tone, forbidden words and sample posts.
Integrity rules
No invented numbers, clients, quotes or anecdotes. Sources are ranked, with official documentation and release notes first, and every fact is verified or labelled. The agent never reacts, reposts, deletes or comments on other people's posts unattended, and the repository keeps personal data, analytics and generated media out of version control.
Assets
A Python canvas renders 1080x1350 phone-first images with cards, pills, icon tiles and gradient text. A carousel tool turns a small JSON file (cover, point, compare and cta slides) into a PDF plus a cover image, and short reveal videos are rendered from the same canvas. Icons are Lucide SVGs fetched by the setup script rather than bundled.
The linter
slop_lint.py checks a caption for AI-sounding words, structural tells such as 'not just X, it's Y', rocket and sparkle emoji, em and en dashes, links before the first-comment marker, hashtag count, the length of line one and total word count, and exits non-zero until the caption is clean.
Built with
Python (Pillow, CairoSVG, NumPy, imageio and ffmpeg), a shell setup script, Lucide icons and a markdown playbook. MIT licensed, with documentation for usage, the weekly workflow, customising lanes and colours, and safety. Built in October 2026.
What made it hard
Credibility over volume
Designing the workflow around integrity rules (verified facts, ranked sources, no invented anecdotes) instead of posting frequency
Catching AI-sounding writing
Turning the recognisable tells of model-written copy into a deterministic linter that an agent can run until the caption is clean
Staying inside platform rules
Keeping publishing manual, because automating a personal profile can break the platform's terms, while still removing most of the work
