How to Promote a GitHub Project Without Spam
Promote a GitHub project with show-and-tell, build-in-public, a strong README, changelogs, and communities without getting flagged as spam.
You built something useful on GitHub, but people will not find it by accident. Promoting a repo without being spammy means showing real progress where users already look, not shouting "star my project" in every thread. Below: channels that work (show-and-tell, build-in-public, README as landing page, changelogs, communities) and the patterns that get you flagged.
Lead with the work, not the ask
Spam is usually a ratio problem. One useful update with a repo link at the end is fine. Ten identical "please star" replies in unrelated threads is not.
Before you post anywhere, answer two questions:
- What changed that a stranger would care about?
- Who is that stranger, and where do they hang out?
If your answer is only "I shipped commits," rewrite until the benefit is obvious. "Shipped OAuth for self-hosted installs" beats "50 commits this week." On X, Reddit, Discord, or Hacker News, lead with the demo or problem; put the GitHub URL after the value.
A simple template: problem you hit, what you shipped, a link for detail, and optionally a question that invites feedback rather than stars.
Make the README your primary landing page
Most discovery traffic hits the repo page first. Treat the README as a product page, not a dump of badges.
Prioritize, in order:
- One-line value prop — what it does for whom
- Screenshot or short GIF — proof it works
- Quick start — install and a first command under two minutes if you can
- Who it's for / not for — reduces drive-by issues and wrong stars
- Links to docs, changelog, and demo — so people can go deeper without asking you
If you have a live demo or a public build log, link it near the top. A working example of a public build page is gittomarket's own /w page: visitors see ongoing shipping proof and can join a waitlist without digging through commit history.
Also keep the default branch green. Broken CI and a half-finished README kill conversion from social posts. Fix that surface first.
Use show-and-tell and build-in-public as the main engines
These formats trade updates for attention instead of noise for attention.
Show-and-tell (subreddits, Discord showcases, Indie Hackers): post on a visual or milestone, not every merge; include problem, stack, and one limitation; reply the same day; do not blast identical copy across five communities in an hour.
Build-in-publicon X, Bluesky, or LinkedIn: keep a steady rhythm (for example 2–4 updates per week); show screenshots or "Day N" progress in plain English; write for users, not SHA lists; link the repo sparingly so the feed is not a link farm.
For tone and cadence, see how to build in public as an indie hacker. For turning shipping days into social posts without manual copy-paste, see auto-posting GitHub commits to Twitter/X.
Changelogs are underused distribution. Clear GitHub Releases notes give you post material and help people searching version history. Write for humans: "Fixed login loop on Safari" over "addressed session edge case."
Communities: contribute first, then share once
Communities (language Discords, framework forums, niche subreddits) punish pure self-promo. They reward people who already answer questions and open useful issues.
Practical rules:
- Spend time helping others before you drop your repo
- Share only when your project solves a problem that thread already has
- Prefer "I ran into this and open-sourced a small fix" over "check out my startup"
- Never mass-DM maintainers or community mods with pitch decks
Hacker News rewards novelty and substance. A "Show HN" with a crisp demo and honest caveats often beats a polished page with no product. Fix the product or README when feedback lands; do not argue for stars.
GitHub itself is a channel: good issues, responsive PRs, and clear contribution labels. Stars often follow usefulness inside the repo more than outside marketing.
What gets you flagged (and how to stay clean)
Platforms flag patterns more than single posts. Avoid these:
- Identical copy everywhere — same paragraph on five subreddits and ten tweets in one day
- Engagement bait— "like if you would use this," fake urgency, prize-for-star schemes
- Off-topic injection — dropping your repo into threads about something else
- Follow/star for star — reciprocal gaming; easy to spot and reverse
- Link-only posts — no description, no problem statement
- Bot-like automation — dozens of near-identical captions, no replies, no screenshots
- Astroturfing — alt accounts praising your own project
Safe automation schedules real shipping updates with user-facing captions and a human approve step. Generic "Day 47 of building!!" spam with no substance is different. When in doubt, post less and be more specific.
Respect channel rules: dedicated promo channels, flair, account age. Read the sidebar first. One ban costs more than waiting a day to post in the right place.
Where automated shipping updates fit
If you already ship on a schedule, the bottleneck is often packaging the work for non-developers: captions, cards, and a public proof page. That is the narrow slot for tools in the "commit-to-social / build journal" category.
gittomarket is one of those: connect a GitHub repo, and on shipping days it can auto-render a designed commit stat card, post to X (with LinkedIn and Bluesky cross-posts), draft a blog article from the commits, and host a proof-of-work build page at /w/<slug> with waitlist signup and a dofollow backlink. Approvals go through Telegram (tap to approve; ignore means it auto-posts). Captions are aimed at your customers, not a dump of the commit log, and every card carries a streak and day counter. Free tier includes 10 auto-posts per month with the build page live from day one; the founding paid plan is $9/mo for higher limits, recaps, AI captions, template picker, custom domain, and watermark removal.
Use something like that only if the shipping is real. Automation amplifies empty weeks the same way it amplifies useful ones. Pair it with a strong README and selective community posts. Public example: gittomarket.io/w/gittomarket.
Fair questions
How do I promote a GitHub project for free?
Start with the README, GitHub Releases, and communities you already use. Post show-and-tell updates when you ship something visual or useful, answer questions where your tool is relevant, and keep a simple public log of progress. Free social accounts plus a clear repo page cover most early distribution without paid ads.
How often should I post about my open-source project?
A steady pace beats a launch burst. For many solo maintainers, a few substantive updates per week on one primary network, plus occasional deeper posts in communities, is enough. Post when you have a demoable change or a lesson; skip days that only add noise.
Should I ask people to star my repository?
Rarely as a standalone ask. Stars follow usefulness: a clear README, a working install path, and updates that solve real problems. If you mention stars at all, put them after value ("if this saves you a setup step, a star helps others find it") and never as the first sentence or in unrelated threads.
What is the difference between spam and build-in-public?
Spam optimizes for the poster: volume, identical copy, and asks without context. Build-in-public optimizes for the audience: what shipped, what broke, what a user can try today, and links used sparingly. Same channels can host either; the difference is substance, frequency discipline, and whether you engage when people reply.
Set it up once. Let it run.
Free plan includes 10 auto-posts a month, your public build page, and a 14-day trial of full Pro — no card required.
Start free →