selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

liuli logo

Self-host liuli

v0.2.0

Clean multi-source feeds for WeChat, novels and blogs

BetaOpen SourceApache-2.0
docker run -d -it --restart=always -v $PWD/pro.env:/data/code/pro.env -v $PWD/liuli_config:/data/code/liuli_config --name liuli_schedule liuliio/schedule:v0.2.4
Updatedlast year
LanguagePython
Setup difficultyModerate
Stars
883
Port
8765 (Flask HTTP API of the liuli_api service (feeds also served under /rss/...))
Requires
MongoDB
Docker
liuliio/schedule
liuli screenshot 1liuli screenshot 2

What is liuli?

Liuli is a self-hosted reading pipeline that watches the sources you subscribe to (WeChat official accounts, novel sites, blogs), pulls new articles with a browser-based collector, runs them through a configurable processing stage, and delivers the result to your own channels. Dispatch targets documented are DingTalk, WeCom, Telegram, Bark and per-source RSS feeds, while finished articles can be archived back into MongoDB or pushed to a dedicated GitHub repository published with GitHub Pages. Behaviour comes from an env file plus JSON task definitions in liuli_config (collector, processor, sender, backup and schedule blocks), so scheduling times and destinations are edited rather than coded. Running it means starting the liuliio/api and liuliio/schedule containers with docker-compose alongside a MongoDB instance; the Flask API listens on port 8765. A code install with Python 3.7+ and pipenv is also documented for Windows, macOS and Linux. All documentation is Chinese-only, and the project stayed pre-1.0 (last tagged release v0.2.0), with machine-learning based ad filtering and reader-facing source management still on the roadmap.

Should you self-host liuli?

liuli scores 45/100 on selfhost.directory (how scoring works) and ranks #5 of 6 in Feed Aggregator. It has 883 GitHub stars.

There was no stable release in the past 12 months, so check the repository's recent activity before you rely on it.

Setup is moderate: expect some configuration beyond a single command. An official Docker image is available. It is Apache-2.0-licensed and written mostly in Python.

Its closest alternative on selfhost.directory is Nextcloud News (61/100, 1 012 stars). It scores higher overall, so compare the two before you pick. See liuli vs Nextcloud News side by side.

Features

  • Config-driven collection pipeline
  • Content backup
  • Custom processing hooksMachine-learning ad classification is listed as unfinished.
  • HTTP API service
  • Machine-learning ad classificationUnchecked item in the README feature list.
  • Multi-source content collection
  • Novel subscription tracking
  • Push notifications to chat apps
  • RSS feed output
  • Scheduled runs

liuli README

How to install liuli

Install liuli with Docker

MongoDB
Environment variables
LL_M_HOST, LL_M_PORT, LL_M_DB, LL_HTTP_PORT
docker run -d -it --restart=always -v $PWD/pro.env:/data/code/pro.env -v $PWD/liuli_config:/data/code/liuli_config --name liuli_schedule liuliio/schedule:v0.2.4
docker run -d -it --restart=always -p 8765:8765 -v $PWD/pro.env:/data/code/pro.env --name liuli_api liuliio/api:v0.1.4

Modules can be started one container at a time against an existing MongoDB.

How to configure liuli

  • LL_BARK_URLBark推送链接

    Bark推送链接

  • LL_DD_TOKEN=======================================分发器配置=======================================# 分发器终端配置,用户在环境变量配置好密钥后,在启动配置的 sender.sender_list 填写好想分发的终端即可 目前支持:ding[钉钉] wecom[企业微信] tg[Telegram] Bark 分发终端为钉钉必须配置的Token

    =======================================分发器配置=======================================# 分发器终端配置,用户在环境变量配置好密钥后,在启动配置的 sender.sender_list 填写好想分发的终端即可 目前支持:ding[钉钉] wecom[企业微信] tg[Telegram] Bark 分发终端为钉钉必须配置的Token

  • LL_DOMAIN访问域名,没有域名填本机实际地址(因为要开放对外访问),如: http://192.168.0.1:8765

    访问域名,没有域名填本机实际地址(因为要开放对外访问),如: http://192.168.0.1:8765

  • LL_GITHUB_DOMAIN访问域名,可自定义也可以用默认的,如果用github做备份器就必填,以我个人备份项目为例地址为:https://howie6879.github.io/liuli_backup/

    访问域名,可自定义也可以用默认的,如果用github做备份器就必填,以我个人备份项目为例地址为:https://howie6879.github.io/liuli_backup/

  • LL_GITHUB_REPO文章保存项目地址,例:howie6879/liuli_backup 项目名称一定为 liuli_backup

    文章保存项目地址,例:howie6879/liuli_backup 项目名称一定为 liuli_backup

  • LL_GITHUB_TOKEN=======================================备份器配置=======================================# 备份器目前支持: github mongodb 使用 mongodb 备份的话则默认使用上面配置的数据库地址进行备份 使用 github 备份的话需要填写以下配置 项目权限token

    =======================================备份器配置=======================================# 备份器目前支持: github mongodb 使用 mongodb 备份的话则默认使用上面配置的数据库地址进行备份 使用 github 备份的话需要填写以下配置 项目权限token

  • LL_HTTP_DEBUG0======================================接口服务配置======================================# Flask 是否开启Flask的Debug模式

    ======================================接口服务配置======================================# Flask 是否开启Flask的Debug模式

  • LL_HTTP_HOST0.0.0.0Flask IP

    Flask IP

  • LL_HTTP_PORT8765Flask 端口

    Flask 端口

  • LL_HTTP_WORKERS1Flask 服务启动的 worker 数量

    Flask 服务启动的 worker 数量

  • LL_M_DBadminMongoDB 默认 db 如果用户自建db,填写自己的即可 此时 LL_M_OP_DB 可不填

    MongoDB 默认 db 如果用户自建db,填写自己的即可 此时 LL_M_OP_DB 可不填

  • LL_M_HOSTliuli_mongodbMongoDB IP Docker Compose 形式启动的话,此行配置不变

    MongoDB IP Docker Compose 形式启动的话,此行配置不变

  • LL_M_OP_DBliuli
  • LL_M_PASSMongoDB 密码

    MongoDB 密码

  • LL_M_PORT27017MongoDB 端口

    MongoDB 端口

  • LL_M_USER=======================================数据库配置=======================================# MongoDB 用户名

    =======================================数据库配置=======================================# MongoDB 用户名

  • LL_TG_CHAT_IDTG 终端配置

    TG 终端配置

  • LL_TG_TOKEN
  • LL_WECHAT_ACCOUNTWeChat official accounts to subscribe to; account names separated by ';'

    WeChat official accounts to subscribe to; account names separated by ';'

  • LL_WECOM_AGENT_ID-1
  • LL_WECOM_ID分发终端为企业微信的配置,如果不配置分发用户与部门,则默认会发送给所有部门的所有用户

    分发终端为企业微信的配置,如果不配置分发用户与部门,则默认会发送给所有部门的所有用户

  • LL_WECOM_PARTY企业微信分发部门(填写部门名称),多个部门用;分割

    企业微信分发部门(填写部门名称),多个部门用;分割

  • LL_WECOM_SECRET
  • LL_WECOM_TO_USER企业微信分发用户(填写用户帐号,不区分大小写),多个用户用;分割

    企业微信分发用户(填写用户帐号,不区分大小写),多个用户用;分割

  • PYTHONPATH${PYTHONPATH}:${PWD}======================================系统环境配置======================================# 当前目录为模块

    ======================================系统环境配置======================================# 当前目录为模块

liuli releases & version history

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…