{"id":38039941,"url":"https://github.com/tnagatomi/octonotify","last_synced_at":"2026-01-16T19:53:33.256Z","repository":{"id":332681574,"uuid":"1125722825","full_name":"tnagatomi/octonotify","owner":"tnagatomi","description":"A GitHub Actions-based tool that monitors GitHub repository events and sends email notifications","archived":false,"fork":false,"pushed_at":"2026-01-15T00:51:21.000Z","size":92,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-15T07:42:12.304Z","etag":null,"topics":["github","github-actions","notifications"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tnagatomi.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":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-12-31T08:27:48.000Z","updated_at":"2026-01-15T00:51:24.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/tnagatomi/octonotify","commit_stats":null,"previous_names":["tnagatomi/octonotify"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/tnagatomi/octonotify","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tnagatomi%2Foctonotify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tnagatomi%2Foctonotify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tnagatomi%2Foctonotify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tnagatomi%2Foctonotify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tnagatomi","download_url":"https://codeload.github.com/tnagatomi/octonotify/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tnagatomi%2Foctonotify/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28482100,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T11:59:17.896Z","status":"ssl_error","status_checked_at":"2026-01-16T11:55:55.838Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["github","github-actions","notifications"],"created_at":"2026-01-16T19:53:33.174Z","updated_at":"2026-01-16T19:53:33.241Z","avatar_url":"https://github.com/tnagatomi.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Octonotify\n\nA GitHub Actions-based tool that monitors GitHub repository events and sends email notifications.\n\n\u003e [!NOTE]\n\u003e Octonotify is **not** a real-time notifier. It periodically polls GitHub on a schedule (e.g., every 5 minutes) and sends a digest email.\n\u003e The GitHub Actions `schedule` trigger is best-effort and may be delayed or skipped during periods of high load. See: https://docs.github.com/en/actions/reference/workflows-and-actions/events-that-trigger-workflows#schedule\n\nCurrently supported events:\n\n- Release\n- PR created\n- PR merged\n- Issue created\n\n## Motivation\n\nGitHub's built-in notifications are convenient, but they often mean you end up following *all subsequent comments* after an Issue/PR is created.\nThat can lead to unwanted noise: you either keep getting updates on threads you're not interested in, or you have to turn notifications off for that Issue/PR.\n\nOctonotify lets you **filter by event type** (e.g., \"Issue created\", \"PR merged\") and receive a digest email.\nIf you later decide you want to follow a specific Issue/PR thread, you can jump to it from the email and subscribe there.\n\n## Setup\n\n### 1. Fork this repository\n\nFork this repository to your own GitHub account.\n\n### 2. Configure Secrets\n\nGo to your forked repository's Settings → Secrets and variables → Actions and configure the following secrets:\n\n| Secret | Description | Example |\n|--------|-------------|---------|\n| `OCTONOTIFY_SMTP_HOST` | SMTP server hostname | `smtp.gmail.com` |\n| `OCTONOTIFY_SMTP_PORT` | SMTP server port (optional; default: `587`) | `587` |\n| `OCTONOTIFY_SMTP_USERNAME` | SMTP authentication username (optional) | `your-email@example.com` |\n| `OCTONOTIFY_SMTP_PASSWORD` | SMTP authentication password (required when `OCTONOTIFY_SMTP_USERNAME` is set) | App password for Gmail |\n| `OCTONOTIFY_FROM` | Sender email address | `Octonotify \u003cnoreply@example.com\u003e` |\n| `OCTONOTIFY_TO` | Recipient email addresses (comma-separated) | `user1@example.com,user2@example.com` |\n| `GITHUB_TOKEN` | GitHub token. In GitHub Actions, the workflow uses the default token (`github.token`) automatically. Set this secret only if you need a PAT (e.g., to monitor private repositories or increase rate limits). | `ghp_...` |\n\n#### Using Gmail\n\n1. Enable [2-Step Verification](https://myaccount.google.com/security) on your Google account\n2. Generate an [App Password](https://myaccount.google.com/apppasswords)\n3. Use the generated app password as `OCTONOTIFY_SMTP_PASSWORD`\n\n### 3. Create configuration file\n\nCopy `.octonotify/config.yml.example` to `.octonotify/config.yml` and configure the repositories and events you want to monitor.\n\n### 4. Enable GitHub Actions\n\nGo to the Actions tab in your forked repository and enable workflows if they are disabled.\n\n### 5. Enable the schedule\n\nThe scheduled trigger is commented out by default to avoid failures right after forking.\nAfter you finish setup (secrets and `.octonotify/config.yml`), uncomment the `schedule` block in `.github/workflows/octonotify.yml` to enable cron.\n\n### 6. Commit and push changes\n\n```bash\ngit add .octonotify/config.yml .github/workflows/octonotify.yml\ngit commit -m \"Configure Octonotify\"\ngit push\n```\n\n## Configuration Options\n\n### config.yml\n\n| Key | Required | Description | Default |\n|-----|----------|-------------|---------|\n| `timezone` | No | Timezone for email display (IANA format) | `UTC` |\n| `repos` | Yes | Repository monitoring configuration | - |\n\n### Event Types\n\n| Event | Description |\n|-------|-------------|\n| `release` | When a release is published |\n| `pull_request_created` | When a PR is created |\n| `pull_request_merged` | When a PR is merged |\n| `issue_created` | When an issue is created (excludes PRs) |\n\nFor concrete examples, see `.octonotify/config.yml.example`.\n\n## Operations\n\n### Execution Schedule\n\nBy default, the scheduled trigger (every 5 minutes) is commented out to prevent failures on new forks.\nOnce setup is complete, uncomment the `schedule` block in `.github/workflows/octonotify.yml` to enable the cron trigger.\n\n### Manual Execution\n\nOptional: You can manually trigger the workflow from the Actions tab using \"Run workflow\".\n\n### State File\n\n`.octonotify/state.json` stores the following information:\n\n- Last execution timestamp\n- Watermark for processed events per repository\n- Notified event IDs (for duplicate prevention)\n\nThe state file is automatically updated by Actions. Do not edit it manually.\n\nNote: The workflow commits and pushes `.octonotify/state.json` back to your fork to persist state between runs. If you have branch protection rules enabled, you may need to allow GitHub Actions to push to the branch or adjust the workflow/branch protection settings.\n\n### Rate Limiting\n\nIf the GitHub API rate limit is reached, processing will be interrupted but will resume from where it left off on the next run. The interruption position is saved in the state file.\n\n## License\n\nMIT License\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftnagatomi%2Foctonotify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftnagatomi%2Foctonotify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftnagatomi%2Foctonotify/lists"}