Every time I ship a feature, the same ritual starts: write a tweet, rewrite it for LinkedIn, post something in Discord, update the changelog. The code took 2 hours. The "marketing" takes 30 minutes. Every. Single. Time.
I built PushToPost to kill that loop. You push code, it handles the rest. Here's how the whole thing works.
What It Actually Does
PushToPost sits between your GitHub repo and your social media accounts. When you push to a connected repo, it:
- Receives the webhook from GitHub
- Analyzes the diff (what changed, how important it is, what type of change)
- Generates platform-native posts for Twitter, LinkedIn, Bluesky, and Discord
- Creates a structured changelog entry with SEO markup
- Either saves everything as drafts for your review, or auto-publishes if it scores high enough
The key word is "platform-native." It doesn't copy-paste the same text everywhere. Twitter gets a punchy 280-char post. LinkedIn gets a 2-3 paragraph story. Discord gets an embed. Each one reads like you wrote it for that platform.
Setting It Up (5 Minutes)
Step 1: Connect Your GitHub Repo
After signing up, go to Repositories and toggle on any repo you want to monitor. PushToPost creates a webhook automatically. You don't touch GitHub settings at all.
The moment you enable a repo, you'll see this prompt:
"Make this changelog public?"
- Private (default): Only you see the changelog in your dashboard
- Public: Gets indexed by Google, structured for AI search engines (ChatGPT, Perplexity, Google AI Overview)
You can change this anytime from Repo Settings. If you're building in public, go Public. If it's a private project, keep it Private. The social media posts work either way.
Step 2: Connect Your Platforms
Go to Platforms and connect whichever accounts you want:
- Twitter/X (OAuth)
- LinkedIn (OAuth)
- Bluesky (app password)
- Discord (webhook URL)
You only generate posts for platforms you've connected. No connected LinkedIn? No LinkedIn post generated. This saves AI costs and keeps things clean.
Step 3: Push Your Code
That's it. Push to your repo like you always do. PushToPost picks it up, analyzes it, and generates drafts.
The Smart Parts (Settings That Matter)
This is where PushToPost gets interesting. The defaults work fine, but the settings let you dial it in.
Brand Voice
Go to Settings > Brand Voice. Six presets:
- Professional: Polished, no slang
- Casual: Like chatting with dev friends
- Technical: Specific technologies, metrics, patterns
- Enthusiastic: Build-in-public energy
- Minimalist: One sentence, done
- Custom: Write your own rules
But here's the thing: presets are just the starting point. You can add Custom Instructions on top of any preset. Things like "Never mention competitor names" or "Always reference the docs link" or "Write like a senior engineer, not a marketer."
Reference Posts (RAG)
This is the feature that surprised me. Paste 2-5 of your best existing posts, and the AI studies your vocabulary, sentence structure, emoji usage, and tone. The output sounds like you wrote it, not like a generic AI post.
Posting Identity Per Repo
This one matters if you run multiple projects. Each repo can be set to Personal or Product:
- Personal: Posts say "I shipped dark mode today"
- Product: Posts say "PushToPost now supports dark mode" or "We shipped dark mode"
If you're posting from a brand account like @pushtopostdev, you want Product mode. If you're posting from your personal account, you want Personal. The AI adjusts automatically.
The Display Name you set in Repo Settings (like "HonestPDF" or "PushToPost") is what the AI uses as the product name. The Website URL field tells the AI which link to reference in posts. It won't guess or invent URLs.
What to Post About
Under Settings > Publishing, you choose which types of changes generate posts:
- New features (on by default)
- Bug fixes (on by default)
- Refactors (off by default)
- Documentation (off by default)
- Chores / maintenance (off by default)
This means dependency bumps, formatting changes, and internal refactors don't spam your followers. Only meaningful changes get through.
Importance Scoring
Every push gets scored 1-10 based on AI analysis combined with actual diff stats (files changed, lines added, file types). You set a minimum threshold. At the default of 6, about 30% of commits generate posts. Raise it to 8 and only major features get through.
Publishing Mode
Three options:
- Manual review (default): Everything goes to drafts. You approve what gets published.
- Smart auto: Posts scoring 8+ publish automatically. Lower scores wait for review.
- Full auto: Everything above your minimum threshold publishes immediately.
Start with Manual until you trust the output.
The Changelog (The SEO Play)
Every push that generates posts also creates a changelog entry. Each entry has:
- A TL;DR summary
- A "What's New" section with specifics
- FAQ section with developer questions
- JSON-LD structured data (Article + FAQPage schema)
- SEO meta description
Your public changelog lives at pushtopost.com/changelog/your-username/your-repo. It has an RSS feed, proper canonical URLs, and is designed to be picked up by AI search engines.
The theory: when someone asks "what does [your project] do" in ChatGPT or Perplexity, your structured changelog is exactly the type of source they cite.
Google indexed my changelog pages within days of making them public.
Activity Log
The Activity page shows every push and what happened to it:
- Draft: Post generated, waiting for your approval
- Published: Auto-published (met your threshold)
- Skipped: Score too low or change type filtered out
- Batched: Multiple rapid pushes combined into one post
- Queued: Waiting for repo cooldown (prevents spam)
You can click on errors to see exactly what failed and why.
X/Twitter Algorithm Optimization
There's a beta toggle in Brand Voice settings called "X/Twitter algorithm optimization." It applies insights from X's open-sourced Grok-based algorithm:
- Hooks in the first 5 words (no "Excited to announce...")
- Bookmark-worthy structure (specific numbers, concrete techniques)
- Pattern rotation (bug stories, build logs, opinions, questions, ship notes)
- No engagement bait (X detects and penalizes "Like if you agree" patterns)
- No external links in main post (X penalizes links for non-Premium accounts)
It only affects Twitter posts. LinkedIn, Bluesky, Discord, and changelog are untouched.
What I'd Recommend
- Start with Manual mode and review every draft for the first week
- Set your Brand Voice and paste 2-3 reference posts
- Set repos to Product or Personal depending on which account posts go to
- Turn off Refactors and Chores unless you want internal changes posted
- Make your changelog Public if you're building in public
- Enable the X algorithm optimization for Twitter
The whole setup takes about 5 minutes. After that, you just push code.
pushtopost.com
What's your current workflow for posting about shipped features? Curious if anyone has a better system.
Top comments (0)