Skip to main content

Send weekly GitHub digests to Telegram with Qwen via OpenRouter

Workflow preview

Workflow preview
100%
Send weekly GitHub digests to Telegram with Qwen via OpenRouter preview
Open on n8n.io

1. Workflow Overview

Quick overview This workflow runs weekly or on demand via Telegram commands (/report, /issues, /prs, /status) to fetch all your GitHub repositories and events, summarizes the last 7 days using an O...

Best for

  • Engineering automation workflows
  • AI Summarization automation workflows
  • advanced n8n builders looking for reusable templates

Tools used

n8n-nodes-base.stickynote, n8n-nodes-base.scheduletrigger, n8n-nodes-base.code, @n8n/n8n-nodes-langchain.chainllm, @n8n/n8n-nodes-langchain.lmchatopenai, n8n-nodes-base.telegram, n8n-nodes-base.switch, n8n-nodes-base.httprequest

Source and attribution

This workflow is cataloged by N8N Workflows and links back to its original n8n.io source page by Do Thanh Vinh.

Original n8n.io source

1.1 Workflow description

Title
Send weekly GitHub digests to Telegram with Qwen via OpenRouter
Workflow name
Send weekly GitHub digests to Telegram with Qwen via OpenRouter

Quick overview

This workflow runs weekly or on demand via Telegram commands (/report, /issues, /prs, /status) to fetch all your GitHub repositories and events, summarizes the last 7 days using an OpenRouter-hosted Qwen model, and sends a multi-part engineering digest to your Telegram chat. No dashboards, no manual reporting.

How it works

  1. Runs on a weekly schedule (Monday 9 AM) or triggers when a Telegram message containing /report, /issues, /prs, or /status is received.
  2. Fetch all repositories - Pulls your complete repo list from GitHub via the User Repos API. Filters out archived repos automatically.
  3. Fetch events per repo — Calls the GitHub Events API for each repository (up to 100 recent events per repo).
  4. Filter and aggregate — Groups events by repo, counts activity by type (commits, issues, PRs, releases), tracks contributors, and detects stale repos.
  5. Route based on activity — A Switch node handles three paths: has activity (generate report), all repos failed (send API error alert), or no activity (silent stop).
  6. AI-powered report generation — Sends aggregated stats to Qwen 3 via OpenRouter. The AI generates structured, human-readable reports with highlights, per-repo details, weekly insights, and next-week priorities.
  7. Command-aware output — /report generates a full 4-part weekly digest. /issues lists open issues. /prs shows PR status. /status gives a quick health check with emoji indicators.
  8. Multi-message delivery — Reports are split into multiple Telegram messages to stay within the 4096-character limit and improve readability on mobile devices.
  9. Fallback resilience — If the AI model fails, a code node formats raw stats without AI. If all GitHub repos fail to fetch, an error alert is sent to Telegram. The user always gets feedback.

Setup

  1. Create a GitHub Fine-grained Personal Access Token: Settings → Developer settings → Fine-grained tokens. Permissions: Contents (Read-only). Scope it to the repositories you want to monitor. Or use a Classic PAT with the repo scope.
  2. Create a Telegram bot with @BotFather, add a Telegram Bot API credential in n8n, and obtain the target chat ID.
  3. Create an OpenRouter API key and configure an OpenAI-compatible credential in n8n with base URL https://openrouter.ai/api/v1 for the Qwen model call. (or use any OpenAI-compatible endpoint).
  4. In n8n, add credentials: Header Auth (GitHub token) + Telegram Bot API + OpenAI API (OpenRouter).
  5. In "Fetch GitHub Repositories" and "Retrieve GitHub Events" nodes: assign the GitHub Header Auth credential.
  6. In "Send Messages to Telegram" and "Send Error Alert" nodes: set your Telegram chat ID.
  7. In "OpenAI Report Model" node: assign your OpenRouter (OpenAI-compatible) credential.
  8. Activate the workflow. Send /report to your Telegram bot to test.

Requirements

  • n8n instance (self-hosted or cloud)
  • GitHub Personal Access Token (Fine-grained with Contents Read-only, or Classic with repo scope)
  • Telegram Bot token + chat ID
  • OpenRouter API key (or any OpenAI-compatible endpoint)
  • GitHub account with at least one repository

Customization

  • Filter repos: If you have more than 100 repositories, the GitHub User Repos API returns paginated results. Add a Code node between "Fetch GitHub Repositories" and "Retrieve GitHub Events" to handle pagination, or filter to specific repos:
  • var myRepos = ['owner/repo1', 'owner/repo2'];items = items.filter(function(item) {return myRepos.indexOf(item.json.full_name) !== -1;});
  • Change schedule: Edit the cron in "Weekly Digest Trigger". Daily at 9am = every day, Friday 5pm = every Friday, Twice a week = Monday and Thursday.
  • Swap the LLM: Change the model in "OpenAI Report Model" to any OpenRouter-supported model (GPT-4o, Claude, Gemini) or point to a self-hosted model by changing the base URL in the credential.
  • Change output channel: Replace "Send Messages to Telegram" with Discord, Slack, Notion, or Email nodes. The report format works across all platforms.
  • Add more commands: Edit "Parse Telegram Command" to accept new commands (e.g., /releases, /contributors). Add the new command logic in the LLM prompt under a new MODE section.
  • Single message mode: Remove the ||| splitting logic in "Format Telegram Messages" and concatenate all report parts into one message.

