From sporadic, manual tweeting to consistent, automated content promotion — built in under 4 hours using GPT, GitHub Actions and a few Python scripts.
The Problem: Great Content, No Time to Promote It
As the founder of Pike & Vine, I’ve published dozens of blog posts about SaaS marketing, pricing research and growth strategy. But like many founders, I wasn’t consistently promoting any of it.
Manually tweeting blog posts takes time and mental energy. Doing it well – writing a hook, including an image, keeping it fresh – takes even more. Older posts were forgotten, promotion was inconsistent, and the whole process felt like a time sink. I needed a better way to keep my content visible without making social media another job.
The Goal: Human-Sounding Automation, Zero Maintenance
I wanted a system that promoted every post on a recurring basis, tweeted once a day, sounded like me and never required manual input. It had to be lightweight, cost almost nothing and preserve quality and voice. And since most social media tools are expensive or still require hand-holding, I decided to build it myself.
The Solution: AI-Powered Content Promotion That Runs Itself
What I ended up building is a fully automated tweet scheduler that parses my blog’s WordPress sitemap, uses GPT-4.1 Mini to generate tweet copy, attaches each post’s featured image, and posts daily through GitHub Actions. Each blog post enters a rotation with a 30-day cooldown period, so nothing gets spammed and everything stays fresh.
The system respects my grammar preferences (no Oxford commas, no em dashes) and varies tone, style, emoji usage, and call to action so it doesn’t sound like a template bot. Best of all, it runs for under a penny a month—no exaggeration. The OpenAI API costs me around $0.006/month based on my volume, GitHub Actions runs in the free tier and I’m well within the free limits of the Twitter API.
Under the Hood: How It All Works
The core of the system is written in Python, broken into a few small but powerful components.
It starts with a sitemap parser that fetches and reads the /post-sitemap.xml
file from my WordPress site. It extracts URLs, titles, featured images and publish dates. Then it filters those posts based on a cooldown schedule, ensuring only one tweet per post every 30 days.
Next, the tweet generator uses GPT-4.1 Mini via OpenAI’s API. I’ve built dynamic prompts that vary in tone, length and call-to-action style. Some are short hooks, others are full 280-character blurbs. The tweet might be professional, conversational or curious in tone, and emoji usage varies too. The goal is to create variety that sounds like a real person over time.
A local SQLite database tracks what’s been tweeted and when. This helps enforce the cooldown logic and provides continuity across GitHub Actions runs. It also opens the door for future analytics, something I plan to add soon.
Finally, the automation layer is handled by GitHub Actions. The workflow runs daily at noon Pacific, selects a post, generates the tweet, and publishes it to Twitter. The system is fully hands-off, but I can still trigger manual runs if needed for testing or one-off campaigns.
The Results
One of the first tweets it generated looked exactly like what I’d write myself: an engaging question as a hook, no awkward phrasing, a relevant emoji, and a clean URL with the featured image attached. You can see it here:
Ready to boost your SaaS growth? 🚀🔍
— Dan Moen (@danmoen) June 28, 2025
Discover how to spot gaps, prioritize smart fixes, and grow step by step for real results.
Dive in 👉 https://t.co/sKaaUJH5Uz
What It Costs
This was the most surprising part: the whole thing is practically free.
The GPT-4.1 Mini API costs me less than one cent per month based on my current usage. I’m tweeting once a day with short prompts and responses, which translates to a tiny token footprint. GitHub Actions runs inside the free tier, and my Twitter usage doesn’t exceed the limits of their free API plan. In total, I spend under a penny a month to automate something that would take hours per month.
Compare that to Buffer, Hootsuite or other scheduling tools that charge $50–$200/month and still require manual writing, or agencies that cost hundreds or even thousands a month. My system takes no time to manage and scales effortlessly as I publish more content.
What Makes It Work
The secret isn’t just automation, it’s natural variation and tight guardrails.
Each tweet is written fresh by the AI, but constrained by rules that ensure it sounds like me. It avoids formulaic intros like “Check out our latest blog post,” uses clean grammar (no Oxford commas, no em dashes) and varies structure enough that no two tweets feel the same. Some have emojis, others don’t. Some ask questions, others lead with a benefit. It even changes up whether it includes hashtags.
The system tracks each post’s last few tweets and avoids repeating phrasing or hooks. That small detail helps prevent fatigue for people who follow me—and makes it feel like real thought went into every tweet.
What I’d Improve Next
I’m working on a meme generator that might make sense to tie into this as an alternative to the featured image. You could set it to produce a meme every third post or something like that.
Multi-platform support for LinkedIn and maybe Bluesky will likely follow.
And eventually I’d love to tie this system into other parts of my marketing stack. For example, if a post gets high engagement on Twitter, it could trigger an email campaign or highlight the post on my homepage.
Open Sourcing the System
You can use it too. I’ve open-sourced the project at:
🔗 https://github.com/pikeandvine/tweet-my-blog
The public repo is forkable and well-documented. Just drop in your blog’s sitemap URL, plug in your OpenAI and Twitter keys, and customize your prompts. There’s also a private repo I use for production, which includes tweet history and credential storage, but the core logic is open and ready to adapt.
Setup should take you an hour or two, depending on how familiar you are with the Twitter API and Github Actions. After that, it just runs.
Why It Matters
As a SaaS founder, you know how important it is to keep content visible, but staying consistent is hard. Tools like this remove the human bottleneck. I can add 100 new posts, and they’ll all get promoted automatically without me lifting a finger.
And because it’s built with AI and good prompts, it doesn’t sound robotic. It reflects my tone, my style, and my values. It keeps my content alive, even when I’m focused elsewhere.
Want to Build Your Own?
Check out the open-source project and follow the setup guide:
https://github.com/pikeandvine/tweet-my-blog
Questions or want to share your own automation win?
Find me on Twitter @danmoen — probably posted by my bot 😉