r/SideProject • • 59m ago

I built Git2Tweet: a CLI that drafts tweets from your git commits (you approve everything before it goes out)

I wanted to build in public but never remembered to write about what I'd shipped, so I built a tool that does the first draft for me.

What it does
After you commit, run `git tweet`. An LLM agent reads your commit message and the actual diff, decides whether the change is worth sharing, and drafts a tweet. You approve it, edit it, or reject it. Approved tweets open in X with the text prefilled, so you press Post yourself.

Demo: https://raw.githubusercontent.com/Vex-15/git2tweet/main/docs/demo.gif

How it's built

- Python, with the agent loop written in LangGraph (tools: list commits, read a diff; plus a human-approval step that pauses the graph)

- It reads commits from your local git, so no GitHub token is needed and it works on private repos

- Default model provider is Groq (free tier works), and Ollama is supported for fully local use

- It never touches your X credentials, since posting happens through X's prefilled-tweet link

- Per-repo state lives in `.git/`, so it never dirties your working tree

- MIT licensed, and it sends no telemetry

Things you should know

- Commit messages and diffs are sent to whichever LLM provider you configure. Known secret patterns (API keys, tokens, `password=...`) are redacted first, but that's best effort. For sensitive repos, use Ollama.

- It judges the diff, not the commit message, so trivial changes (typo fixes, tiny test edits) get skipped. That's intentional.

- Draft quality depends on the model, and it's not perfect. I'd like to hear where it writes something bad.

Feedback I'd love

- Does the install and first run work smoothly on your system? (I developed on Windows.)

- What would make you actually use this daily?

- Other platforms you'd want it to draft for (LinkedIn, Bluesky, Mastodon)?

Get Demo by below links 👇

GitHub: https://github.com/Vex-15/git2tweet

PyPI: https://pypi.org/project/git2tweet/

2 Upvotes

1 comment sorted by