很久之前,因受到 contributions 颜值吸引,仿照开源项目做了一个活动展示组件。后端直接用Google Calendar API,除了国内不能直连外都是优点💯:多端增删改查,安全稳定,有 api key(仅限查询)和 OAuth 两种鉴权方式,可用字段多,免费🤩。
然而热乎劲儿只持续了月余,反思一下,主要问题是手动录入太繁琐✍️,体验不好。比如刚在 B 站刷到了宝藏视频,我第一个想法是马上分享到社交媒体账号,而不是打开谷歌日历新增一条活动。另外,选择活动时间也让人既纠结又头疼🤯。
手头一堆账号都在活跃使用,也渐渐摸出自己的选择标准:
当然,最重要的分享内容还是会放到博客。至于朋友圈,那肯定发工作相关的了。
回归正题。首先准备一个 folo 账号,部署 RSShub,N8N 并能正常访问。RSShub 是因为有些网站需要指定 cookies 之类的环境变量,或者官方渠道不稳定。经过尝试,什么值得买、酷安、抖音和小红书最好用自己的实例。在 folo 中完成目标账号的订阅,确保能正常更新,顺便还可以发个动态认证订阅源。
接下来就是通过 N8N 把 folo、google 日历和 cloudflare worker 串联起来。参考官方文档,必要时借助Apifox调试接口。
folo 的设置比较简单,点侧栏头像👉自动化👉新规则。条件是所有需要聚合的订阅源所在的分类,动作是 n8n 的 webhook 地址。⚠️注意 1:payload 中的 feed title 还是平台提供的默认值,而非你自定义的订阅源名称。关于这个问题我也提交了 issue。⚠️注意 2:Webhook 需要填写 Production URL,而非 Test URL,后者只能手动接收一次网络请求。
n8n 这边略微复杂,因为源标题无法修改,需要加一层 Data transformation,并选择 Edit Fields。
|
接下来搜索并添加 google calendar 节点,选择 Create an event,去谷歌云后台根据引导配置好 credential。🚨这里有一个小坑,你需要在OAuth 权限请求页面
下的目标对象
中把你的谷歌账号添加到测试账户
列表中,否则在 n8n 发起认证请求时会弹出 403 错误:禁止访问:“xxxx.com”尚未完成 Google 验证流程。
填入各项,这里{{ $json.body.entry.publishedAt?.toDateTime() ?? $now }}
添加了一个$now
的 fallback 是为了方便用 apifox 手动发起无publishedAt
字段的请求。比如 linuxdo 这类反爬措施太强以至拿不到 rss 的站。持续时间设定为 15 分钟🕰️,当然也可以根据不同的源灵活设定。ColorId 纯粹为了在日历 app 中更好看一些,代码对应的🎨网上很好查。
CF worker 和博客前端都是之前做好的,完全兼容,一个括号都不用改。这里贴一下关键代码:
1 |
|
最后还是放个图吧,以备将来参考
就在整理社媒账号时,偶然发现饭否还活着,只是转变成封闭小圈子。正好作为我的私密树洞🌳,哈哈。