{"id":17617504,"url":"https://github.com/dlampsi/broadcaster","last_synced_at":"2026-01-02T13:09:07.325Z","repository":{"id":214058910,"uuid":"726738406","full_name":"dlampsi/broadcaster","owner":"dlampsi","description":"RSS feeds broadcast service (with translation)","archived":false,"fork":false,"pushed_at":"2024-09-01T06:30:42.000Z","size":222,"stargazers_count":2,"open_issues_count":8,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-25T10:13:37.280Z","etag":null,"topics":["broadcast","golang","rss","translate","translation"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dlampsi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"github":"dlampsi","buy_me_a_coffee":"dlampsi"}},"created_at":"2023-12-03T08:42:22.000Z","updated_at":"2024-06-03T18:43:42.000Z","dependencies_parsed_at":"2024-04-19T13:45:21.627Z","dependency_job_id":"694c7a60-8afc-416c-bbed-fcc4bcbe04e6","html_url":"https://github.com/dlampsi/broadcaster","commit_stats":null,"previous_names":["dlampsi/broadcaster"],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dlampsi%2Fbroadcaster","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dlampsi%2Fbroadcaster/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dlampsi%2Fbroadcaster/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dlampsi%2Fbroadcaster/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dlampsi","download_url":"https://codeload.github.com/dlampsi/broadcaster/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242685799,"owners_count":20169240,"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","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":["broadcast","golang","rss","translate","translation"],"created_at":"2024-10-22T19:14:13.281Z","updated_at":"2026-01-02T13:09:07.292Z","avatar_url":"https://github.com/dlampsi.png","language":"Go","funding_links":["https://github.com/sponsors/dlampsi","https://buymeacoffee.com/dlampsi"],"categories":[],"sub_categories":[],"readme":"# Broadcaster\n\n[![Image](https://github.com/dlampsi/broadcaster/actions/workflows/image.yml/badge.svg)](https://github.com/dlampsi/broadcaster/actions/workflows/image.yml)\n\nA service that processes RSS feed items (optionally translates) and sends them to customized destinations (eg Slack or Telegam).\n\n## Usage\n\n```bash\n# Show help\n$ broadcaster --help\n\n# Run application as a service\n$ broadcaster server\n```\n\n\u003c!-- ------------------------------------------------------------------------------------------ --\u003e\n## Translation services\n\nBroadcaster supports the following translation services:\n\n- **Google Translate API** (default) - Free to use. No additional settings are required.\n- **Google Cloud Translate** - You will need to create (or already have) a Google Cloud account and a Project to use the Translatoin API. Google Cloud has a free tier for the translation service.\n\n\u003c!-- ------------------------------------------------------------------------------------------ --\u003e\n## Notifications\n\nAt this moment, Broadcaster supports sending notifications to [Slack](https://slack.com/) and [Telegram](https://telegram.org/).\n\nTo enable a notifier you should specify [corresponding](#environment-variables) token env variables and add config to the `notify` section of the feed configuration.\n\n## Configuration\n\n### Environment variables\n\nAvailable environment variables for service run type:\n\n| Name | Description | Default value |\n| ---- | ----------- | ------------- |\n| `BCTR_ENV` | Environment name / id. Mostly used for observability attributes. | `local` |\n| `BCTR_LOG_LEVEL` | Application logging level. | `info` |\n| `BCTR_LOG_FORMAT` | Logging format. Options: `json`, `pretty`, `pretty_color`, `do_app` | `pretty_color` |\n| `BCTR_BOOTSTRAP_FILE` | Bootstrap config file path in uri format. See more in [Bootstrap](#bootstrap). | |\n| `BCTR_TRANSLATOR_TYPE` | Translation service type to use. Options: `google_api`, `google_cloud`  | `google_api` |\n| `BCTR_CHECK_INTERVAL` | Feeds fetch interval in seconds. | `300` |\n| `BCTR_BACKFILL_HOURS` | How many hours back to process feeds items. For debugging purposes. | `0` |\n| `BCTR_STATE_TTL` | Application state TTL in seconds. | `86400` (24h) |\n| `BCTR_MUTE_NOTIFICATIONS` | Disable sent notification to destinations. For debugging purposes. | `false` |\n| `BCTR_TELEGRAM_BOT_TOKEN` | Telegram bot token.\u003cbr\u003eTo send notifications to Telegram, you will need to create a [bot](https://core.telegram.org/bots/tutorial) and such a token. |  |\n| `BCTR_SLACK_API_TOKEN` | Slack bot API token.\u003cbr\u003eTo send notifications to Slack, you will need to create an [application](https://api.slack.com/start/quickstart) and such a token. |  |\n\n#### Google Cloud Translation API\n\nIf you plan to use Google Cloud Translate, you will need the following env variables:\n\n| Name | Description |\n| ---- | ----------- |\n| `BCTR_GOOGLE_CLOUD_PROJECT_ID` | Google Cloud Project ID. |\n| `BCTR_GOOGLE_CLOUD_CREDS` | Google Cloud [application credentials](https://cloud.google.com/docs/authentication/provide-credentials-adc) string. Basically it should be conten of the credentials json file. \u003cbr\u003e You can use `GOOGLE_APPLICATION_CREDENTIALS` env to specify path to credentials file.|\n\n### Bootstrap\n\nInitial bootstrap configuration can be provided via `BCTR_BOOTSTRAP_FILE` environment variable. In that case service will upload specified feeds configurations from the provided config file.\n\nSupported bootstap config sources and formats:\n\n```bash\n# Local filesystem\nBCTR_BOOTSTRAP_FILE=\"file:///path/to/config.yml\"\n# Google Cloud Storage\nBCTR_BOOTSTRAP_FILE=\"gs://bucket/path/to/config.yml\"\n# DigitalOcean Spaces *\nBCTR_BOOTSTRAP_FILE=\"do://bucket/path/to/config.yml\"\n```\n\nConfig file format and example:\n\n```yaml\nfeeds:\n  - source: Dummy website\n    category: Latest\n    url: https://dummyfeed.com/rss\n    language: fi\n    notifications:\n      - type: slack\n        to: [\"#general\"]\n      - type: telegram\n        to: [\"-1234567890\",\"-1234567891\"]\n        translate:\n          to: en\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdlampsi%2Fbroadcaster","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdlampsi%2Fbroadcaster","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdlampsi%2Fbroadcaster/lists"}