
做多平台运营的同学应该都有过这样的体验每天在不同 App 之间来回切换只为了回复私信。B 站有人问“UP 主接不接商务合作”抖音有人问“教程在哪里买”小红书有人问“求资料链接”闲鱼有人问“还在吗”……如果账号再多几个光是回消息就能占掉每天一大块时间。后来我在找解决方案的时候看到了 BiliGo 这个项目。它在开源社区里的定位是“多平台自动回复系统”支持的平台覆盖 B 站、抖音、小红书、微博、闲鱼私信而且免费开源。这类需求其实一直存在但之前很多方案都是单平台脚本或者打着自动回复旗号引流收费。BiliGo 的做法是把多平台接入、消息接收、回复规则、定时任务做成一套统一系统用户只需要配置自己的账号信息和回复内容就能跑起来。这篇文章我会从项目思路讲起再拆解部署步骤、配置文件、回复规则设计最后给出多平台接入时容易踩的坑和工程建议。对于没接触过开源项目的读者今天的内容也可以作为第一个上手项目参考。1. BiliGo 是什么1.1 项目解决的核心问题先说一个比较普遍的场景一位内容创作者同时运营 B 站、抖音、小红书、微博还会在闲鱼卖点闲置或课程。私信咨询通常集中在“是否合作”“资料怎么领”“能不能便宜一点”这几类问题上。这些问题内容相似答案也基本固定但每天都要手动复制粘贴效率很低还容易漏回。BiliGo 想解决的就是这个“重复劳动”问题。它把多个平台的私信入口统一接入再通过预设的回复规则自动应答。用户只需要提前写好回复模板系统收到新私信时会判断消息类型、匹配关键词或规则然后自动发送对应回复。1.2 自动回复系统的通用模型虽然平台不同但一个自动回复系统的核心流程是统一的账号接入把某个平台的账号登录态或开放 API 凭证接入系统。消息监听系统定时或通过回调获取新私信。内容读取读取私信文本、发送人、时间等基本信息。规则匹配根据关键词、正则表达式、发送时间、用户状态等条件匹配回复策略。自动发送给用户发送预设内容。记录日志保存回复记录方便人工复查。BiliGo 把这条链路封装成可配置的能力而不是让每个使用者自己写多平台 SDK 对接代码。这样即使是不熟悉开发的普通运营者也可以先通过配置文件完成基础自动回复对开发者来说又留有自定义扩展的入口。1.3 适合哪些人使用这个项目适合几类人群个人博主、UP 主需要自动回复商务合作、资料获取、课程咨询等高频问题。电商卖家闲鱼等平台常见“在不在”“最低多少”“哪里发货”等消息可以自动回应。开源学习者想了解多平台消息接入、配置文件设计、规则引擎实现可以拿源码分析。企业内部客服场景的开发者可以用 BiliGo 作为消息中台原型再接入业务系统。需要提醒的是自动回复系统属于辅助工具使用前一定要确认不违反对应平台的使用协议避免用于骚扰、刷量、诈骗、竞品截流等场景。2. 核心概念与自动回复流程2.1 私信类型不同平台的私信大体可以分成两类一是陌生人私信。B 站、微博、小红书等平台对未关注用户发消息往往有限制有些需要对方关注后才能回复有些平台会把陌生人消息放到单独会话列表。自动回复系统要处理这种情况通常需要账号具备平台允许的回复许可。二是粉丝/好友私信。这类消息没有太严格的发送限制系统可以直接回复。闲鱼场景比较特殊买家和卖家之间通过聊天窗口沟通自动回复需要保证在平台允许的频率范围内运行。在配置回复规则前先搞清楚目标平台对私信的权限控制否则容易出现“系统显示发送成功但用户根本没收到”的问题。2.2 自动回复触发方式BiliGo 的触发方式一般可以分为两类关键词触发收到私信包含“价格”“多少钱”“合作”“资料”等词触发对应回复。默认触发消息没有匹配到任何规则时回复一句兜底内容比如“你好消息已收到我会尽快回复”。更复杂的方案还可以加入定时回复、延迟回复等功能。延迟回复的目的是让消息看起来更像人工回复降低机械化痕迹。这类功能通常也是通过配置参数完成的比如设置回复延迟 10 到 30 秒。2.3 回复规则的核心机制一个规则通常包含三个部分匹配条件消息包含哪些关键词或者匹配哪个正则表达式。回复内容匹配成功后发送的文本可以支持多条随机选择。优先级当一条消息命中多个规则时选择哪个规则执行。在 BiliGo 中规则一般通过配置文件或管理端维护。开箱即用的设计思路是先在 config 里定义规则启动后加载到内存每次收到消息时按顺序匹配。下面给出一个规则配置的示例结构不同版本字段可能不同思路相同{ rules: [ { name: 价格咨询, keywords: [多少钱, 价格, 怎么卖, 多少钱一个], reply: [感谢咨询价格是 99 元可以看商品页详情哦], priority: 10 }, { name: 商务合作, keywords: [合作, 商务, 推广, 广告], reply: [商务合作请发邮件到合作邮箱并备注平台和合作形式], priority: 20 }, { name: 默认回复, keywords: [], reply: [收到你的消息啦我看到后会尽快回复], priority: 999 } ] }这样的规则模型理解起来成本低而且方便后续做管理界面。就算你不是 BiliGo 的贡献者理解这套模型后也能迁移到自己项目的自动回复模块中。3. 环境准备与获取项目3.1 运行环境说明BiliGo 的部署方式很大程度上取决于它使用的技术栈。由于不同版本可能调整技术方案这里用通用的环境准备思路来写。一般情况下自动回复系统会涉及以下组件操作系统Windows、Linux、macOS 都可以推荐 Linux 服务器长期运行。运行时如果是 Python 项目需要 Python 3.8如果是 Node.js 项目需要 Node 16。数据库SQLite 适合本地开发MySQL/PostgreSQL 适合生产环境。包管理工具pip 或 npm用于安装依赖。具体版本以项目 README 为准。这里我建议读者先准备好 Git、Python/Node 基础环境再克隆项目源码。# 克隆项目 git clone https://github.com/BiliGo/BiliGo.git cd BiliGo # 查看目录结构和说明文档 ls -la cat README.md如果你的网络环境克隆 GitHub 比较慢也可以先下载 ZIP 包或者使用码云等镜像仓库。3.2 项目目录结构开源项目的目录结构一般能看出整体设计。第一次接触时不用逐行读代码先找到这几个关键部分config 目录或配置文件存放平台配置、账号配置、回复规则。平台接入模块每个平台一个文件或文件夹比如 bilibili.py、douyin.py。消息处理模块负责统一消息格式、匹配规则。启动入口main.py 或 app.js用于启动整个系统。日志目录记录运行日志和回复记录。如果你克隆代码后看到的目录和上面不完全一样不用紧张从 README 找“项目结构”或“快速开始”一节即可。3.3 安装依赖假设项目是 Python 编写安装依赖的命令通常是pip install -r requirements.txt如果项目同时还有前端管理面板可能还需要单独构建前端界面。常见做法是进入 web 目录后执行 npm install 和 npm run build然后把静态文件交给后端服务。需要提醒的是不要直接用系统全局 Python 装依赖建议为项目创建虚拟环境。python -m venv venv source venv/bin/activate # Windows 下是 venv\Scripts\activate pip install -r requirements.txt4. BiliGo 快速启动与基础配置4.1 账号配置账号配置是整个系统里最关键、也最需要小心的一步。大多数平台不会开放“直接读取全部私信并自动回复”的官方接口BiliGo 这类项目通常采用两种方案使用平台官方开放平台的 API 凭证适合有企业资质或开发者权限的场景。使用账号扫码登录得到的 Cookie 或 Token适合个人账号快速接入。第二种方案使用门槛低但也意味着账号安全风险较高。务必在自己的可控设备上操作不要把 Cookie 提交到不明第三方服务。配置文件中平台账号信息一般长这样platforms: bilibili: enable: true cookie: 你的B站Cookie # 下面参数根据项目实际支持情况填写 uid: 你的UID douyin: enable: false cookie: xiaohongshu: enable: false cookie: 实际字段名以项目 README 或示例配置文件为准。启动之前建议先只启用一个平台跑通后再逐个添加。4.2 回复规则配置BiliGo 的回复规则通常支持关键词精确匹配、包含匹配、正则匹配等模式。以包含匹配为例reply_rules: - name: 回复价格相关 match_type: contains keywords: - 价格 - 多少钱 - 怎么收费 reply: - 基础版免费进阶版课程是 199 元可以看置顶动态了解详情 cooldown_seconds: 60这里 cooldown_seconds 表示同一用户触发该规则的冷却时间防止反复刷消息造成平台风控。4.3 启动服务完成配置后启动命令通常比较简单python main.py如果项目提供了 Docker 部署方式也可以优先使用docker-compose up -d启动成功后日志里一般会输出平台连接信息比如“Bilibili listener started, polling every 30 seconds”。这时可以给自己账号发一条测试消息看看系统能否自动回复。完整的最小部署流程可以归纳为克隆源码创建虚拟环境安装依赖。复制示例配置文件 config.example.yaml 为 config.yaml。填写一个平台的账号信息。配置至少一条回复规则。启动项目观察日志。用另一个账号发测试私信。5. 多平台接入实战思路5.1 B 站私信接入先拿 B 站举例。B 站的私信系统有网页端和 App 端很多人会用网页端 Cookie 保持登录态。BiliGo 要做的是轮询新私信对未读消息提取内容然后调用发送接口回复。B 站接入时需要注意的是登录态会过期Cookie 失效后必须重新扫码登录。对陌生人主动私信可能有频率限制连续回复过多会被临时限制。未关注用户的私信可能需要对方关注后才能发送具体以当时平台规则为准。因此B 站接入后建议先做小范围测试不要一上来就批量回复历史消息。5.2 抖音私信接入抖音的私信开放能力比较有限尤其是个人号。BiliGo 在这类平台的接入通常会依赖网页端内部接口或扫码授权。由于接口经常变动项目可能需要跟随更新才能保持可用。实际使用时建议调低轮询频率避免请求太频繁。抖音账号长期高强度自动回复容易被平台检测为机器行为所以如果只是个人日常咨询回复建议设置较长的回复延迟并限制回复条数。5.3 小红书、微博、闲鱼接入小红书和微博的私信场景与 B 站类似核心都是登录态 消息轮询 自动回复。闲鱼比较特殊它本质是二手交易平台用户咨询的购买意向很强对回复时效要求高所以自动回复的适用价值也高。接入闲鱼时要多关注这些点闲鱼聊天窗口中的“自动回复”功能本身就有平台内置版本BiliGo 的价值是支持更复杂的规则比如根据关键词跳转不同的回复内容。闲鱼对交易纠纷和客服回复率有考核指标自动回复虽然能提升响应速度但回复内容要准确不能答非所问否则容易增加沟通成本。和买家聊天时涉及价格、发货时间、退款政策的内容要谨慎保持一致口径避免承诺不一致。从工程角度看BiliGo 这类项目不是简单地把五个平台写死而是抽象出一套“统一消息模型”。无论消息来自哪个平台经过适配器转换后都会变成同样的数据格式class IncomingMessage: def __init__(self, platform, sender_id, sender_name, content, raw_message): self.platform platform self.sender_id sender_id self.sender_name sender_name self.content content self.raw_message raw_message这样后续匹配规则、记录日志、调用 AI 接口都只需要处理一种结构扩展第六个平台时也不会影响核心模块。6. 自定义回复的高级玩法6.1 关键词 正则表达式关键词匹配适合固定问题但真实用户提问方式千变万化。比如“多少钱”“价格多少”“怎么卖”都能表达价格咨询如果关键词列表写得不够宽就会漏掉一部分消息。更好的方式是在关键词匹配基础上支持正则表达式。例如import re def match_rule(content, rule): for pattern in rule.get(regex, []): if re.search(pattern, content): return True return False配置示例reply_rules: - name: 价格咨询增强版 regex: - 多少钱 - 价格.*(多少|怎么) - 怎么(卖|收费) reply: - 价格统一为 199 元粉丝可领 20 元优惠券正则表达式写完后一定要用历史聊天记录做回测看看哪些消息会误匹配、哪些会漏匹配。6.2 随机回复与延迟回复为了让自动回复看起来不像机器人BiliGo 类项目通常支持多条候选回复随机选择。延迟几秒到十几秒回复。延迟功能可以做成一个发送队列import time import threading def delayed_send(msg, delay_seconds): def do_send(): time.sleep(delay_seconds) send_to_platform(msg) threading.Thread(targetdo_send).start()需要注意的是延迟太久会影响用户体验一般控制在 5 到 30 秒内比较合理。6.3 接入大模型生成回复如果不想只回复固定模板可以把 BiliGo 和 LLM API 结合。收到消息后先用规则匹配如果命中“闲聊”类规则就把消息转发给大模型生成回复。这里只是一个思路具体实现时要注意大模型回复内容不可控不要直接用于交易、医疗、法律等敏感场景。API 调用会增加延迟和成本建议给大模型回复也加上关键词过滤和长度限制。调用外部接口时要用 try-except 兜底避免模型服务超时导致用户收不到回复。示例思路如下import openai def ai_reply(content): try: resp openai.ChatCompletion.create( modelgpt-3.5-turbo, messages[{role: user, content: content}], max_tokens200, timeout20 ) return resp.choices[0].message.content except Exception: return 不好意思我现在有点忙稍后回复你再次强调接入大模型前请确认项目是否有扩展点以及第三方的使用成本和安全合规要求。7. 常见问题与排查思路7.1 高频问题对照表问题现象常见原因解决思路启动失败依赖库缺失或版本不兼容按 README 指定版本安装依赖优先用虚拟环境收不到私信消息Cookie 失效、轮询频率太低、平台接口变更重新扫码/登录查看日志确认监听是否正常回复发送失败平台限制私信频率、消息格式错误降低发送频率检查回复文本是否包含非法字符规则未生效关键词不匹配、配置未重新加载确认规则格式重启服务或热加载配置多平台中某个平台异常该平台接口单独变动单独关闭该平台配置等修复后再开启日志中出现大量 403登录态被风控、请求频率过高停止请求换 IP 或降低轮询频率重新登录7.2 排查步骤遇到问题时不要急着改代码先按顺序排查看日志找到最近的报错堆栈或 HTTP 状态码。确认配置Cookie 是否过期、规则是否存在语法错误。单平台复现只保留一个平台配置测试基础收发是否正常。查频率是否触发平台限流如果是暂停一段时间。查上游接口用浏览器开发者工具观察正常发私信时请求了哪些接口对比项目代码是否还有效。7.3 一个典型的 Cookie 失效问题很多人遇到的现象是第一天系统还能用第二天就收不到消息。打开日志发现 HTTP 401 错误。这种情况 90% 是 Cookie 或 Token 失效。解决办法不是“清理缓存重装”而是查看项目是否支持扫码登录更新凭据。如果只能手动更新 Cookie建议封装一个可定时刷新 Cookie 的脚本。不要在多台设备同时登录同一账号。8. 安全合规与最佳实践8.1 账号安全边界自动回复系统本质上需要拿账号登录态所以安全问题比普通脚本更高一个等级。我的建议是只在自己完全可控的服务器或本机运行。不要把 Cookie、Token 提交到公共仓库。配置文件加白名单入库的敏感字段需要加密。定期更换密码和 Token降低泄漏风险。还有一点容易被忽略自动回复的内容是你自己配置的如果你在回复中让用户加微信、转账、付款出了问题责任在自己。不要配置任何可能导致诈骗、诱导交易的回复内容。8.2 平台风控规避这里说的“规避”不是教大家绕过平台限制而是提醒要正常、合规地使用账号功能。以下几点值得注意控制回复频率不要在几秒内连续回复大量消息。新账号不要立即开启自动回复先养号一段时间。合理设置延迟让回复节奏接近人工。建议在非高峰期测试大批量消息场景。8.3 日志与可观测性生产环境长时间运行日志就是排障的唯一线索。建议至少记录以下信息收到消息的平台、发送人、时间、内容。命中的规则名称。回复是否成功失败原因是什么。系统异常堆栈。日志格式尽量统一例如[2025-06-10 12:30:01] [INFO] [bilibili] [user:123456] 命中规则 [价格咨询] 回复成功 [2025-06-10 12:31:11] [ERROR] [douyin] 发送失败, HTTP 403, 请求频率过高统一日志后可以做简单的告警连续失败超过 5 次时通过钉钉/企业微信机器人通知管理员及时处理。8.4 上线前测试建议正式投入使用前建议做一轮完整测试用另一个账号发送各类型关键词观察是否命中预期规则。发送不相关消息验证默认回复。连续发送多条消息验证冷却时间是否生效。停掉服务看重启后是否有历史消息积压导致重复回复。9. 从 BiliGo 还能学到什么如果只把 BiliGo 当成一个工具学会配置就不错了。但开源项目的价值远不止“免费使用”它也是一个很好的学习样本。通过阅读源码你可以学到如何为一个项目设计可配置模块。如何把不同平台的 API 差异封装在适配器层。如何处理轮询任务的异常和重试。如何设计一个简单的规则匹配引擎。如果你想长期用它维护自己的账号我建议把账号信息、回复内容和代码分离创建独立的配置文件不入库、不上传 GitHub。在服务器上使用 systemd 或 Docker 管理进程避免 SSH 断开后程序退出。每周看一眼日志及时处理 Cookie 过期和接口异常。多平台自动回复的需求以后只会更多不只是博主、卖家需要很多小型团队也被这类重复咨询消耗着精力。BiliGo 这样的开源项目提供了一个不错的起点。如果真的跑到线上建议还是先从一个平台开始把稳定性、频率控制、日志告警跑顺了再加上一个平台。一次接入五个平台出问题时排查难度也是五倍。