Automatically discover and summarise your weekly GitHub impact
Project description
gh-weekly-updates
Automatically discover and summarise your weekly GitHub impact using AI.
gh-weekly-updates collects your GitHub activity — pull requests authored & reviewed, issues created & commented on, discussions — and generates a structured Markdown summary using GitHub Models.
Features
- Auto-discover repos via the GitHub GraphQL Contributions API, or provide an explicit list
- Collect detailed activity: PRs, reviews, issues, issue comments, discussions
- AI-powered summarisation via GitHub Models (
openai/gpt-4.1by default) - Structured output: Wins / Strategic Influence / Challenges with inline links
- Push to a repo: automatically commit summaries to a GitHub repo for sharing
- Fully configurable: org, repos, model, prompt — via YAML config or CLI flags
- Custom prompts: tailor the AI summary to your team's format
Installation
pip install gh-weekly-updates
Requirements
- Python 3.11+
- A GitHub personal access token (PAT) or the GitHub CLI (
gh) authenticated- Required scopes:
repo,read:org - The token also needs access to GitHub Models for AI summarisation
- Required scopes:
Quick start
# Authenticate with the GitHub CLI (easiest)
gh auth login
# Run with defaults — covers the past week
gh-weekly-updates
# Or specify a date range
gh-weekly-updates --since 2025-06-01 --until 2025-06-07
Configuration
Create a config.yaml (see config.example.yaml):
# GitHub org to scope repo discovery to
org: my-org
# Explicit repo list (skips auto-discovery)
repos:
- my-org/api-service
- my-org/web-app
# GitHub Model for summarisation
model: openai/gpt-4.1
# Push summary to a repo under weekly-updates/
push_repo: my-user/my-updates
# Custom system prompt (inline)
prompt: |
You are an engineering manager writing a concise weekly summary...
# Or load prompt from a file
# prompt_file: my-prompt.txt
CLI reference
Usage: gh-weekly-updates [OPTIONS]
Options:
--config PATH Path to YAML config file. Default: ./config.yaml
--since TEXT Start date (ISO 8601). Default: previous Monday.
--until TEXT End date (ISO 8601). Default: now.
--user TEXT GitHub username. Default: authenticated user.
--repos TEXT Comma-separated list of repos (owner/name).
--org TEXT GitHub org to scope repo discovery to.
--output PATH Write summary to a file instead of stdout.
--push TEXT Push summary to a GitHub repo (owner/name).
--model TEXT GitHub Model to use. Default: openai/gpt-4.1.
--verbose Enable debug logging.
--help Show this message and exit.
Authentication
gh-weekly-updates resolves a GitHub token in this order:
GITHUB_TOKENenvironment variablegh auth token(GitHub CLI)
For GitHub Enterprise with SSO, ensure the token is authorised for your org.
Using with GitHub Actions
You can run gh-weekly-updates on a schedule in a GitHub Actions workflow:
name: Weekly Impact Summary
on:
schedule:
- cron: '0 9 * * 1' # Every Monday at 9am UTC
workflow_dispatch:
jobs:
summarise:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install gh-weekly-updates
run: pip install gh-weekly-updates
- name: Generate summary
env:
GITHUB_TOKEN: ${{ secrets.GH_PAT }}
run: |
gh-weekly-updates \
--config config.yaml \
--push my-user/my-updates
Note: The default
GITHUB_TOKENprovided by Actions has limited scope. Use a Personal Access Token stored as a repository secret withrepoandread:orgscopes, plus GitHub Models access.
Development
git clone https://github.com/sahansera/gh-weekly-updates.git
cd gh-weekly-updates
python -m venv .venv && source .venv/bin/activate
make dev # install in editable mode with dev deps
make run # run with defaults
make lint # ruff check
See CONTRIBUTING.md for more details.
License
Project details
Release history Release notifications | RSS feed
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 gh_weekly_updates-0.1.1.tar.gz.
File metadata
- Download URL: gh_weekly_updates-0.1.1.tar.gz
- Upload date:
- Size: 17.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6acdd09792e3d74d4b17a8cd476919af96a1ed3881a13a0974076cff1569e171
|
|
| MD5 |
0afbb3db1d0f50642ddf2133a16c6115
|
|
| BLAKE2b-256 |
6e8768e89b30ce1ed2017afb200f368f47fc1438495a13091c7a44085afc425f
|
Provenance
The following attestation bundles were made for gh_weekly_updates-0.1.1.tar.gz:
Publisher:
publish.yml on sahansera/gh-weekly-updates
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
gh_weekly_updates-0.1.1.tar.gz -
Subject digest:
6acdd09792e3d74d4b17a8cd476919af96a1ed3881a13a0974076cff1569e171 - Sigstore transparency entry: 972822832
- Sigstore integration time:
-
Permalink:
sahansera/gh-weekly-updates@2b241877b38f8b1db5920b9ceafb71efb3652b3f -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/sahansera
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@2b241877b38f8b1db5920b9ceafb71efb3652b3f -
Trigger Event:
release
-
Statement type:
File details
Details for the file gh_weekly_updates-0.1.1-py3-none-any.whl.
File metadata
- Download URL: gh_weekly_updates-0.1.1-py3-none-any.whl
- Upload date:
- Size: 18.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fd07b1eeccdc771af8010430f8bbc45e6c1fcf40dda804277459dd4356ebec97
|
|
| MD5 |
c9b35cb41c338b19ee95228441c05164
|
|
| BLAKE2b-256 |
359f42720a77555625ffa2b61067a6d226b33147cdfc62556903150953317975
|
Provenance
The following attestation bundles were made for gh_weekly_updates-0.1.1-py3-none-any.whl:
Publisher:
publish.yml on sahansera/gh-weekly-updates
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
gh_weekly_updates-0.1.1-py3-none-any.whl -
Subject digest:
fd07b1eeccdc771af8010430f8bbc45e6c1fcf40dda804277459dd4356ebec97 - Sigstore transparency entry: 972822838
- Sigstore integration time:
-
Permalink:
sahansera/gh-weekly-updates@2b241877b38f8b1db5920b9ceafb71efb3652b3f -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/sahansera
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@2b241877b38f8b1db5920b9ceafb71efb3652b3f -
Trigger Event:
release
-
Statement type: