{"id":19183912,"url":"https://github.com/mhitza/subscriptions-digest","last_synced_at":"2026-02-10T04:35:14.175Z","repository":{"id":151609388,"uuid":"361591756","full_name":"mhitza/subscriptions-digest","owner":"mhitza","description":"Simple project to automate the generation of digest emails for personal subscriptions.","archived":false,"fork":false,"pushed_at":"2024-09-10T09:40:18.000Z","size":85,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-09T23:50:45.703Z","etag":null,"topics":["atom-feed","digest-notifications","feed-reader","feeds","newsletter","rss-feed"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mhitza.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-04-26T02:20:10.000Z","updated_at":"2025-03-23T09:55:44.000Z","dependencies_parsed_at":"2025-01-04T04:31:29.770Z","dependency_job_id":"ff61a541-7b1d-440f-9877-a2987f4fdc2c","html_url":"https://github.com/mhitza/subscriptions-digest","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mhitza/subscriptions-digest","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mhitza%2Fsubscriptions-digest","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mhitza%2Fsubscriptions-digest/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mhitza%2Fsubscriptions-digest/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mhitza%2Fsubscriptions-digest/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mhitza","download_url":"https://codeload.github.com/mhitza/subscriptions-digest/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mhitza%2Fsubscriptions-digest/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268697040,"owners_count":24292390,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-04T02:00:09.867Z","response_time":79,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["atom-feed","digest-notifications","feed-reader","feeds","newsletter","rss-feed"],"created_at":"2024-11-09T11:05:32.350Z","updated_at":"2026-02-10T04:35:12.040Z","avatar_url":"https://github.com/mhitza.png","language":"PHP","readme":"Simple project to automates the generation of digest emails for personal subscriptions.\n\n## Motivation\n\nWith a preference towards minimalism, and dislike of ads, I had to dismiss almost all free feed readers I could find for my phone. Having been also a subcriber of [Kale Davis's HackeNewsletter](https://hackernewsletter.com/) for many years now, I tend to also like the digest style format for emails. With this project I wanted to find the middle ground between a feed reader and the aggregated links email format.\n\n## Overview\n\nGitHub Actions have been setup for a scheduled digest email generation daily at 00:00 (UTC), and a repository fork update every Friday. On the first run the digest email will include all the results from the configured feeds, while on follow runs it will use the GitHub API to only fetch articles published since the last time the Action ran.\n\nThe reason for the automated fork sync is because I think of this project as if it were an application, and I know I would prefer my applications to auto update than having to do the update manually. If any new features/updates are made they will try to be backwards compatible 🤞. The automation itself can be disabled from the UI if autoupdates is not something you prefer.\n\n## Getting Started\n\nYou need to fork the repository, create a configuration file and setup the necessary repository secrets for the automation.\n\n### Configuration file\n\nThe configuration format is YAML (of course), and an example file is located within the repository [config.example.yml](./config.example.yml). The only options supported are the ones described in the example file. \n\nYour configuration file can be committed to the repository, but the preferred alternative is to create a [Gist](https://gist.github.com) which will be referenced in the repository secrets. You can [permalink to a Gist's latest version](https://gist.github.com/atenni/5604615).\n\nWith a configuration file setup you can define the `CONFIG_FILE` repository secret to point at your Gist raw config.yml URL.\n\n### Mailer configuration\n\n`MAILER_SENDER` repository secret which specifies the email address that should be used as the From address of the email.\n\n`MAILER_RECIPIENTS` repository secret with a list of comma separated list of recipients (`x@example.com`, `x@example.com,y@example.com`, ` x@example.com , y@example.com` are all valid values, as the script trims any extra whitespace).\n\n`MAILER_DSN` repository secret with your emailer connection settings. Because the symfony Mailer component is used, you can use standard [SMTP/sendmail](https://symfony.com/doc/current/mailer.html#using-built-in-transports), but for more reliable transport and delivery I recommend one of the following providers. \n\n\n| Provider | SMTP | HTTP | API |\n|----------|------|------|-----|\n| Amazon SES | ses+smtp://USERNAME:PASSWORD@default  | ses+https://ACCESS_KEY:SECRET_KEY@default | ses+api://ACCESS_KEY:SECRET_KEY@default |\n| Google Gmail | gmail+smtp://USERNAME:PASSWORD@default | n/a | n/a |\n| Mailchimp Mandrill | mandrill+smtp://USERNAME:PASSWORD@default | mandrill+https://KEY@default | mandrill+api://KEY@default |\n| Mailgun | mailgun+smtp://USERNAME:PASSWORD@default | mailgun+https://KEY:DOMAIN@default | mailgun+api://KEY:DOMAIN@default |\n| Mailjet | mailjet+smtp://ACCESS_KEY:SECRET_KEY@default | n/a | mailjet+api://ACCESS_KEY:SECRET_KEY@default |\n| Postmark | postmark+smtp://ID@default | n/a | postmark+api://KEY@default |\n| Sendgrid | sendgrid+smtp://KEY@default | n/a | sendgrid+api://KEY@default |\n| Sendinblue | sendinblue+smtp://USERNAME:PASSWORD@default | n/a | sendinblue+api://KEY@default |\n\n\u003e **Make sure you URL-encode your credentials**\n\n\n### Test run\n\nTo make sure everything is wired up correctly, head over to your Actions \u003e Scheduled Digest workflow and trigger the first run manually. Followup runs will pick up the last completed run and only email your entries posted since.\n\nIf you encounter any issues, or need to reset things, just delete the past workflow runs.\n\n\n## See also\n\nCoincidentally in the same weekend I was cleaning up the repository before sharing it publicly another GitHub automated\nproject that dealt with feeds was released. If you're looking for a reader like experience instead check out [osmofeed](https://github.com/osmoscraft/osmosfeed)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmhitza%2Fsubscriptions-digest","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmhitza%2Fsubscriptions-digest","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmhitza%2Fsubscriptions-digest/lists"}