{"id":13907788,"url":"https://github.com/cn-kali-team/notion-rss","last_synced_at":"2025-07-24T16:40:57.861Z","repository":{"id":93747128,"uuid":"600442503","full_name":"cn-kali-team/notion-rss","owner":"cn-kali-team","description":"Build your own RSS Feeds in Notion.","archived":false,"fork":false,"pushed_at":"2025-02-01T07:11:30.000Z","size":945,"stargazers_count":78,"open_issues_count":19,"forks_count":4,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-09T18:16:39.371Z","etag":null,"topics":["feed","notion","rss"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/cn-kali-team.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":{"custom":["https://blog.kali-team.cn/donate"]}},"created_at":"2023-02-11T14:08:06.000Z","updated_at":"2025-04-08T10:37:09.000Z","dependencies_parsed_at":"2023-11-16T08:30:06.442Z","dependency_job_id":"8e0986b2-9c46-480e-b54c-47e8d95e6c82","html_url":"https://github.com/cn-kali-team/notion-rss","commit_stats":{"total_commits":47,"total_committers":2,"mean_commits":23.5,"dds":0.08510638297872342,"last_synced_commit":"c5183c68b8bf3a65ff20f38cc1ac0334d130b382"},"previous_names":[],"tags_count":18,"template":false,"template_full_name":"emo-crab/rust-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cn-kali-team%2Fnotion-rss","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cn-kali-team%2Fnotion-rss/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cn-kali-team%2Fnotion-rss/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cn-kali-team%2Fnotion-rss/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cn-kali-team","download_url":"https://codeload.github.com/cn-kali-team/notion-rss/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248085323,"owners_count":21045139,"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":["feed","notion","rss"],"created_at":"2024-08-06T23:02:10.528Z","updated_at":"2025-04-09T18:16:45.110Z","avatar_url":"https://github.com/cn-kali-team.png","language":"Rust","funding_links":["https://blog.kali-team.cn/donate"],"categories":["HarmonyOS"],"sub_categories":["Windows Manager"],"readme":"[中文简体](https://blog.kali-team.cn/Notion-Rss-af7ee0e285db424e8f8349df9a92291e)\n\n# NotionRss\n\nBuild your own RSS Feeds in [Notion](https://notion.so).\n\n```text\n███╗   ██╗ ██████╗ ████████╗██╗ ██████╗ ███╗   ██╗      ██████╗ ███████╗███████╗\n████╗  ██║██╔═══██╗╚══██╔══╝██║██╔═══██╗████╗  ██║      ██╔══██╗██╔════╝██╔════╝\n██╔██╗ ██║██║   ██║   ██║   ██║██║   ██║██╔██╗ ██║█████╗██████╔╝███████╗███████╗\n██║╚██╗██║██║   ██║   ██║   ██║██║   ██║██║╚██╗██║╚════╝██╔══██╗╚════██║╚════██║\n██║ ╚████║╚██████╔╝   ██║   ██║╚██████╔╝██║ ╚████║      ██║  ██║███████║███████║\n╚═╝  ╚═══╝ ╚═════╝    ╚═╝   ╚═╝ ╚═════╝ ╚═╝  ╚═══╝      ╚═╝  ╚═╝╚══════╝╚══════╝\n```\n\n---\n\n## Features\n\n- Manage your RSS sources in a separate Notion page\n- Enable/disable RSS sources\n- Custom settings proxy request, update interval\n- Automatically set icon and page title\n- Read feed with different views ( unread, read, as table)\n- Remove RSS items from Notion if are older than a given amount of time\n- Web services are updated regularly, and background services\n- Support [RssHub](https://docs.rsshub.app) browser plug-in add feed\n\n## Setup\n\n1. Create a new [Notion Integration](https://www.notion.so/my-integrations) and\n   copy the secret code which we'll use as `--notion-token` later.\n2. Duplicate the\n   [template](https://kali-team.notion.site/c7f65b5d5b33470484dcf43dd6db3350)\n   to your Notion.\n3. Open the template and click _Share \u003e Invite_ and search the Notion\n   integration you created in Step 1 and Click **Invite**.\n4. Click on _Sources_ page and do the same actions as in the previous step.\n5. Now you have the api token of notion, start with `secret_` a string,\n   it is used for the `--notion-token` parameter.\n\n   \u003e To find the source database ID, open the Source page. You'll get a URL\n   \u003e like this: https://www.notion.so/{database_id}?v={view_id}. To find the\n   \u003e archive database ID, open the main page of the template. Highlight the table\n   \u003e and click on \"dots\" button and select _Open as page_ option. Copy the\n   \u003e database ID from the URL in the same way you did for the source database\n   \u003e ID.\n   \u003e Example: my source-id: 8a49af585aa844208ee085b3814e1a0d\n   \u003e my archive-id: e8f7df1fe33242a88adad7bdd793cd1e\n\n- The application accepts the source database ID and archive database ID as parameters.\n\n```bash\n➜  notion-rss --notion-token secret_xxx --source-id 8a49af585aa844208ee085b3814e1a0d --archive-id e8f7df1fe33242a88adad7bdd793cd1e\n```\n\n## Usage\n\n```text\n➜ notion-rss --help\nUsage: notion-rss [--notion-token \u003cnotion-token\u003e] [--source-id \u003csource-id\u003e] [--archive-id \u003carchive-id\u003e] [-f \u003cfile\u003e] [-c \u003cconfig\u003e] [--proxy \u003cproxy\u003e] [--timeout \u003ctimeout\u003e] [--deleted] [--thread \u003cthread\u003e] [--webhook \u003cwebhook\u003e] [--api-server \u003capi-server\u003e] [--token \u003ctoken\u003e] [--daemon] [--cli]\n\nnotion-rss\n\nOptions:\n  --notion-token    the notion api token\n  --source-id       the source database id\n  --archive-id      the archive database id\n  -f, --file        add feed from url or file\n  -c, --config      read the config from the file\n  --proxy           proxy to use for requests\n                    (ex:[http(s)|socks5(h)]://host:port)\n  --timeout         set request timeout.\n  --deleted         deleted old archive\n  --thread          number of concurrent threads.\n  --webhook         send results to webhook server\n                    (ex:https://host:port/webhook)\n  --api-server      start a web API service (ex:127.0.0.1:8080)\n  --token           api Router authentication\n  --daemon          api background service\n  --cli             cli mode\n  --help            display usage information\n\n```\n\n## Example\n\n### Add feed from file\n\n- One feed link per line.\n\n```bash\n➜ cat /home/kali-team/feed.txt | head\nhttps://blog.kali-team.cn/index.xml\nhttps://www.exploit-db.com/rss.xml\n\n➜ notion-rss --notion-token secret_xxx --source-id 8a49af585aa844208ee085b3814e1a0d --archive-id e8f7df1fe33242a88adad7bdd793cd1e --file /home/kali-team/feed.txt\nUpdate succeeded:  [Title:三米前有蕉皮]  [Link:Some(\"https://blog.kali-team.cn/index.xml\")]  [Status:Done] \nUpdate succeeded:  [Title:exploit-db]  [Link:Some(\"https://www.exploit-db.com/rss.xml\")]  [Status:Done]\n```\n\n### Deleted old archive\n\n- Edit the `Deleted` properties of the Archive database.\n- Like: `dateBetween(now(), prop(\"Last Update\"), \"years\") \u003e= 3`, Filter those released three years ago.\n- `empty(prop(\"ForeignKey\"))`, Filter the Archive of the deleted feed.\n- Re-execute the deletion operation after changing the filter expression.\n- If there are a large number of archives, it is recommended to delete them manually, because the api has a rate limit.\n\n```bash\n➜  notion-rss --notion-token secret_xxx --source-id 8a49af585aa844208ee085b3814e1a0d --archive-id e8f7df1fe33242a88adad7bdd793cd1e --deleted\nDeleted succeeded: Hello World\nDeleted succeeded: Debugging\n```\n\n### Web Server\n\n- It is started as a service and will be updated regularly in the background.\n- Update every 4 hours.\n- And you can add feeds through the browser plug-in of RssHub.\n- To prevent CSRF attacks, you need to specify the `--token` parameter and set a token as a random route.\n\n```bash\n➜  notion-rss --notion-token secret_xxx --source-id 8a49af585aa844208ee085b3814e1a0d --archive-id e8f7df1fe33242a88adad7bdd793cd1e --api-server 127.0.0.1:8080 --token 21a2b7047d4de8076de462724daf8f8f\nCopy the URL to your RssHub browser plug-in configuration\nConfigure any of the following\n[Tiny Tiny RSS, Miniflux, FreshRSS, Nextcloud News, InoReader, FeedBin]\nAPI service has been started: http://127.0.0.1:8080/21a2b7047d4de8076de462724daf8f8f/\n```\n\n- Copy the `http://127.0.0.1:8080/21a2b7047d4de8076de462724daf8f8f/` and fill it in any one of the support list of\n  RssHub.\n- Click the browser plug-in to add a feed.\n- The page will close automatically after 5 seconds.\n\n### Specify profile\n\n- Save the command line configuration in the configuration file, and specify the configuration file path each time.\n\n```bash\n➜ notion-rss --config /home/kali-team/.config/notion-rss/config.yaml\n\n```\n\n- If the configuration is valid, it will be automatically saved to the configuration file.\n\n```yaml\nconfig:\n  notion_token: secret_xxx\n  source_id: 8a49af58-5aa8-4420-8ee0-85b3814e1a0d\n  archive_id: e8f7df1f-e332-42a8-8ada-d7bdd793cd1e\n  proxy: null\n  timeout: 15\n  thread: 5\n  webhook: null\n  api_server: 127.0.0.1:8080\n  token: 21a2b7047d4de8076de462724daf8f8f\n  daemon: false\n```\n\n## Cli Mode\n\n- Command line mode using the `--cli` parameter, The default is graphical interface.\n\n## Docker\n\n- [docker](https://hub.docker.com/r/kaliteam/notion-rss)\n\n```bash\ndocker run --rm -it \\\n--env NR_NOTION_TOKEN=secret_xxx \\\n--env NR_SOURCE_ID=8a49af58-5aa8-4420-8ee0-85b3814e1a0d \\\n--env NR_ARCHIVE_ID=e8f7df1f-e332-42a8-8ada-d7bdd793cd1e \\\n--env NR_API_SERVER=127.0.0.1:8080 \\\n--env NR_TOKEN=2a7b648abbc89a966d2b295f4d7780f4 \\\n--env NR_DAEMON=\"true\" \\\nkaliteam/notion-rss:latest\n```\n\n- use [docker-compose.yml](docker-compose.yml)\n- run `docker-compose up`\n\n```yaml\nversion: '3'\n\nservices:\n  notion-rss:\n    image: kaliteam/notion-rss:latest\n    ports:\n      - \"9527:9527\"\n    environment:\n      NR_NOTION_TOKEN: ${NR_NOTION_TOKEN}\n      NR_SOURCE_ID: ${NR_SOURCE_ID}\n      NR_ARCHIVE_ID: ${NR_ARCHIVE_ID}\n      NR_API_SERVER: ${NR_API_SERVER}\n      NR_TOKEN: ${NR_TOKEN}\n      NR_PROXY: ${NR_PROXY}\n      NR_DAEMON: ${NR_DAEMON}\n      NR_TIMEOUT: ${NR_TIMEOUT}\n      NR_HOUR: ${NR_HOUR}\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcn-kali-team%2Fnotion-rss","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcn-kali-team%2Fnotion-rss","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcn-kali-team%2Fnotion-rss/lists"}