AI-powered GitHub + Slack summarizer for project updates
This bot connects to GitHub, reads Pull Requests and related tasks, and uses Gemini AI to generate short, human-friendly summaries of what changed — then automatically posts the result to Slack.
Perfect for weekly updates, client meeting prep, or just keeping track of progress without digging through commits.
- 🔍 Fetch PRs, commits, and file changes from a repository within a given period
- 🧠 Summarize using Gemini AI (via API or CLI)
- 💬 Post result to Slack automatically
- 🧰 Run locally, in Docker, or via GitHub Actions
- ⚙️ Accepts a repository URL and an optional period in days (defaults to 7)
-
Clone the repo
git clone https://github.com/avidity/weekly-ai-bot.git cd github-weekly-ai-bot -
Install dependencies
npm install
-
Configure environment
Copy
.env.exampleto.envand fill in:GITHUB_TOKEN=<your_token> SLACK_WEBHOOK_URL=<your_slack_webhook> GEMINI_API_KEY=<your_gemini_api_key>
-
In Docker
docker-compose up --build
-
Local dev mode
npm run dev
There are two ways to run the bot:
Run the bot directly from your terminal with a repository URL and an optional period in days:
node src/index.js --repo https://github.com/acme/project --period 7The bot can be triggered via a Slack slash command.
Command:
/summary <period_in_days> <repository_url>
Example:
/summary 7 https://github.com/avidity/weekly-ai-bot
This will trigger the bot to generate a summary for the last 7 days and post it to the configured Slack channel.
| Layer | Tool |
|---|---|
| Runtime | Node.js (v20+) |
| AI Engine | Gemini API / CLI |
| API Source | GitHub REST API |
| Notifications | Slack Webhook |
| Containerization | Docker + Compose |
/github-weekly-ai-bot
├── src/
│ ├── index.js
│ ├── github/
│ │ ├── client.js
│ │ └── parser.js
│ ├── ai/
│ │ └── summarizer.js
│ ├── slack/
│ │ └── notifier.js
│ ├── config/
│ │ └── env.js
│ └── utils/
│ └── logger.js
├── Dockerfile
├── docker-compose.yml
├── .env.example
└── README.md
You’re encouraged to use Gemini CLI or ChatGPT during development to:
- Scaffold modules (
github/client.js,ai/summarizer.js, etc.) - Generate prompt templates
- Create fake PR payloads for testing
- Fix errors and refactor quickly
- Write inline comments and docs
- Prepare your demo pitch
💡 Treat the AI like your third teammate. It writes boilerplate, finds bugs, and explains things while you focus on testing and wiring it all together.
- Add cron job for weekly automation
- Different tones (“client-friendly”, “technical”, “fun”)
- Charts for commit/PR stats (QuickChart API)
- Simple web dashboard or Slack slash command
Command:
node src/index.js --repo https://github.com/acme/app --period 7Flow:
- Fetch PRs from the last 7 days from GitHub
- Summarize using Gemini
- Post result to Slack
Output Example:
Weekly Summary 🎉 — 3 PRs merged, 1 open. Key updates include the new caching layer which improves API speed by 30%, and a fix for the authentication flow. Two edge cases are pending for the next sprint.
Henrique Tegel & Marina Melo Pairing for Hackday 2025 — AI Theme