Additional info

Perfect for indie hackers, solo developers, open-source maintainers, and small engineering teams who want a lightweight weekly engineering report without expensive analytics tools or Jira setups.

WHY THIS APPROACH

Why not GitHub Insights? GitHub Insights shows raw metrics on a dashboard you have to visit. This workflow creates a human-readable engineering digest delivered directly to your Telegram — you don't need to leave your chat app to know what happened.

Token-efficient by design Repository activity is aggregated and compressed into a stats summary before being sent to the LLM. Only counts, not raw event payloads, reach the model. This reduces token usage and API cost significantly.

No vector DB, no embeddings, no extra subscription The AI model does summarization, not retrieval. Stats are computed in code, structured into a prompt, and turned into readable text. Simple means cheap, reliable, and easy to debug.

Activity, not incidents The health check uses traffic-light emojis to indicate development activity levels — green means actively developing, red means stale. This is an engineering velocity indicator, not an incident monitor.

Human stays in the loop The AI reports and summarizes. It does not close issues, assign people, or make decisions. A human reviews the digest and decides what to act on.

WHAT'S NEXT

Social media auto-post — Repurpose the weekly digest into a LinkedIn or Twitter post with a Telegram approval button before publishing. Obsidian sync — Push each report as a Markdown file to your Obsidian vault via Git. Build a searchable second brain of your project history. Unified weekly report — Aggregate GitHub + Gmail + Google Calendar + WakaTime (coding time) + Notion tasks into a single report. All sources have n8n integrations available. Error knowledge base — Extract bug patterns from issues, append to a JSON knowledge base. Feed into a RAG chatbot for future Q&A. Multi-channel delivery — Send the same report to Telegram + Email + Discord + Slack simultaneously.

1.2 Logical Blocks

This catalog entry is organized from the workflow JSON. The node-level section below shows the executable blocks available for review before importing the template.

2. Block-by-Block Analysis

Block 1 - Sticky Note

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 2 - Sticky Note1

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 3 - Sticky Note2

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 4 - Sticky Note3

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 5 - Sticky Note4

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 6 - Sticky Note5

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 7 - Sticky Note6

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 8 - Weekly Digest Trigger

Type / Role
n8n-nodes-base.scheduleTrigger - scheduleTrigger
Config choices
Version 1.2

Block 9 - Code Filter by Date

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 10 - Aggregate Repositories

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 11 - Build Report Components

Type / Role
@n8n/n8n-nodes-langchain.chainLlm - chainLlm
Config choices
Version 1.9

Block 12 - OpenAI Report Model

Type / Role
@n8n/n8n-nodes-langchain.lmChatOpenAi - lmChatOpenAi
Config choices
Version 1.3

Block 13 - Format Telegram Messages

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 14 - Create Fallback Report

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 15 - Send Messages to Telegram

Type / Role
n8n-nodes-base.telegram - telegram
Config choices
Version 1.2

Block 16 - Create API Error Message

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 17 - Send Error Alert

Type / Role
n8n-nodes-base.telegram - telegram
Config choices
Version 1.2

Block 18 - Route by Activity Status

Type / Role
n8n-nodes-base.switch - switch
Config choices
Version 3.4

Block 19 - Fetch GitHub Repositories

Type / Role
n8n-nodes-base.httpRequest - httpRequest
Config choices
Version 4.4

Block 20 - Telegram Message Trigger

Type / Role
n8n-nodes-base.telegramTrigger - telegramTrigger
Config choices
Version 1.2

Block 21 - Parse Telegram Command

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 22 - Retrieve GitHub Events

Type / Role
n8n-nodes-base.httpRequest - httpRequest
Config choices
Version 4.4

3. Summary Table

Workflow Send weekly GitHub digests to Telegram with Qwen via OpenRouter
Complexity advanced
Nodes 22
Categories Engineering, AI Summarization
Author Do Thanh Vinh
Published 21 May 2026

4. Reproducing the Workflow from Scratch

  1. 1. Download the workflow JSON

    Use the JSON export at /data/workflows/15898/15898.json as the source template for this automation.

  2. 2. Import the template into n8n

    Open n8n, import the downloaded JSON, and review each node before activating the workflow.

  3. 3. Configure credentials and variables

    Replace placeholder credentials, API keys, webhook URLs, account IDs, and environment-specific values with your own settings.

  4. 4. Test with sample data

    Run the workflow manually or in a staging workspace, inspect node output, and confirm downstream systems receive the expected data.

  5. 5. Activate and monitor

    Enable the workflow only after testing, then monitor executions, errors, and rate limits during the first production runs.

5. General Notes & Resources

Review imported nodes carefully before activation. This catalog entry is intended to help you inspect the workflow structure, understand required services, and find related templates faster.

Node names, credentials, schedules, webhook paths, and external service limits may need adjustment for your workspace.

Frequently asked questions

What does Send weekly GitHub digests to Telegram with Qwen via OpenRouter do?

Quick overview This workflow runs weekly or on demand via Telegram commands (/report, /issues, /prs, /status) to fetch all your GitHub repositories and events, summarizes the last 7 days using an O...

What do I need before importing this workflow?

Review the workflow JSON, configure any required credentials in n8n, and test the automation in a safe workspace before using it in production.

Can I customize this workflow?

Yes. Use the block-by-block analysis and the downloadable JSON to inspect each node, then adjust credentials, prompts, schedules, filters, or destinations for your Engineering, AI Summarization use case.