https://github.com/iloveitaly/github-digest
Create an email digest of activity tied to your GitHub account.
https://github.com/iloveitaly/github-digest
digest email github
Last synced: 7 months ago
JSON representation
Create an email digest of activity tied to your GitHub account.
- Host: GitHub
- URL: https://github.com/iloveitaly/github-digest
- Owner: iloveitaly
- Created: 2024-03-20T17:33:48.000Z (almost 2 years ago)
- Default Branch: master
- Last Pushed: 2025-07-02T12:02:12.000Z (7 months ago)
- Last Synced: 2025-07-02T13:21:57.035Z (7 months ago)
- Topics: digest, email, github
- Language: Python
- Size: 759 KB
- Stars: 5
- Watchers: 2
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# GitHub Email Digest
Why? Because GitHub's notification system is a complete mess and unusable.
This generates a nice email digest of all activity on your GitHub and sends it over email. Or, you could target any GitHub username to see
what someone is up to and talking about.
There's a nice docker image for deployment. Set a `SCHEDULE` and an optional heartbeat for uptime checking, and get a digest on whatever cadence you want.
## How it works
There's a [great tool named dinghy which summarizes github activity.](https://github.com/nedbat/dinghy)
This project builds upon this library:
1. Runs it on a cron
2. Bundles a default config file
3. Converts HTML into a email-safe format
4. Sends an email
## Usage
```shell
❯ github-digest --help
Usage: github-digest [OPTIONS]
Options:
--since [%Y-%m-%d] Date to pull notifications since in YYYY-MM-DD
format [required]
--github-username TEXT Who is the target GitHub user for this digest
[required]
--email-to TEXT Who to send the digest to [required]
--email-from TEXT Who to send the digest from
--email-auth TEXT Email authentication string [required]
--dry-run Output HTML instead of sending an email
--help Show this message and exit.
```
### Docker
You can use the [docker image](./docker-compose.yml) to run the digest as well. I've really [liked resend](https://resend.com/emails) for SMTP.
## Development
Simulating a cron run:
```python
from datetime import datetime
import os
from github_digest import cli
last_synced_raw = '2025-01-01 01:12:13.232395+00:00'
last_synced = datetime.fromisoformat(last_synced_raw)
os.environ["GITHUB_DIGEST_GITHUB_USERNAME"] = "iloveitaly"
os.environ["GITHUB_DIGEST_SINCE"] = last_synced.strftime("%Y-%m-%d")
cli()
```
You can do this within a container as well:
```bash
pip install ipython
ipython
```
## Deployment
I had some trouble building the container with nixpacks (my favorite build tool) because of required libraries. Here's a
command I used to help replicate the prod environment locally
```bash
nixpacks build . --name github-digest-local --libs=cairo # you can play around with various config settings
docker run --env GITHUB_TOKEN --env GITHUB_DIGEST_EMAIL_AUTH --env GITHUB_DIGEST_EMAIL_TO --env GITHUB_DIGEST_EMAIL_FROM -it github-digest-local:latest bash -l
```