搞了个乌龙 🤷。

很早的时候,在开始开发 Quail 之前,因为要像 substack 和 X 那样给作者分钱嘛,我就针对 Stripe Connect 的模式问过 Stripe 的客户支持。我问他们,如果公司在日本的话,能不能关联上在日本以外的 Express 账户。

当时他是这样回复的:

this doesn’t support cross border interaction for Japanese Stripe accounts as of now

由于当时我还问了一堆其他问题,他的这个答复夹在一堆问题的答复里。于是,我当时鬼使神差地把这件事记错了。所以,虽然现在 Quail 已经完成了 Stripe Connect 的支持,但因为使用的 Stripe 帐号背后是日本实体,并不能给海外作者分钱。

对此其实官方文档有说明

Cross-border payouts enable platforms in the US to pay out to Express and Custom connected accounts ...
...
The platform must be in the US.

可能当时我没搞清楚 Connect 的运作方式,所以没留意到这个文档。

总之,如果我想用 Stripe Connect 给非日本作者分钱的话,得用一个美国公司来做这件事。

进一步优化 SEO

为了提升搜索引擎的索引效率,这次给所有的 List 添加了 sitemap。例如,官方博客的 Sitemap 就是 https://quail.ink/blog/sitemap_index.xml

不过并不打算把所有 Sitemap 都提交给搜索引擎。因为如果这样做的话,如果其中有低评分内容,会降低 quail.ink 域名的整体评分。

所以需要一个准入机制,只有被认为有质量的 sitemap 会提交到搜索引擎。当然,这是对 Quail.ink 这个在线服务而言,需要做这种防滥用的措施。如果是自己部署 Quail 实例的话,也就没必要了。

为开源做重构和拆分

既然谈到自己部署 Quail 实例,那也顺便说说开源的进展。这周末几乎所有的时间,都在重构现在的业务代码,主要目的是把「服务」相关的代码从核心代码中移走。

所谓「服务」相关的代码,就是运作 Quail.ink 这一服务所需的功能和设施,例如:多地区支付、内容运营、服务管理、财务和税务等等。当时为了简单起见,这些代码直接写在了核心服务里面。但对于自托管的朋友来说,是不必要的,所以要从核心中移除。

这次重构和拆分规模挺大,前后端、API、SDK 都涉及。不过我基本弄完了。

接下来,距离核心服务开源还差下面几个工作:

  • 让核心服务直接托管静态资源
    目前的静态资源被分为三部分,分别是一套给静态页使用的前端脚本和两个 SPA,都部署在 CDN 上。
    个人自托管的话,大多数情况下其实只需要让核心服务去托管静态资源,然后在前面放一层 CDN 即可(不放可能也可以),不需要像我这么复杂。
  • 让核心服务能处理路由请求
    目前发往 Quail 的非 API 请求都通过一个 Cloudflare worker 来做 routing。但是自托管版本不能硬性依赖 Cloudflare,所以需要对所有请求都处理路由。
  • 清理比较重要的 @TODO
    目前代码中大概有二三十个比较肮脏的 @TODO,得先处理掉。
  • 写个安装和部署脚本
    因为我不会用 docker,所以打算写个 bash 脚本来做安装和部署。

修复问题

Discord 计数错误

这个问题持续有一段时间了,有时候 Discord 服务器里的在线人数会显示为 undefined。这是因为之前直接用 Cloudflare worker 转发对 Discord 的请求,但最近流量上来以后,经常遇到 Rate limit。于是我加了一个缓存,修复这个问题。

An image to describe post

现在的计数不会再报错了

编辑页面显示了不属于自己的文章

具体来说,就是在编辑文章界面输入别人的公开文章的 ID,就可以看到编辑器里出现别人的文章内容。

但这个 bug 并没有安全问题,只是把公开内容显示在了编辑器里。但看上去就非常怪。所以前端检查一下这种情况,不再显示编辑界面。


这周的情况就是这样!