前言
你好,我是小柒。
Java 程序员,热衷自动化。
前段时间花了 5 天左右,借助 Notion + CloudFlare + Github Actions 零成本搭建了一个支持一键分销的小报童排行榜: https://xiaobot.osguider.com。在这里复盘一下过程,希望能够对你有所启发。
善用 MVP 思维,用最小的成本最快地实现最核心的功能,尽早触达用户,尽早获取反馈,不断迭代,不断升级。
什么是小报童排行榜?
小报童排行榜是一个罗列了(几乎)所有小报童专栏的导航网页。可以帮助你一键分销所有小报童专栏。
为什么要做小报童排行榜?
- 主要是因为小报童官方没有公开的专栏索引列表,但这个痛点确实是在的。既然有需求未被实现,机会不就来了?
- 实现足够简单,成本足够低,做这个游刃有余。
- 折腾副业,没自己的产品始终感觉没底气。所以,小报童排行榜可以是我的产品支撑,也可以是我向外链接的突破口。
- 能给我带来收益:哪怕是最基础的小报童分销,也能带来一些收益。且不说后面依据这个产品的放大升级。
小报童排行榜给我带来了什么?
- 我能做成一件事的信心
- 和我一起做事的朋友
- 借助小报童排行榜,链接到了更多朋友
- 副业生态的起点
- 一点点小钱
一些有趣的统计数据
- 迄今为止我收录了 308 位作者的 403 个小报童专栏。其中:
- 有 26 位作者的 38 个专栏订阅数量超过 3000,占比 9%。只要订阅数量超过 3000 就能跻身前 10%。
- 有 50 位作者的 72 个专栏订阅数量在 1000 和 3000 之间,占比 18%。只要订阅数量超过 1000 就能跻身前 30%。
- 有 97 位作者的 105 个专栏超过 1 年没有更新,算是已完结的状态。有人入场,有人离场。机会、永远都在那里等你,剩下的、就是你能否主动抓住它了。
- 15 亿国人,你的竞争对手只有 308 位。其实只要开始,就已经是成功了。
- 有很多数据不太好看的专栏(订阅数量为 0),其中绝大部分是订阅制而非买断式。因为小报童展示的订阅数=当前仍在订阅状态的用户数,当用户订阅到期不再续订时,这个数量就会减少。所以单从数据好看的角度考虑,买断式的专栏会更好一点。
- 上线至今,小报童排行榜分销佣金收入 371.61 元,给朋友们定制一键分销系统(扣除返现后)收入 210 元。对于在互联网上流浪多年的我和 Huazi,这个正反馈极佳。
我把手上已有的小报童专栏排名数据整理成了一个 Excel 表格,如果你想要自己做一些数据分析,可以通过 osguider
微信我领取。
搭建一个小报童排行榜,可以有多简单?
按照我以往程序员的思维,如果想要做一个小报童排行榜,至少要经历以下步骤:
- 需求分析
- 概要设计
- 数据库设计
- 爬虫&业务代码编写
- 前端代码编写
- 部署上线
带着完美主义的思维,最后可能是因为设计配色不满意、可能是因为前端代码没写好,也可能是爬虫做不出来……从而不了了之,前功尽弃。
这件事情,真的需要这么复杂吗?
需求分析
需求分析需要考虑两个层面:我想做什么?我能做什么?其中:
我想做的事情很简单:把所有小报童专栏汇聚到一个网页,供用户查阅和订阅。
我能做什么主要取决于我能从小报童官方拿到什么样的信息。经过简单的分析,我可以从小报童官方获取到以下信息:
- 专栏名称
- 专栏作者
- 专栏介绍
- 专栏订阅数量
- 专栏内容数量
- 专栏价格
- 专栏分销比例
- 专栏分销链接
- 专栏创建时间
- 专栏更新时间
小报童排行榜的核心功能是列举出所有的小报童专栏信息,Notion 数据库可以完美实现这个功能!说干就干!
数据库搭建
按照可以从小报童官方获取到的信息搭建 Notion 数据库,这个过程就像是给 Excel 添加多个列字段,非常简单。
这里不再赘述 Notion 的使用,如果你对 Notion 感兴趣,可以通过这几个链接学习。中文用户指南 | Notion Academy | Notion Help Center
一条 Notion 数据库记录长这个样子:
汇总的列表长这个样子:
Notion 极其强大!支持任意的页面嵌套,支持把任意页面发布为公网可以访问的网页,甚至可以给同一个数据库定制不同的视图!
那么依据这个功能,我们实际上已经完成了最简单的 MVP:手动收集小报童专栏信息,并通过 Notion 展示。
小报童排行榜的第一个 MVP 长这个样子:
数据爬取
作为一个程序员、作为一名 RPA 教练,手动录数据多少有点说不过去了吧?
我们来看几个小报童专栏分销链接:
- 生财有术项目精选:https://xiaobot.net/p/shengcaiyoushu?refer=6f4ecc2b-70e9-4f58-82de-71e5b1f357ee
- IP合伙人·八年成事(百问百答):https://xiaobot.net/p/IP10?refer=6f4ecc2b-70e9-4f58-82de-71e5b1f357ee
稍加比较就能发现,分销链接由以下几个部分组成:
- 域名:
https://xiaobot.net/
- 小报童专栏 ID:
shengcaiyoushu
/IP10
- 分销标识:
refer=6f4ecc2b-70e9-4f58-82de-71e5b1f357ee
其中:域名是不变的,分销标识只跟发起分销的用户有关系,所以在收集专栏信息的时候,我们只需要收集小报童专栏 ID 即可。这一个步骤,现在确实是手动收集和录入的。
但在这之后,我们可以通过拼接域名和小报童专栏 ID 得到指定小报童专栏的页面地址。访问专栏页面,可以获取到我们需要的几乎所有信息,通过 RPA/写代码 手段轻松获取(这里我的方案是通过 CloudFlare Workers 调用小报童接口获取数据,再使用 Notion API 写入数据库)。
请适当控制 RPA 运行频率,保护服务器负载。
到这里,内容的自动爬取和更新也搞定了。
页面编写 & 自动发布
Notion 也有缺点。毕竟是海外的产品,国内访问速度非常不稳定,根据我自己的测试,Notion Site 在极端情况下需要 10-20 秒才能加载出来,这个速度用户肯定是无法忍受的。在我的认知体系内,写一个静态页面是比较好的解决方案。
在看过我自己写的丑得不能再丑的 HTML Table 之后,我的设计师伙伴 @Huazi 终于还是忍不住亲自上场了。他负责页面样式,我负责内容填充,完美配合。
技术选型大概是这样的:
- 页面样式:HTML + CSS + JavaScript + Tailwind CSS
- 内容渲染:通过 JavaScript 脚本调用 Notion API 获取数据,再使用 eleventy 把数据渲染到 HTML。
- 自动化:通过 Github Actions 每天定时执行内容渲染逻辑,然后自动发布网页到服务器。
至此,第二版小报童排行榜问世:小报童排行榜。
赋能
前面的小报童排行榜只能帮助我自己分销所有小报童专栏,分销佣金也只能我自己拿,怎么让别人愿意帮我推广小报童排行榜呢?最简单的方法当然是让利!
通过给别人定制一键分销网页,页面里所有小报童专栏全部改成别人的分销链接。这样别人也可以通过自己的一键分销网页分销小报童专栏获取收益,我收取一定的技术维护费用,各取所需,各享其利。
实现也很简单,增加一个 Notion 数据库记录分销商信息:
通过 Cloudflare Workers 读取 Notion 分销商数据库信息,然后通过 eleventy 渲染子页面并发布即可。这里有几个一键分销页面,可供参考:
- https://xiaobot.osguider.com/osguider/
- https://xiaobot.osguider.com/HeyHuazi/
- https://xiaobot.osguider.com/76718400/
- https://xiaobot.osguider.com/whyvincent/
- https://xiaobot.osguider.com/Help000000/
- https://xiaobot.osguider.com/fxm99960/
- https://xiaobot.osguider.com/LSL021102/
- https://xiaobot.osguider.com/yzhm111/
- https://xiaobot.osguider.com/baojie_xmg/
- https://xiaobot.osguider.com/liuliuzaish/
- https://xiaobot.osguider.com/yi25390/
- https://xiaobot.osguider.com/HX1747023971/
- https://xiaobot.osguider.com/595683079/
- https://xiaobot.osguider.com/1738407610/
未来的计划
- 表单提交自动收录:小报童专栏作者填写金数据表单,cloudflare workers 自动爬取专栏信息并收录到 Notion 数据库。
- 表单提交自动生成一键分销链接:想要构建一键分销系统的朋友填写金数据表单,cloudflare workers 自动构建一键分销页面。
- 知识星球绑定销售:做一个知识星球强化个人 IP,小报童排行榜作为赠品而不是单独销售。这样可以把认可产品的朋友带入到我的 IP 圈,逐渐影响,让他们认可我这个人,进而创造更多合作的机会。
后话
当然,现在的小报童排行榜并不完美。
比如现在还不支持分页,比如现在只能用 Ctrl + F
做检索,比如不支持用户自定义要分销的专栏列表。
如果你也觉得有些不爽的地方,欢迎找我聊聊,万分感激。
致谢
感谢我的队友 @Huazi,没有他,小报童排行榜不会如此美观,不会如此受人欢迎。
关于我
重新认识一下。
你好,我是小柒,微信 osguider
。
Java 程序员,热衷自动化。生财有术 RPA 航海教练(23 年 12 月)。
小报童排行榜 作者,支持一键分销所有小报童专栏,也可以给你定制专属分销链接,欢迎体验。
开源服务指南主理人,依托 Notion 搭建了完整的自动化工作流和图文生成体系,这个后面也会写复盘。
目前实现了:
- 每天自动从 Github 爬取开源项目信息
- 自动调用 ChatGPT 开源项目简介
- 手动审核 ChatGPT 生成的简介并标记审核状态
- 借助 Pipedream 和 Notion 把已审核的开源项目自动汇总成 Markdown 格式的文章
- 借助 mdnice 把 Markdown 文章自动转为微信公众号图文
- 手动分发(等后面抽出时间这里可以用 Automa 做自动分发)
了解开源服务指南:
- 官网
- 微信公众号:开源服务指南
做过一个不起眼的导航网站:看见导航 收藏了很多我见过且觉得值得推荐的网页和工具,可能会对你有所帮助。
写过一写 Java 开发工具的使用经验:Intellij IDEA 最佳实践
也欢迎访问我的个人博客:Seven’s blog