一个简单的RSS博客聚合站
使用Golang+Vue3+ElementPlus
构建,借助GitHub Action实现自动更新Feed数据并生成页面,最终页面构建于html
分支下,并由GitHub Pages呈现。
确保已经安装了golang sdk和nodejs后,克隆仓库。
cd xdu-planet
make frontend && make build/xdu-planet
最终得到的二进制文件在build/
目录下。
GET /api/v1/feed
获取所有文章GET /api/v1/comment/:article_id
获取某篇文章的评论GET /api/v1/comment/reply_to/:comment_id
获取某个评论的回复POST /api/v1/comment/:article_id
发表评论content
评论内容user_id
用户IDreply_to
回复的评论ID(可选,仅当回复评论时传值)
DELETE /api/v1/comment/:comment_id
举报评论- 举报后,评论自动转为
audit
状态,管理员可在后台审核
- 举报后,评论自动转为
GET /api/v1/admin/comment/:filter
获取评论列表filter
可选,可选值为ok
、block
、delete
、audit
,分别表示已通过、已屏蔽、已删除、待审核
POST /api/v1/admin/comment/audit/:comment_id
审核评论status
审核状态,可选值为ok
、block
,分别表示通过、屏蔽
初次运行会产生一个空的配置文件config.yml
,需要手动填写。参考配置如下:
version: 1
databaseconfig: # 数据库配置,现阶段用于支持评论系统
type: "sqlite" # 可选值为sqlite、mysql
host: ""
port: ""
user: ""
password: ""
db: "planet.db"
migrate: true
avalonguard: # 评论审核系统配置
enablegravetimer: true # 是否启用:被举报评论超时自动转为屏蔽状态
gravetimeout: 3600s # 评论审核超时时间
enablefilter: false # 是否启用:评论内容过滤
filter: [] # 过滤关键词列表
logfile: "admin.log" # 管理员操作日志文件
admintoken: [] # 管理员token列表
feeds: [] # RSS源列表
然后直接运行xdu-planet
即可。打开浏览器访问http://localhost:8192
即可看到聚合站。
进程会每隔15分钟更新一次Feed源,更新后的数据会存储在db/
目录下。
更改完配置文件后,通过如下命令即可更新Feed数据:
./xdu-planet -fetch
抓取完毕后,会生成作为索引的index.json
和包含文章正文的db.json
,以及作为index.json
索引指向的正文数据库db/
。
如果不需要评论系统,可以直接将生成的build/
目录下的文件(除了数据库文件,可执行程序和配置文件)部署到静态服务器上。在需要更新时,只需要重新运行xdu-planet -fetch
并将生成的文件部署到服务器上即可。
MIT License