I built a Telegram bot that sends me AI-generated weekly reports on all my GitHub repos - no dashboard needed

Hey everyone! :waving_hand:

Like many of you, I manage several GitHub repositories - some active, some dormant, and a few I honestly forgot existed until I stumbled upon them one random night. I tried a few analytics tools, but they either cost too much for a solo dev, required yet another dashboard I’d never check, or gave me raw numbers without any real insight.

What I really wanted was simple: Every Monday, get a short AI-written report in Telegram telling me what happened across my repos, what needs attention, and what I should prioritize next week. No logging into another site, no BI setup, no spreadsheets.

So I built it in n8n. Took about an afternoon.


What it does

The workflow runs on two triggers:

  • :alarm_clock: Weekly schedule: Every Monday at 9 AM, it automatically fetches all repos, aggregates activity, and sends a full digest to Telegram.
  • :speech_balloon: Telegram commands: Send /report, /issues, /prs, or /status to your bot anytime for an instant update.

It uses Qwen via OpenRouter to turn raw GitHub event data into readable, actionable reports. The key design choice: stats are aggregated before hitting the LLM - only counts (commits, issues, PRs, releases) go to the model, not raw event payloads. This keeps token costs negligible even with many repos.

What’s inside the workflow

Feature Details
Full repo scan Fetches all repos via GitHub API, auto-filters archived
Smart aggregation Groups events by type, tracks contributors, flags stale repos
4 report modes /report (full digest), /issues, /prs, /status (health check)
AI fallback If the model call fails, a Code node formats raw stats — you never get silence
Error alerts If all GitHub APIs fail, Telegram gets an error alert
Message splitting Long reports split into multiple messages to respect Telegram’s 4096-char limit

Sample output (so you can see what I mean)

When I send /report, I get 4 consecutive messages in Telegram:

Message 1: Highlights & summary

📊 GitHub Weekly Digest
14 May – 21 May 2026

This week recorded 13 activities across 5 repositories:
11 issues opened, no commits, no pull requests.

🔥 HIGHLIGHTS
• dothanhvinh17 dominated 100% of activity via issue creation
• No commits or releases published this week

⚠️ NEEDS ATTENTION
• 4 repos are stale (0 events)
• triage-demo has 11 issues and 0 commits — imbalance

Message 2-3: Per-repo breakdown with STALE warnings

Message 4: Weekly insights & next-week priorities

📈 WEEKLY INSIGHTS
• Activity highly concentrated: 100% of actions in 1 repo
• Risk: 4/5 repos show no activity

🔮 NEXT WEEK PRIORITIES
1. Address backlog in triage-demo
2. Review stale repos for archiving
3. Target ≥1 commit or PR across any repo

The /status command is my favorite quick check:

🩺 Repository Health Check
🟢 triage-demo: Active (11 issues)
🟡 dothanhvinh17: Low activity (0 events)
🔴 rag-kb: Stale (0 events)
🔴 bepchu7-landing: Stale (0 events)

Get started

The workflow is published (verified, free) on the n8n.io:

:right_arrow: Send Weekly GitHub Digests to Telegram with Qwen via OpenRouter - n8n.io

One-click import, just add your credentials (GitHub PAT, Telegram bot token, OpenRouter API key), and you’re good.

I also wrote a detailed setup guide with full sample outputs and customization tips on my site - it covers how to filter repos, swap the LLM, change the schedule, add new commands, or switch to Discord/Slack:

:right_arrow: Full Guide + Sample Reports - vinhautomation.com

Why I’m sharing this

I know the n8n community is full of people who build their own solutions rather than pay for yet another SaaS subscription. This workflow is my contribution to that spirit - something that took me a few hours to build but saves me time every single week.

It’s intentionally simple. Simple means it runs cheap, breaks rarely, and is easy to debug. But there’s plenty of room to extend it (multi-channel delivery, Obsidian sync, social auto-posting - I listed some ideas in the guide).

Questions for the community:

  • Anyone else doing GitHub monitoring via n8n? How do you handle repo discovery at scale?
  • Has anyone tried replacing the LLM with a local model via Ollama? Curious about the latency trade-off.
  • What other data sources would you add to a unified weekly engineering report?

Would love to hear your thoughts and ideas! :handshake:

3 Likes

The AI fallback in the Code node is a smart touch - most people skip error handling for LLM calls and end up with silent failures in production. One thing you could layer on top is tracking which repos flipped from active to stale week-over-week, so the report highlights trend changes rather than just a snapshot. That delta would make the prioritization section much more actionable.

1 Like

Appreciate that - yeah, the fallback was a “trust no one” moment in production. LLMs fail silently all the time, especially free-tier ones.

The week-over-week delta is a great call. Right now it’s a 7-day snapshot, so you get the state but not the direction. Storing the previous week’s stats in a simple JSON file (n8n’s Read/Write File from Disk node) would be enough to compute: “this repo was active last week, now it’s stale — investigate.” Would make the :warning: NEEDS ATTENTION section actually show regressions instead of just static red dots.