打造一个干净且个性化的公众号阅读环境

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 打造一个干净且个性化的公众号阅读环境

6.jpg背景


假设你关注的公众号有十来个,若一个公众号两周接一次广告,理论上你会面临二十多次广告,实际上会更多,运气不好的话一天刷下来都是广告也不一定。若你关注了二三十个公众号,那很难避免现阶段公众号环境的广告轰炸。


我收集了一百多篇微信广告文章,提取关键字做了个云图,大家可以看看里面的关键字感受一下:

7.jpg

可以看到大部分的广告,无不是贩卖焦虑,营造消极气氛,实在无法忍受且严重影响我的心情。但有些公众号写的文章又确实不错,那怎么做可以不看广告只看文章呢?


于是我产生了一个想法,为什么不构建一个多源(公众号、RSS)、干净、个性化的阅读环境呢?这个阅读环境满足以下三个核心要求:


  • 去广告!

  • 考虑到以公众号为主,阅读环境还是在微信生态里面,可以基于企业微信号做文章分发
  • 多源,除了微信公众号,还可以定订阅其他市面上优质内容源

最终效果大家可以先感受一下:

8.png

如果诸位觉得有用,请继续阅读。


思路


至此,已经可以大概看到这个项目的面貌了,接下来要做的就是怎么实现一个满足上述要求的项目。


我的思路很简单,大概流程如下:

9.png简单解释一下:


  • 采集器:监控各自关注的公众号或者博客源,最终构建Feed流作为输入源;

  • 分类器(广告):基于历史广告数据,利用机器学习实现一个广告分类器(可自定义规则),然后给每篇文章自动打上标签再持久化到MongoDB

  • 分发器:依靠接口层进行数据请求&响应,为使用者提供个性化配置,然后根据配置自动进行分发,将干净的文章流向微信、钉钉、TG 甚至自建网站都行。

这样做就实现了干净阅读环境的构建,衍生一下,还可以实现个人知识库的构建,可以做诸如标签管理、图谱构建等,这些都可以在接口层进行实现。


开发


其实有了思路,只要有一定的编程基础,接下来的事情就很清晰了,我在这里不详细说开发过程以及代码怎么写,因为我都开源出来了哈。

10.png

项目我取名为2C[1],含义是Claen & Customize Content,真正的开发时间前后大概花了我两周的业余时间,所以还是付出了我的一些心血,如果大家觉得不错,来个 Star 呗 ❤️。


这个项目最大的阻力就是广告样本的收集,这也决定2C项目的效果,所以我非常欢迎且期待大家参与进来,提交广告样本,具体请看Issue_更多的广告样本[2]


使用


接下来重点说说怎么使用2C,此项目对于一些基础环境是有一点要求的,为了尽可能减少开发者部署使用的复杂度(特别是非 Python 开发者),因此我计划使用Docker进行调度运行,这样对用户的使用来说是比较方便的,请按照顺序执行以下TODO


  • 安装Docker:推荐直接使用Docker 极速下载[3]

  • 安装MongoDB:用于持久化,可手动或使用镜像安装

  • 下载2C

  • 配置2C

  • 运行2C


MongoDB


2C的存储部分依赖MongoDB,如果你已经部署好了MongoDB,直接在配置里面进行数据库配置即可。


如果你没有准备好的MongoDB,可以使用Docker一键执行:

# 数据库路径,开发者可自由设置
mkdir -p /data/db
docker run --name mongodb  --restart=always -p 27017:27017 -e /data/db:/data/db -d mongo:3.6

可在Docker查询是否成功启动:

[root@centos ~]# docker ps -a
CONTAINER ID   IMAGE       COMMAND                  CREATED         STATUS         PORTS                      NAMES
758617a57827   mongo:3.6   "docker-entrypoint.s…"   3 seconds ago   Up 2 seconds   0.0.0.0:27017->27017/tcp   mongodb

下载 2C


安装2C前,需要你的系统环境安装有Python3.6+[4]环境。如果确认准备好环境,请进入终端,做环境检查,如下命令:

[~] python --version
Python 3.6.8 :: Anaconda, Inc.
[~] pip --version
pip 21.1.1 from /Users/howie6879/.local/share/virtualenvs/2c-BCq66QuF/lib/python3.6/site-packages/pip (python 3.6)

本项目使用 pipenv[5] 进行项目管理,安装使用过程如下:

# 确保有Python3.6+环境
git clone https://github.com/howie6879/2c.git
cd 2c
# 创建基础环境
pipenv install --python={your_python3.6+_path}  --skip-lock --dev

搭建好基础环境后,就需要对项目进行配置,具体参考如下2C 配置部分。


配置 2C


项目的配置文件位于路径src/config/config.py下,使用者可以进行以下配置:


  • 配置需要订阅的公众号


  • 数据库

  • 分发器类型配置:支持企业微信和钉钉

公众号配置


输入你订阅的公众号名称即可:

WECHAT_LIST = [
    "老胡的储物柜",
]

数据库配置


如果是本机开发,使用上述方法搭建的MongoDB,保持不变即可:

# 数据库配置
MONGODB_CONFIG = {
    # "mongodb://0.0.0.0:27017"
    "username": os.getenv("CC_M_USER", ""),
    "password": os.getenv("CC_M_PASS", ""),
    "host": os.getenv("CC_M_HOST", "0.0.0.0"),
    "port": int(os.getenv("CC_M_PORT", "27017")),
    "db": os.getenv("CC_M_DB", "2c"),
}

