Subscribe to rss feeds from anywhere, receive notifications from anywhere.

Overview

INK RSS

管理订阅,接收通知

示例网页 · 示例群组 · 报告Bug

介绍

INK RSS 提供及时且多样的 rss 通知服务,借助现有的接口你可以在任意位置订阅,并使用任意方式接收通知,并且所有服务均开源且免费。

已包含的订阅方式: 网页,telegram bot

已实现的通知方式:telegram(支持instant view),bark,微信

⚠️ 注意:由于测试有限,无法发现所有问题,当前无法保证项目的高可用性。如果部署的早期代码出现异常,请在网页删除worker和KV并部署最新版本。

特点

🎊 免费 - 整个应用部署在 cloudflare workers(包括前后端,机器人)

⚡️ 即时 - 最短一分钟进行一次监测。

♻️ 省心 - serverless,无需管理服务器和数据库。

🎨 定制 - 多种订阅和通知方式,包括不限于 telegram,bark,微信

项目背景

部分 rss 提供者并没有提供全文输出,在阅读器订阅此类信息体验并不完整。随着 rsshub 的出现,更多种的信息可以被订阅。这些源或许更适合被动接收更新。

大部分阅读器并不提供通知功能,因为这需要后端定时去获取,inoreader 等功能强大的软件提供此服务,但即使每月支出$6.99,也只有 60 分钟的刷新周期保证。IFTTT 是个好选择,但它无法保证延迟并且在去年(2020)只对免费用户提供三个 Applet。

telegram 有不少开源的机器人,使用公益公开的机器人,隐私安全是一小方面,telegram 对机器人发送信息频率有限制,一个服务器往往也不能保证所有人的订阅即时更新,也无法保证稳定性。自行部署可以解决以上问题但服务器和数据库的支出和维护也不是小问题,通知方式和订阅方式也局限于 telegram。

TODO

  • 关键词过滤

  • 翻译功能

  • 多语言支持

注意事项

  1. 对于所有项目都可以使用网页进行订阅

    screen
  2. 使用 telegram 不仅可以使用网页,还包含借助 telegraph 提供的即时预览功能(instant view)以及一个提供增删查功能的机器人。部署后访问

    https://api.telegram.org/bot<your token>/setwebhook?url=https://example.com/secret_path
    

    即可开始使用 bot 进行订阅,注意替换 token 以及 url

  3. 连续更新 15 次失败后将会收到错误通知,并将暂时关闭此订阅源更新,如确认订阅源无误,可自行在网页中开启更新。如无法确保订阅源的高可用性,也可在配置中调高此数值。

  4. 由于 workers 的限制,无法自行解析 xml,需要配置 PARSE_URL 用于提供解析功能,可以点击以下按钮自行部署,或者适量使用我已部署的 https://inkrssparse.vercel.app

Deploy with Vercel

  1. 需要配置 SECRET_PATH,网页将部署在https://inkrss.example.workers.dev/secret_path 请仅使用大小写字母和数字进行编写。

部署

本项目不依赖于本地环境,但需要在本地进行打包和上传,推荐使用 mac os 系统或者 linux 系统进行以下操作。

  • 前期准备
  1. 官网注册 cloudflare 账号,验证邮箱后找到 workers 界面,选择一个子域如 inkrss.workers.dev 即可。

  2. 畅通无阻的网络。

  3. 安装 wrangler

    推荐根据官方文档进行安装,以避免不确定的问题。

    nodejs 官网安装 nodejs(选择长期支持版即可)安装后运行

    npm i @cloudflare/wrangler -g

    如果在命令行输入以下命令成功输出版本号,即安装成功。

    wrangler -V
    
  4. wrangler 登录

    wrangler login
    

    在一般情况下,会打开浏览器申请授权,授权后即成功登陆,可以跳转到下一步。但有些情况 wrangler 会收不到返回的 token,此时应使用另一种方式登陆.

    api tokens 界面 找到创建令牌,选择编辑 cloudflare workers 模版,账户资源选择所有账户,区域资源选择所有区域其他默认即可点击确定并复制 api token。

    wrangler config

    login

  • 开始部署
  1. 克隆本项目并解压,在文件夹目录打开命令行(windows 用户可直接在资源管理器输入 cmd 并回车)

    wrangler kv:namespace create "KV"
    

    根据提示将输出的内容粘贴在 wrangler.toml 文件中 kv_namespaces 位置。

  2. 配置

    在 cloudflare 网页找到自己的 account id,粘贴在 wrangler.toml 的对应位置。

    api screenshot

    选择你的通知方式,出于覆盖性考虑目前支持以下方式,将支持 Slack,Discord,钉钉等其他通知方式。

    • telegram(包括即时预览和机器人订阅,功能丰富,受限于网络)
    • bark(部署最便捷,受限于平台)
    • wechat(部署较麻烦,仅支持纯文本,适用性广)

    首先在 config.js 中修改 mode 为你想要的通知方式,然后在 config 文件夹的指定文件夹中根据 readme 配置变量。

  3. 发布

    wrangler publish
    

    publish

    wrangler 会自动安装相应的依赖,进行打包和上传,并返回一个部署好的 url,之后就可以立即在https://ink-rss.xxx.workers.dev/secret_path 访问到前端进行订阅.但由于cloudflare的一些延迟,定时计划可能在半小时后才会开始运行

