Turn your git commits into social media posts using AI
Project description
BuildPost
Turn your git commits into engaging social media posts using AI
Free CLI tool that transforms your git commits into social media content. Perfect for developers who want to build in public but struggle with content creation.
Features
- AI-Powered: Works with OpenAI or Groq LLMs
- Multiple Styles: Casual, professional, technical, learning-focused, and more
- Platform-Optimized: Twitter, LinkedIn, Dev.to, and generic formats
- YAML Templates: Fully customizable prompt templates
- Zero Config: Works out of the box with sensible defaults
- Flexible Providers: Choose the LLM provider that fits your workflow and budget
Quick Start
Installation
pip install buildpost
Setup
-
Pick your LLM provider:
openai: GPT-4o mini (default) or any compatible Chat Completions modelgroq: Lightning-fast Qwen3 and Llama-family models
-
Grab an API key:
- OpenAI: OpenAI dashboard
- Groq: Groq console
-
Configure BuildPost:
buildpost config set-key YOUR_API_KEY # saves key for the active provider (OpenAI by default)
# Optional: switch providers or customise the default model
buildpost config set-provider groq --model qwen/qwen3-32b
buildpost config set-key --provider groq gsk-XXXX
Prefer environment variables?
export OPENAI_API_KEY=your_key # or GROQ_API_KEY=...
Usage
Generate a post from your latest commit:
buildpost
That's it! The post will be generated and copied to your clipboard.
Advanced Usage
Specify a Commit
# Use a specific commit
buildpost --commit abc123
# Use a commit range (summarizes multiple commits)
buildpost --range HEAD~5..HEAD
Choose a Style
# Available styles: casual, professional, technical, thread_starter, achievement, learning
buildpost --style professional
Target a Platform
# Available platforms: twitter, linkedin, devto, generic
buildpost --platform linkedin
Combine Options
buildpost --commit abc123 --style technical --platform devto --no-hashtags
Configuration
View Configuration
buildpost config show
Set Default Style and Platform
Edit ~/.buildpost/config.yaml:
defaults:
prompt_style: casual
platform: twitter
include_hashtags: true
copy_to_clipboard: true
Customize Prompts
BuildPost uses YAML templates for prompts. Edit them:
buildpost prompts edit
Or manually edit ~/.buildpost/prompts.yaml.
Available Commands
Main Commands
buildpost # Generate post from latest commit
buildpost --commit <hash> # Generate from specific commit
buildpost --range <range> # Generate from commit range
buildpost --style <style> # Use specific prompt style
buildpost --platform <name> # Format for specific platform
buildpost --provider groq # Use Groq for this run
buildpost --no-hashtags # Exclude hashtags
buildpost --no-copy # Don't copy to clipboard
Configuration Commands
buildpost config show # Show current configuration
buildpost config set-key # Set API key for the current provider
buildpost config set-key --provider groq gsk-... # Store key for Groq
buildpost config set-provider openai --model gpt-4o-mini
buildpost config reset # Reset to defaults
buildpost config init # Initialize configuration
Prompt Commands
buildpost prompts list # List available prompts
buildpost prompts edit # Edit prompts in your editor
Platform Commands
buildpost platforms list # List available platforms
Other Commands
buildpost version # Show version
buildpost --help # Show help
Prompt Styles
Casual (Default)
Perfect for Twitter and personal brands. Conversational, friendly, uses emojis.
Example:
Just squashed a tricky auth bug! 🐛
Spent the morning debugging the login flow and finally tracked it down.
Feels good to ship a fix!
#100DaysOfCode #BuildInPublic
Professional
Ideal for LinkedIn. Polished, achievement-focused, no emojis.
Example:
Improved API performance by implementing a Redis caching layer.
Key improvements:
• 60% reduction in average response time
• Decreased database load
• Better user experience during peak traffic
What caching strategies have worked well for your team?
#SoftwareEngineering #Performance
Technical
Great for Dev.to and Hashnode. Detailed, educational, technical.
Example:
Migrated our user API from REST to GraphQL
Why we made the switch:
- Reduced over-fetching (clients request only needed fields)
- Single endpoint vs. multiple REST routes
- Better type safety with GraphQL schemas
The refactor took about a week but the DX improvement is worth it.
#GraphQL #APIDesign
Thread Starter
Opens a Twitter thread. Hook-focused and intriguing.
Achievement
Celebrate milestones and wins. Great for any platform.
Learning
Share what you learned. Perfect for building in public.
Platforms
Twitter/X
- Max 280 characters
- 2-3 hashtags
- Punchy and concise
- Up to 3000 characters
- Professional tone
- 2-4 paragraphs
- Ends with a question
Dev.to / Hashnode
- Technical and detailed
- Educational focus
- Can include code concepts
Generic
- Balanced format
- Works across platforms
- Moderate length
Customization
Creating Custom Prompts
Edit ~/.buildpost/prompts.yaml:
prompts:
my_custom_style:
name: "My Custom Style"
description: "A custom prompt for my needs"
system: |
You are a developer with a unique voice...
template: |
Based on this commit, create a post:
Commit: {commit_message}
Files: {files_changed}
Make it awesome!
Use it:
buildpost --style my_custom_style
Template Variables
Available variables in templates:
{commit_hash}- Full commit hash{short_hash}- Short commit hash (7 chars){commit_message}- Commit message{author}- Commit author{date}- Commit date{files_changed}- List of changed files{diff_summary}- Summary of changes{insertions}- Lines added{deletions}- Lines deleted{files_count}- Number of files changed
Examples
Example 1: Quick Tweet
$ buildpost
Just implemented dark mode for the settings page! 🌙
Added theme switching with React Context and CSS variables.
The toggle feels so smooth!
#ReactJS #WebDev
Example 2: LinkedIn Post
$ buildpost --style professional --platform linkedin
Implemented a comprehensive caching strategy for our API layer.
This optimization resulted in:
• 65% faster average response times
• 40% reduction in database queries
• Improved scalability for concurrent users
The implementation uses Redis for distributed caching with a
smart invalidation strategy based on data mutation events.
What performance optimization techniques have had the biggest
impact in your projects?
#BackendDevelopment #APIDesign #Performance
Example 3: Technical Blog Post
$ buildpost --commit abc123 --style technical --platform devto
Refactored our authentication system to use JWT instead of sessions
Why we made the change:
- Stateless authentication (no server-side session storage)
- Better scalability across multiple servers
- Simpler mobile app integration
- Industry standard with broad library support
The migration was done in phases:
1. Implemented JWT generation alongside existing sessions
2. Migrated frontend to use JWT tokens
3. Deprecated session-based auth after monitoring period
Key learnings: Always implement both systems in parallel during
migration to allow easy rollback.
#Authentication #JWT #BackendDevelopment
Troubleshooting
"No API key found"
Make sure you’ve saved a key for the provider you’re using:
buildpost config set-provider openai
buildpost config set-key --provider openai sk-... # OpenAI key
buildpost config set-provider groq
buildpost config set-key --provider groq gsk-... # Groq key
Environment variable names:
| Provider | Environment variable | Notes |
|---|---|---|
openai |
OPENAI_API_KEY |
Works with GPT-4o mini, GPT-4o, GPT-3.5 |
groq |
GROQ_API_KEY |
Supports Qwen & Llama models |
Set it before running BuildPost:
export GROQ_API_KEY=gsk-...
"Not a git repository"
Run BuildPost from within a git repository:
cd your-git-repo
buildpost
"Invalid commit reference"
Make sure the commit hash exists:
git log --oneline # See available commits
buildpost --commit <hash>
Generated post is too long
Try a different platform or style:
buildpost --platform twitter # Shorter format
buildpost --style casual # Usually more concise
API rate limits
Each provider enforces its own rate/usage limits. If you hit them:
- OpenAI: check account limits or switch to a lighter model (gpt-4o-mini, gpt-3.5)
- Groq: review quota in the Groq console or pick a smaller model
- Reduce how frequently you generate posts
Contributing
Contributions welcome! Please read CONTRIBUTING.md for details.
Development Setup
# Clone the repository
git clone https://github.com/Chukwuebuka-2003/buildpost.git
cd buildpost
# Install in development mode
pip install -e .
# Run from source
python -m buildpost.cli
License
MIT License - see LICENSE file for details.
Support
- Issues: GitHub Issues
- Documentation: Full Docs
- Twitter: @ebukagaus
Acknowledgments
Made with code and AI by developers, for developers. Start building in public today!
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file buildpost-0.1.1.tar.gz.
File metadata
- Download URL: buildpost-0.1.1.tar.gz
- Upload date:
- Size: 25.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3893b8b439cb9645e71280a9beb3582daaaaa4c500266e87469e6589507d7964
|
|
| MD5 |
958b677e37a772acb045874bce89cb1d
|
|
| BLAKE2b-256 |
fb5d29ce0f8cd15e6657b0bb62ac61a1d36a2568475d2fe9d9c7a6862a2e5c52
|
File details
Details for the file buildpost-0.1.1-py3-none-any.whl.
File metadata
- Download URL: buildpost-0.1.1-py3-none-any.whl
- Upload date:
- Size: 24.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c7579b9a7a8fbd7acaae00045576414f81691bea77926611a7154d70f0acd16d
|
|
| MD5 |
d0c03acbf9c98a335e38961434dc1b7f
|
|
| BLAKE2b-256 |
203ba024db9f88f3362ee06f5099756fb60011b0f863a709a126e45e5794ed6c
|