Technical
Content Pipeline Automation: From Idea to Published Post
Writing a daily post is easy once. It is hard to keep up for months. The part that made this sustainable for me was automating the pipeline around the writing itself. Idea capture, drafting, publishing, and distribution are all things a computer can do. Only the creative work stays with me. Here is the stack.
The Stages
The pipeline has five stages:
- Capture: ideas land in a single inbox
- Triage: ideas become drafts in a writing app
- Draft: I write the actual content (still human)
- Publish: the post goes live with correct metadata
- Distribute: the post reaches newsletter, RSS, social
Only stage three is me at the keyboard. The other four are scripts.
The Idea Inbox
Every idea lives in one markdown file. No apps, no tags, no folders. When something looks like a topic I add a single line. Once a week a script promotes ideas into draft files:
# triage.sh
while read -r idea; do
slug=$(echo "$idea" | slugify)
if [ ! -f "drafts/$slug.md" ]; then
echo "creating draft for: $idea"
template < idea.tpl --title "$idea" > "drafts/$slug.md"
fi
done < ideas.mdThat script turns a one-line idea into a pre-formatted draft with frontmatter, categories, and an outline placeholder. Takes two seconds. Removes all the activation energy.
The Publish Step
Publishing is a single make target:
make publish SLUG=post-slugUnder the hood it validates the frontmatter, checks word count, verifies categories are real, POSTs to the API, and commits the file. If any step fails the post does not publish. That validation is what keeps the site internally consistent even when I am writing fast.
The Distribution Hook
After publish succeeds, a webhook triggers the distribution fan-out:
- Add to the RSS feed (regenerated automatically)
- Schedule a newsletter mention for the next digest
- Post a brief link to my social account
- Update the sitemap
Each of those is a separate Lambda, running async. If one fails, the others still run. The post is up either way.
What I Did Not Automate
Three things I kept manual on purpose:
- Writing the actual content: this is the job, automating it defeats the point
- Editing: a second pass by a human catches things the first pass misses
- Cover image selection: small visual choices still benefit from a human eye
Automating the boring parts of content pipelines makes sustained publishing possible. Automating the creative parts makes the content forgettable. Know the difference.
Read the Jamstack introduction for the broader pattern.
RELATED READING
The Consulting Shift I Am Making In Year Two
After a year of writing and building, my consulting practice is changing shape. Shorter engagements. Sharper outcomes.
ReadThe Frontend Shift: Shipping Less JavaScript In Year Two
A year ago I reached for Next.js for everything. This year I often reach for nothing.
ReadThe Serverless Lesson I Would Write On A Sticky Note
After a year of shipping serverless projects, one rule explains most of the wins and all of the losses.
Read