Skip to content
Back to skills

Telegram Github Bridge

ASecurity

Bridge GitHub webhooks to Telegram notifications

  • 2 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 10, 2026
ai-agentspythongobashflaskgitapi

Works with

  • cli
  • api

Security analysis

A100/100

Scanned September 10, 2026

npx -y skills add LoopyLuci/Skills --skill telegram-github-bridge --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Telegram Github Bridge?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Telegram Github Bridge
[![Security: A β€” Skills Directory](https://www.skillsdirectory.com/api/skills/loopyluci-telegram-github-bridge/badge)](https://www.skillsdirectory.com/skills/loopyluci-telegram-github-bridge)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: telegram-github-bridge
description: "Bridge GitHub webhooks to Telegram notifications"
---

# Telegram GitHub Bridge

Receive GitHub notifications (PRs, issues, CI, releases) directly in Telegram via webhooks.

## Option 1: GitHub Webhook β†’ Telegram Bot

### 1. Create a webhook receiver

```python
# webhook_server.py
from flask import Flask, request
import requests
import os

app = Flask(__name__)
BOT_TOKEN = os.environ["TELEGRAM_BOT_TOKEN"]
CHAT_ID = os.environ["TELEGRAM_CHAT_ID"]

def send_telegram(text):
    url = f"https://api.telegram.org/bot{BOT_TOKEN}/sendMessage"
    requests.post(url, json={"chat_id": CHAT_ID, "text": text})

@app.route("/github-webhook", methods=["POST"])
def github_webhook():
    event = request.headers.get("X-GitHub-Event")
    payload = request.json
    if event == "pull_request":
        action = payload["action"]
        title = payload["pull_request"]["title"]
        url = payload["pull_request"]["html_url"]
        send_telegram(f"πŸ”€ PR {action}: {title}\n{url}")
    elif event == "issues":
        action = payload["action"]
        title = payload["issue"]["title"]
        send_telegram(f"πŸ› Issue {action}: {title}")
    elif event == "push":
        commits = len(payload["commits"])
        repo = payload["repository"]["full_name"]
        send_telegram(f"πŸ“¦ {commits} commit(s) pushed to {repo}")
    return "OK"

app.run(port=5000)
```

### 2. Expose with ngrok

```bash
ngrok http 5000
# β†’ https://abc123.ngrok.io
```

### 3. Configure GitHub

Go to your repo β†’ Settings β†’ Webhooks β†’ Add webhook:
- Payload URL: `https://abc123.ngrok.io/github-webhook`
- Content type: `application/json`
- Select events (PR, Issues, Push, etc.)

## Option 2: GitHub CLI + Cron

```bash
hermes cron create \
  --schedule "0 9 * * *" \
  --prompt "Check my GitHub notifications and summarize anything I need to know" \
  --deliver telegram
```

## Notification Format

| Event | Format |
|-------|--------|
| PR opened | πŸ”€ **New PR:** [title](url) by @user |
| PR merged | βœ… **Merged:** [title](url) |
| Issue opened | πŸ› **New Issue:** [title](url) |
| CI passing | βœ… CI passed on [branch] |
| CI failing | ❌ CI failed on [branch] |
| Release | πŸŽ‰ **Release:** [tag](url) |

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…