额外附赠

  • IOS 桌面小插件

    screenshot

    默认部署后的 url 很长,使用此小部件可以一键跳转,并展示基本信息。

  • 功能丰富的telegram bot(还没有做完)

    cloudflare workers开发机器人只能使用过时的框架并且开发体验较差。目前仅支持四个命令/list /sub /unsub /unsuball

    具有完整功能以及行内键盘支持的机器人将部署在其他无服务器平台

使用建议

  • 由于对 cpu 时间的限制,cloudflare worker 会分批进行监测,如果订阅数过多,或者希望多渠道接收消息,只需要在 wrangler.toml 中修改名称重新部署即可部署多个 worker。
  • 频繁的通知提醒会打扰到正常的生活,建议适量订阅。
  • 建议和阅读器结合使用。

调查

此开源方案在功能上解决了问题,但多人订阅相同源,必然会造成带宽的浪费并对源站造成压力。如 websub(原 pubsubhubbub)这样的方案我认为太过理想,大部分已使用的协议很难发生变化,我认为存在更合适的过渡方案,请协助填写此问卷帮助我了解 RSS 用户。

贡献

本项目仍在起步阶段,无论是机器人,前端后端的交互,还是 worker 的逻辑和功能都可能有所缺陷,任何贡献都将起到帮助。

作者

21 岁,是学生。

@pureink

协议

The MIT License.