分发器配置


目前分发器支持类型如下:


  • ding:钉钉

  • wecom:企业微信

钉钉


建立一个群聊用于接收文章消息,然后新增一个群机器人,如下图:

8.jpg

然后配置机器人:

9.jpg

最后记住机器人对应的Token,一般格式如下:1dea61224e683d90c5d3694c89e30841681567747f41fb9722597d48655f4365,那么此时分发器配置如下:

# 分发配置,目标支持:ding[钉钉]、wecom[企业微信]、tg[Telegram] 等等
# 目前仅支持钉钉
SENDER_LIST = ["ding"]
# 申请钉钉TOKEN时候,关键字必须带有 [2c]
DD_TOKEN = os.getenv('CC_D_TOKEN', '1dea61224e683d90c5d3694c89e30841681567747f41fb9722597d48655f4365')
企业微信


如果你热衷微信生态,2C同样对企业微信做了支持,请先随便用手机号注册一个企业微信[6]


首先创造应用:

11.png

获取相关 ID:

12.png

企业 ID 在我的企业->企业信息->企业ID


为了方便可以在微信上接收消息,记得开启微信插件,进入下图所在位置,然扫码关注你的二维码即可:

13.png

现在你获取了以下三个参数,请填写到对应配置:

WECOM_ID = os.getenv("CC_WECOM_ID", "wwee29721ad4f6e1c9")
WECOM_AGENT_ID = os.getenv("CC_WECOM_AGENT_ID", "1000001")
WECOM_SECRET = os.getenv(
    "CC_WECOM_SECRET", "O4M9w38wuwAxCMr0O3lTqAgzLC7yxjsDGr6lgv12345"
)

关于配置,除了可以直接在代码中的配置文件中进行,更建议直接在.env中进行配置,具体说明请参考环境变量文件。


运行 2C


配置完成后,直接在终端运行即可:

pipenv run dev

不出意外,会得到以下输出:

[2c] pipenv run python src/run.py
Loading .env environment variables…
[2021:04:11 22:08:50] INFO  Request <GET: https://wechat.privacyhide.com/VERSION?>
[2021:04:11 22:08:52] INFO  Ruia Spider started!
[2021:04:11 22:08:52] INFO  Ruia Worker started: 140195525068320
[2021:04:11 22:08:52] INFO  Ruia Worker started: 140195525068728
[2021:04:11 22:08:52] INFO  Request <GET: https://cdn.jsdelivr.net/gh/hellodword/wechat-feeds@4153bf9/details.json>
[2021:04:11 22:12:45] INFO  Ruia Stopping spider: Ruia
[2021:04:11 22:12:45] INFO  Ruia Total requests: 1
[2021:04:11 22:12:45] INFO  Ruia Time usage: 0:03:53.628657
[2021:04:11 22:12:45] INFO  Ruia Spider finished!
[2021:04:11 22:12:45] INFO  2c Schedule started successfully :)
[2021:04:11 22:12:45] INFO  2c Schedule time:
 07:10
 11:10
 16:10
 20:10
 23:10

这样就成功启动了,钉钉分发效果如下(微信分发效果在文首):

14.png


相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
打赏
0
0
1
0
10
分享
相关文章
一键自动化博客发布工具,用过的人都说好(公众号篇)
使用一键自动化博客发布工具blog-auto-publishing-tools把博客发布到公众号篇上。
一键自动化博客发布工具,用过的人都说好(公众号篇)
智能网页大纲插件:提升阅读体验与效率的利器
该插件的核心功能是通过算法快速准确地识别和提取网页的大纲。一旦安装和启用该插件,它会自动扫描页面上的标题、子标题和其他重要的内容,并生成一个简洁明了的大纲结构。这个大纲可以作为一个侧边栏或者浮动窗口显示在页面旁边,方便用户随时预览和导航。
推荐5款小众软件,感兴趣自行下载
今天推荐5款十分小众的软件,知道的人不多,但是每个都是非常非常好用的,有兴趣的小伙伴可以自行搜索下载。
86 0
不同以往的个性化阅读时代
 不同以往的个性化阅读时代 -------ZAKER与乐知   自从推特、微博出现,信息传递就进入了个性化、零散化的新时代。我们可以通过关注不同的“媒体”实现对无用信息的筛选,但其实仔细考究,微博的关注模式实际仍类似于过去的RSS阅读,只不过微博是一种微缩式RSS订阅,简单、零散的信息构成了微博的大部分内容,而从媒介的传播形式上看,微博实际仍未摆脱WEB 2.0时代信息过剩的问题,实际上,这也是大多数RSS阅读软件所面临的问题。
947 0
【02】做一个精美的打飞机小游戏,python开发小游戏-鹰击长空—优雅草央千澈-持续更新-分享源代码和游戏包供游玩-记录完整开发过程-用做好的素材来完善鹰击长空1.0.1版本
【02】做一个精美的打飞机小游戏,python开发小游戏-鹰击长空—优雅草央千澈-持续更新-分享源代码和游戏包供游玩-记录完整开发过程-用做好的素材来完善鹰击长空1.0.1版本
80 7

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等