A fork of hodgesmr/mastodon_digest that
- runs on github actions
- renders mastodon posts without iframes
- in a clean and responsive style
Mastodon Digest scans posts you haven't yet seen in your timeline, finds the most popular ones and shows them to you in a pretty page.
- Fork this repository
- Create repository secrets (
Settings→Secrets and variables→Actions→New repository secrets) for:
MASTODON_BASE_URL: the url of your instance, likehttps://mastodon.socialMASTODON_USERNAME: your user name, likeGargronMASTODON_TOKEN: the access token you request in your instance settings underPreferences→Development
- Adjust the github workflow however you want
- edit
cronto define how often you want the digest to run - edit the command
python run.py -n 12 -s SimpleWeighted -t laxwith your own preferences for:
-n {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24}
The number of hours to consider (default: 12)
-s {ExtendedSimple,ExtendedSimpleWeighted,Simple,SimpleWeighted}
Which post scoring criteria to use. Simple scorers take a geometric
mean of boosts and favs. Extended scorers include reply counts in
the geometric mean. Weighted scorers multiply the score by an
inverse sqaure root of the author's followers, to reduce the
influence of large accounts. (default: SimpleWeighted)
-t {lax,normal,strict}
Which post threshold criteria to use. lax = 90th percentile, normal
= 95th percentile, strict = 98th percentile (default: normal)
- Enable github actions under
Settings→Actions→General - Allow github actions to write to the repo under
Settings→Actions→General, checkRead and write permissionsand Save - Create the
gh-pagesbranch - Run the action from the
Actionstab and when it succeeds publish your digest by going toSettings→Pagesand selecting to deploy from therootof thegh-pagesbranch.
This repository now ships dependency metadata in the scripts themselves, so you can run them without manual pip installs by using uv on Python 3.13+:
# Generate a digest (requires env vars as usual)
uv run run.py -n 12 -s SimpleWeighted -t normal
# Render the showcase test data without hitting the API
uv run run.py --demo-data
# Emit machine-readable results while still building HTML (with demo data here)
uv run run.py -n 6 --json - --demo-data
# Experiment with async timeline fetching or alternate timelines
uv run run.py --async-fetch --timeline federated
# Filter by language / content type
uv run run.py --languages en --exclude-polls --require-media