Comments
  • > 如果还有问题随时提issue就好。

    > 如果还有问题随时提issue就好。

    如果还有问题随时提issue就好。

    很抱歉我又打开这条 issues 了 关于部署之后我已设置 webhook,机器人也回复了一句 “请输入格式正确的订阅源”

    image

    随后在机器人发送那些指令却没有响应

    image

    而网页是可以正常订阅

    image

    Originally posted by @sudojia in https://github.com/pureink/inkrss/issues/2#issuecomment-888090699

    opened by sudojia 10
  • 部分 RSS 没有 pubDate 属性.

    部分 RSS 没有 pubDate 属性.

    部分 RSS 源没有 pubDate 属性, 例如 RSS HUB 里爬取一些网站信息, 生成的 RSS 一般没有 pubDate 字段.

    另外一种情况就是博客, 有许多博客的时间信息为 published 字段, 例如 https://orangex4.cool/atom.xml.

    希望能够加强对这些不太规范的 RSS 的处理.

    opened by OrangeX4 8
  • 大部分wordpress站点的订阅源文本不规范导致订阅报错

    大部分wordpress站点的订阅源文本不规范导致订阅报错

    挖站否-挖掘建站的乐趣 连续多次失败,将暂停更新,请检查订阅源是否正常。 小俊博客 - 一个从小对网络感兴趣的男孩子 连续多次失败,将暂停更新,请检查订阅源是否正常。 例如这两个: https://wzfou.com/feed/ https://www.xjisme.com/feed 请问有什么办法强制拉取更新吗?

    opened by caonimarss 5
  • [CANCELLED] 改进 schedule.js 逻辑等等

    [CANCELLED] 改进 schedule.js 逻辑等等

    • 修改 config.js 中全局变量赋值,声明 self scope,并提供默认值。这样便可以在 wrangler.toml 中自定义并省略可选值。
    • 增加若干变量,具体可见 wrangler.example.toml 中注释
    • 增加 webpack.config.dev.js,关闭 minify,方便在 Cloudflare Editor 中修改调试
    • ~identify() 改进~ WIP
    • ~schedule.js 中逻辑改进~ WIP
    opened by dearrrfish 4
  • 收到一份邮件后,机器人就不再更新了

    收到一份邮件后,机器人就不再更新了

    您好: 您的請求數已達 50%,即將接近 Cloudflare Workers KV 免費等級的其中一項每日作業數上限。您可以在儀表板中查看 完整的使用資訊。 如果您沒有採取任何動作且超過每日上限,則 Workers KV API 將傳回 429 錯誤,且 Worker 內的作業將 失敗,直到上限於 2021-09-10 at 00:00:00 UTC 重設為止。 机器人指令还是正常,网页也能正常打开 就是没有更新了

    opened by huoshenw 3
  • 完善微信推送功能: 添加内容的推送以及转义字符处理.

    完善微信推送功能: 添加内容的推送以及转义字符处理.

    微信推送部分的代码写得比较简陋, 也许可以更新一下.

    原来的代码是:

    await fetch(`${config.WECHAT_URL}&msg_type=text&msg=${feed.title}\n${item.title}\n${item.link}`)
    

    只有标题和链接 没有内容 item.contentSnippet.

    并且存在 bug: 标题中可能存在需要转义的字符, 如 &. 如果有一个标题中含有 & 就会被中途截断. 推荐使用 encodeURI(text) 函数进行转义处理.

    我修改之后的代码为:

    if (item.contentSnippet) {
        await fetch(`${config.WECHAT_URL}&msg_type=text&msg=${encodeURI(feed.title)}\n---------------------------------------\n${encodeURI(item.title)}\n\n${encodeURI(item.contentSnippet)}\n\nLink: ${encodeURI(item.link)}`);
    } else {
        await fetch(`${config.WECHAT_URL}&msg_type=text&msg=${encodeURI(feed.title)}\n---------------------------------------\n${encodeURI(item.title)}\n\nLink: ${encodeURI(item.link)}`);
    }
    

    这段代码也许有一定的参考意义. 没有提 PR 是因为我不清楚这种格式以及处理的方法是否能被接受, 具体的代码修改还是作者来修改比较好.

    opened by OrangeX4 2
  • 运行一段时间后,提示这个错误。麻烦帮忙定位一下是哪里出错了。

    运行一段时间后,提示这个错误。麻烦帮忙定位一下是哪里出错了。

    "outcome": "exception", "scriptName": null, "exceptions": [ { "name": "Error", "message": "Network connection lost.", "timestamp": 1631248888441 } ], "logs": [ { "message": [ "error over max start notify" ], "level": "log", "timestamp": 1631248842438 } ], "eventTimestamp": 1631248796071, "event": { "cron": "*/1 * * * *", "scheduledTime": 1631248795000 }, "id": 20 }

    opened by kugooer 2
  • Bump minimist from 1.2.5 to 1.2.6

    Bump minimist from 1.2.5 to 1.2.6

    Bumps minimist from 1.2.5 to 1.2.6.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • 移动变量配置到 wrangler.toml,并添加多环境配置说明

    移动变量配置到 wrangler.toml,并添加多环境配置说明

    1. 移动变量配置定义位置,从 config.json 到使用 wrangler.toml 的 [vars] 环境变量,并可以进一步使用 secret 来保护保护隐私变量。(ref:https://developers.cloudflare.com/workers/platform/environment-variables#adding-secrets-via-wrangler)
    2. 多环境配置范例
    opened by dearrrfish 0
  • Cloudflare 不支持通过 IP 地址直接访问 RSS.

    Cloudflare 不支持通过 IP 地址直接访问 RSS.

    我自建了一个 RSS HUB 服务在自己的服务器, 但是没有绑定域名.

    订阅这些链接将会报错, 错误详情可以看这里 https://stackoverflow.com/questions/18631488/what-does-http-response-code-1003-means/45611975.

    我的解决方法是通过 vercel 增加一个转发的功能, 避开直接用 IP 地址访问.

    opened by OrangeX4 2
Releases(v0.3.0)
Owner
null
Feeds is a simple Revolt bot that delivers RSS feeds to your channels.

Feeds Feeds is a simple Revolt bot that delivers RSS feeds to your text channels. You can invite it here. Feeds are refreshed once per minute, and if

Jan 3 Dec 5, 2022
GitHub Advisory Database RSS Feeds.

github-advisory-database-rss RSS Feeds for GitHub Advisory Database. Usage Visit https://azu.github.io/github-advisory-database-rss/ Subscribe RSS Fee

azu 7 Aug 10, 2022
A small library for turning RSS XML feeds into JavaScript objects

rss-parser A small library for turning RSS XML feeds into JavaScript objects. Installation npm install --save rss-parser Usage You can parse RSS from

Robert Brennan 1.1k Dec 31, 2022
Project to manage multiple emails at once with lots of customization. You can send and receive emails. Desktop notifications can be modified.

Technologies Used React Redux Tailwind CSS Features Admin dashboard User settings and or user dashboard send emails recive emails Connections through

Multi Email 9 Dec 17, 2022
This is a bot for Telegram that can be used to receive webhook notifications from Gitlab. It is built with the Next.js API.

Telegram Bot for Gitlab Webhook ?? Note This project is still in development. Just relax ?? This is a bot for Telegram that can be used to receive web

M. Zakiyuddin Munziri 2 Oct 22, 2022
Receive crypto payments from anywhere around the world, options including native tokens (MATIC, ETHER,BUSD), Tokens (USDT,BUSD), NFTs and more.

Receive payments for service rendered in crypto using different options. Go borderless with bonpay, gain access to varities of crypto assets, safe and

Johnson awah Alfred 6 Nov 11, 2022
New base script bot wa by Ramdani Official, don't forget to subscribe youtube Ramdani Official.

Requirements • Installation • Thanks to • Official Group Bot • Donate Information bahasa Indonesia Ramdani Botz V17 adalah bot yang di ciptakan oleh R

Ramdani Official 22 Nov 1, 2022
Subscribe My YT And Give Star This Repo ⭐

Hyzer Official Chat Saya Jika Ingin Menanyakan Sesuatu Ambil Session Disini Buka Linknya Disini Untuk Tutorialnya Liat Dan Subscribe Here Preview bot

Hyzer Official 54 Dec 23, 2022
A light microservice serving Atom 1.0 Feeds for MusicThread threads

MusicThread Web Feeds A light microservice to serve Atom 1.0 Feeds for MusicThread. People use web feeds for following updates to specific threads via

Brushed Type 4 Jun 15, 2022
Decentralised Oracle Network for Subjective Data Feeds (testnet).

deOracle.xyz deOracle.xyz is a decentralised P2P oracle platform with a cross-chain reputation system for digital identities. Our goal is to bring rel

DeOracle.xyz 2 Oct 28, 2022
rss github discussions api

rgd RSS - GitHub Discussions API npm install -g rgd # or npm install -D rgd Usage: rgd Options: --owner --repo --token: generate token -> http

Len C... 6 Jul 11, 2022
免费的公众号 RSS

Feeddd 免费的公众号 RSS ?? 订阅源列表 列表每天会自动更新。 文件 描述 下载 feeds_all_rss RSS 格式 链接 / CDN feeds_all_atom ATOM 格式 链接 / CDN feeds_all_json JSON Feed 格式 链接 / CDN ?? 如

feeddd 1.2k Jan 1, 2023
Twitter RSS (.xml) Feed Scraper Without Developer Authentication

Twitter RSS Feed Scraper Without Authentication Command-line application using Node.js that scrapes XML feeds from Nitter, the free and open source al

Jason Vu 4 Jun 15, 2022
RSS/Atom data source plugin for @grafana.

RSS/Atom data source plugin for Grafana Introduction The RSS/Atom data source is a plugin for Grafana that retrieves RSS/Atom feeds and allows to visu

Volkov Labs 9 Jan 2, 2023
This branch is created to make receive and send data to api using async and await methods

Microverse-Leader-Board Project from module 2 week 4 This branch is created to make receive and send data to api using async and await methods Screens

Akshitha Reddy 6 Apr 22, 2022
Front-end for FireNearby service. View recent fires and sign up to receive alerts: caseymm.github.io/fire-nearby

fire-nearby (firenearby service front-end) This application is composed of three pages: Map of recent fires Sign up form to receive alerts About this

Casey Miller 4 Mar 30, 2022
The leaderboard website displays scores submitted by different players. It also allows you to send and receive data from API. Build with JavaScript, CSS and HTML.

Leadboard The leaderboard website displays scores submitted by different players. It also allows you to submit your score. All data is preserved using

Fatima Ezzahra elmenoun 4 Jan 31, 2022
mior - Merge into one RSS

mior Merge into one RSS mior is a lightweight web service to filter and merge multiple RSS feeds into one. It provides a pure web-based, responsive us

Eric Fu 29 Nov 6, 2022
Receive confessions and messages anonymously! (Under development)

About ⚠️ This project is under heavy development! ⚠️ umamin is an ad-free and open-source platform for sending and receiving anonymous confessions! Ea

Josh Daniel 65 Dec 11, 2022