DSH Plugins Marketplace

DSH Plugins

Plugins

/

Tools & Capabilities

/

OpenBiliClaw

w

OpenBiliClaw

Identified★ 3.6k

Local private, open-source self-evolving cross-platform AI content discovery agent: first understands you, then proactively searches for content on Bilibili, Xiaohongshu, Douyin, YouTube, X, Zhihu, Reddit, Weibo, and the open web. (Supports deepseek harness plugin)

🦀 OpenBiliClaw

General-purpose personalized content recommendation Agent — local, cross-platform, built for you alone

A general-purpose personalized content discovery Agent — runs on your machine, understands only you

License: MIT Python 3.11+ Release downloads stars CI LINUX DO discussion Chrome Web Store Gitee mirror DSH Plugin Marketplace

Project homepage | English | 中文

Domestic AtomGit hosting: OpenBiliClaw (source auto-synced from GitHub)

🆕 Important update: OpenBiliClaw now installs into DeepSeek Harness

New DSH client plugin — install OpenBiliClaw into DeepSeek Harness: a DSH-embedded fourth panel (recommendations / content library / chat / profile / settings), plus 22 registered Agent Bridge tools that let agents inside DSH read recommendations, answer probes, and learn in a closed loop — work in DSH while getting personalized cross-platform content in the background. → github.com/whiteguo233/dsh-openbiliclaw

📱 Want a native app? The Flutter mobile client (Android / iOS / Web / desktop) lives in a separate repo OpenBiliClaw-mobile: recommendations, chat, profile, favorites / watch-later / 30-day history included, all connecting to the same local backend.

🇨🇳 Domestic download (current v0.3.221): The 7 latest packages (plugin, standard macOS / Windows builds, and with-model builds) are available from 123 Cloud Drive domestic download; the share link is permanently valid and can be opened directly to download. Gitee attachments and source code: see Gitee v0.3.221 release.

OpenBiliClaw in 10 seconds

A fully local, private, open-source self-evolving cross-platform content discovery Agent: it continuously deepens your psychological profile from your cross-platform usage, feedback, and conversations, then actively hunts for content you'd like on Bilibili, Xiaohongshu (RED), Douyin, YouTube, X, Zhihu, Reddit, Linux.do, Bangumi, V2EX, Weibo, GitHub, and the open Web — guided by its understanding of you.

Cross-platformLocal-firstTrainable
Bilibili / Xiaohongshu / Douyin / YouTube / X / Zhihu / Reddit / Linux.do / Bangumi / V2EX / Weibo / GitHub / WebData stays on your local SQLite by defaultLikes, not-interested, and chat feedback all reshape future recommendations

安装浏览器插件 · 让 AI 助手部署后端

喜欢这个方向?欢迎 Star 支持项目继续适配更多平台。

OpenBiliClaw 跨平台本地推荐 Agent 演示:信号进入本地后端、生成画像、解释推荐理由、根据反馈继续学习

Quick start

Regular users need only four steps; alternative paths such as Firefox, Docker, scripts, and manual deployment are covered in Installation & Deployment details.

  1. Install the plugin — one-click install from the Chrome Web Store (auto-updates), or download the zip from Latest Release and install manually (newest features land first; the store build may lag a few days).

  2. Install the backend — download the desktop installer from the same Latest Release (macOS .dmg / Windows .exe, ready out of the box, lives in the menu bar / tray). Each platform has two installer flavors: Lite (default; auto-downloads the bge-m3 embedding model on first run) and -with-embedding Full (bge-m3 ~1.1GB pre-bundled, works offline out of the box) — choose Full if you have poor connectivity or want to stay offline; otherwise Lite is fine. Domestic users can also grab the 7 latest packages directly from 123 Cloud Drive domestic download (v0.3.221). If you want to modify source code or deeply customize, just paste this one-liner into an AI coding assistant such as Claude Code / Codex CLI / Cursor:

    请按照 https://raw.githubusercontent.com/whiteguo233/OpenBiliClaw/main/docs/agent-install.md 的说明帮我部署 OpenBiliClaw 后端(务必用 Bash 的 curl 下载这个文档,不要用 WebFetch — 会丢关键指令)
    
  3. Connect sources — log in to Bilibili in the browser where you installed the plugin (the default initial source), or switch to Xiaohongshu / Douyin / YouTube / X / Zhihu / Reddit / Linux.do / V2EX / Weibo / GitHub. Linux.do, Bangumi, V2EX, Weibo, and GitHub all support anonymous discovery; account-based sources reuse the installed plugin, while GitHub is read anonymously from public repositories via the backend's official REST API. For GitHub, you can use a public username to seed initialization from starred repositories; a PAT only optionally raises rate limits and verifies identity.

  4. Open the UI — visit http://127.0.0.1:8420/web in the browser; on your phone, scan the QR code in the plugin to open http://<电脑局域网 IP>:8420/m/ and add it to your home screen to use it like an app; for a native app experience, install the Flutter client from the separate repo (OpenBiliClaw-mobile — Android / iOS / Web / desktop, installers at Latest Release) and fill in the backend address in settings to connect to the same backend.

When you're not on the same LAN, the Android / iOS native apps of OpenBiliClaw-mobile ship with tsnet embedded, and the computer side can also have OpenBiliClaw join the same tailnet by itself; Web / Linux / macOS / Windows Flutter clients are not in scope for this capability. The desktop installer bundles a helper; open the desktop Web UI or the browser plugin on your computer and go to "Settings → General → In-app Tailnet remote access". Once enabled, you can either leave it blank and use web login, fill in a tskey-auth-… Auth Key, or fill in a tskey-client-… OAuth Client Secret with an authorized device tag, then fully restart the app. Credentials are kept privately on the local machine only until the next launch — they never enter config.toml, API echoes, or logs. For source / one-liner installs, first run openbiliclaw tailnet build-helper (requires Go 1.26.6), then run openbiliclaw tailnet enable and restart. No need to install or enable Tailscale system-wide on the computer; the entry point is off by default and only visible on the private tailnet, Funnel/Serve is not used, and we recommend enabling the app password in the local Web settings as well (source installs can run openbiliclaw set-password instead). See In-app Tailnet for details.

User community

QQ 用户交流群二维码
QQ 用户群
Discord 社区二维码
Discord 社区
扫码或点击加入,链接长期有效

Why do we need OpenBiliClaw?

The name originates from Bilibili (Bili = Bilibili, Claw = claw); the project originally only supported Bilibili. Since v0.3.0 it has expanded into a general-purpose cross-platform Agent covering Bilibili / Xiaohongshu / Douyin / YouTube / X / Zhihu / Reddit / Linux.do / Bangumi / V2EX / Weibo / GitHub and the open Web, with more content platforms being integrated continuously.

A recommendation system is fundamentally a middleman — the platform sits between massive content and massive users, doing the matching. Modern systems weigh a dozen goals (CTR, watch-through rate, like/coin odds, dwell time, retention, creator health, ad revenue) into one score. That sounds scientific, but the weights are set by the platform; the optimization target is ultimately the platform's — user satisfaction is just a means, not the end. You think you're choosing; the middleman is actually deciding what you see. The result: feeds increasingly mirror what you've already watched, and surprises are pure luck.

And every platform is an island. Three years of mechanical keyboards on Bilibili, and Xiaohongshu has no idea; the coffee gear you saved on Xiaohongshu will never show up on Bilibili. Your interests are fragmented across platforms, and no one connects the dots for you.

OpenBiliClaw flips it. It is a locally running AI Agent — it first deeply understands you, then uses that understanding to cross-platform actively hunt for content you'd like. The project started with Bilibili and now covers Xiaohongshu, Douyin, YouTube, X (Twitter), Zhihu, Reddit, Linux.do, Bangumi, V2EX, Weibo, GitHub, and the open Web:

🧠 Know you first, then find content

Not matching tags to videos, but starting from you. It infers MBTI, cognitive style, and deep psychological needs, building a five-layer soul portrait (events→preferences→awareness→insights→soul). It understands you as a person, not your click history.

🔮 Proactive Exploration Based on Understanding

This is the core difference: the system uses its understanding of you to proactively guess domains you might like but never explored. A watchmaker might love architectural aesthetics; a quantum-physics viewer might be drawn to philosophy — it bridges via psychology and strikes first. A hit gets promoted to a formal interest; a miss quietly backs off. Collaborative filtering will never surface content that "no one walked this path to," but OpenBiliClaw will.

🔒 100% local, 100% yours

Core behavioral, recommendation, and conversation data stay in SQLite on your own disk; configuration, profile, credentials, and caches are also kept in local files only. The LLM defaults to your own API Key; you can also experimentally reuse your local Codex CLI ChatGPT OAuth credentials. There is no cloud account operated by OpenBiliClaw, and no one else can see your profile. How this Agent grows is entirely up to you — tune recommendations via feedback, shape it through conversation, swap the LLM, migrate or modify the database, whatever you like.

💡 Comparison with Other Recommendation Tools

Official Platform RecommendationsKeyword-Filtering PluginsOpenBiliClaw
Recommendation LogicCollaborative FilteringTag MatchingPsychological Profile + Five-Layer Memory
Content SourcesSingle PlatformSingle PlatformCross-Platform (Bilibili · Xiaohongshu · Douyin · YouTube · X · Zhihu · Reddit · Linux.do · Bangumi · V2EX · Weibo · GitHub · Web)
Filter BubbleNarrows Over TimeNot AddressedProactively Breaks Out by Guessing Interests
Data OwnershipOwned by PlatformUsually Cloud100% Local
Recommendation Explanation"You Might Like"NoneExplains Why Like a Friend
CustomizabilityNoLowSwap LLM / Edit Profile / Write Skill

📸 Feature Preview

There are now five core entry points: the browser extension handles in-platform interactions and login sessions, the desktop Web (/web) provides a large-screen recommendation homepage, the mobile Web (/m) is designed for smartphone use, a separate repository hosts the native Flutter client (OpenBiliClaw-mobile) covering Android / iOS / Web / Desktop, and the DSH client plugin brings the same panel into the DSH Web interface (fourth column + 22 Agent Bridge tools). The desktop, mobile Web, native client, and DSH plugin all only call the local API — Cookie synchronization and platform tasks are still handled by the extension.


智能推荐
像朋友一样解释为什么你会喜欢

灵魂画像
自然语言描述的深度人格分析

结构化特质
MBTI · 核心特质 · 深层需求

对话调教
聊天告诉它你想看什么

🖥️ Desktop Web Preview

After starting the backend, visit http://127.0.0.1:8420/web (or directly http://127.0.0.1:8420/, which will auto-redirect) to use the recommendation homepage on a large browser screen.


桌面推荐首页
惊喜推荐 Hero · 为你推荐网格 · 朋友式推荐理由

推荐卡片网格
封面 + 推荐理由 · 喜欢 / 不感兴趣 / 稍后 / 收藏 / 聊一聊

画像 + 实时看板
侧栏 Runtime 看板 + 后台动态 · 人格素描 · 核心特质 · MBTI 推断

📱 Mobile Web Preview


手机推荐页
惊喜推荐 + 池子状态 · 朋友式推荐原因
看看 / 喜欢 / 稍后 / 收藏 / 不感兴趣 / 聊一聊

手机画像页
人格素描 · 核心特质 · 深层需求 · MBTI

手机对话页
与插件共享主聊天历史

📱 Want a native app? The separate repository OpenBiliClaw-mobile (Flutter) provides Android / iOS / Web / Linux / macOS / Windows clients: recommendations, chat, profile, bookmarks / watch-later / 30-day history, and a message inbox — all included. Bilibili covers go through direct CDN to save two hops. Download signed Android APKs and self-signed iOS IPAs from Latest Release (iOS requires re-signing with a personal Apple account). This is currently a preview version for new features and has not been tested long-term yet.

更多截图

推荐反馈
点赞 / 多来点 / 少来点 / 没兴趣

价值偏好与兴趣
内在驱动力 · 猜测兴趣方向

认知风格
信息处理偏好 · 内容口味

Recent Updates

📌 Latest version: v0.3.222 (2026-09-11)

  • Watch-later / bookmarks no longer rejected due to protocol-relative cover URLs (issue #237): Bilibili-returned //i2.hdslb.com/... covers are normalized to https://... by the backend before storage; saves on desktop / mobile Web and the Flutter client now succeed directly.
  • More stable Bilibili player-page interaction data: a new backend video-info endpoint auto-falls-back to WBI signature when the normal endpoint hits 412 risk control, so mobile description and like / coin / bookmark / comment counts are no longer missing.
  • Optional learned scorer for relevance evaluation (experimental): desktop Web / extension "Advanced Features" can switch between Agent(默认), Shadow(校准观察), Learned(仅相关性); default behavior is unchanged.

See docs/changelog.md for the full changelog.

Install & Deploy

The normal flow: install the browser extension, send a one-liner to your AI assistant to install the backend, then log in to content platforms in the same browser; for phone use, also open the mobile Web. Scripts, Docker, and manual deployment are fallbacks, in the collapsible section below.

1. Install the Browser Extension

The extension is the primary entry point: it shows a sidebar on supported sites, collects your feedback, and handles login-state read-only tasks for Zhihu, Reddit, Linux.do, V2EX, and Weibo. Linux.do, V2EX, and Weibo task tabs are isolated from normal behavior collection; Weibo public discovery is completed independently by the backend, and only personal initialization uses Weibo host permissions and the same-origin task bridge.

The extension is based on Manifest V3 and supports all Chrome-extension-compatible browsers, including Chrome, Edge, Brave, Arc, Vivaldi, Opera, and more; a Safari (macOS) build is also provided — Releases automatically include openbiliclaw-extension-v*-safari.dmg (Developer ID signed + notarized when Apple credentials are configured; otherwise an ad-hoc experimental build requiring "Allow Unsigned Extensions" in Safari). You can also locally convert it into an Xcode project via Apple's safari-web-extension-converter and install (see Safari Build Documentation for details).

Recommended · Download the latest from the Latest Release aggregation page and install manually (get the newest features and fixes — the Chrome Web Store is subject to review schedules, so its version typically lags by a few days to one or two weeks):

  1. Open OpenBiliClaw Latest Release, i.e. the latest openbiliclaw-v* user download aggregation page
  2. Chrome / Edge / Brave: download openbiliclaw-extension-v*.zip; Firefox: if the release provides openbiliclaw-extension-v*-firefox.xpi, install it directly; otherwise download openbiliclaw-extension-v*-firefox.zip and load temporarily via about:debugging as described below; Safari (macOS): download openbiliclaw-extension-v*-safari.dmg, open it, run the App for the first time, then check OpenBiliClaw in Safari Settings → Extensions
  3. Open the extensions management page (Chrome: chrome://extensions/ · Edge: edge://extensions/ · Brave: brave://extensions/) and enable "Developer mode" in the top-right corner
  4. Chrome / Edge / Brave: drag the downloaded .zip file into the page to install; Firefox .xpi can be opened directly to confirm installation, while temporary zips must first be extracted before loading manifest.json

Effortless · One-click install from Chrome Web Store (the browser auto-updates after installation, suitable for those who don't want to manually upgrade; downside: the version may lag behind Releases):

👉 Install OpenBiliClaw from Chrome Web Store — just click "Add to Chrome".

Extension updates depend on the installation channel: Chrome Web Store / Edge Add-ons, and the Firefox AMO listed version after review are auto-updated by the browser; users who downloaded from GitHub Releases (Chrome zip / Firefox signed XPI / Firefox temporary zip / Safari dmg), or loaded in developer mode / Firefox temporary loading, need to download the new package and reload it the same way. Firefox AMO listing review is asynchronous — until the listed version is public, use *-firefox.zip temporary loading from Releases; after approval, Firefox auto-updates. The "Auto-update" toggle in backend settings only updates the local backend source code, not the browser extension.

Firefox 用户:正式安装与临时调试(Firefox 140+)

Firefox uses sidebar_action instead of Chrome's sidePanel, so releases provide separate artifacts:

  • openbiliclaw-extension-v*-firefox.xpi: the formal install package after Mozilla AMO unlisted signing; only generated when AMO signing is enabled in the release environment and credentials are available — regular Firefox Release / Beta users can install it directly.
  • openbiliclaw-extension-v*-firefox.zip: an unsigned development package, only for temporary loading via about:debugging or as AMO signing input. Regular Firefox will prompt "could not be verified / could not be verified" if you try to install it directly.

临时调试或源码构建时使用:

unzip openbiliclaw-extension-v*-firefox.zip -d openbiliclaw-firefox

# 或从源码构建
git clone https://github.com/whiteguo233/OpenBiliClaw.git
cd OpenBiliClaw/extension
npm install
npm run build:firefox          # 产出 dist-firefox/
npm run package:firefox        # 额外打成未签名 openbiliclaw-extension-v*-firefox.zip
# AMO 凭据配置后可签名成正式安装包:
# AMO_JWT_ISSUER=... AMO_JWT_SECRET=... npm run sign:firefox:only

Loading method:

  1. Open about:debugging#/runtime/this-firefox
  2. Click "Load Temporary Add-on…"
  3. Select manifest.json in the extracted directory (or extension/dist-firefox/manifest.json from a source build)

Note: Firefox temporary loading expires after the browser restarts; if a release provides a signed .xpi, regular users should prefer the .xpi.

2. Deploy the Backend (Pick One)

Regular users: the desktop installer is the easiest. Want to modify source, swap LLMs, or deeply customize? Use the AI one-sentence deployment.

Option A: Download the Desktop Installer (Experimental, Easiest)

Download the installer for your OS from the openbiliclaw-v* aggregation page on Latest Release. This page also displays:

🇨🇳 For downloads from mainland China networks, you can use 123 Cloud Drive domestic download (current v0.3.221); the share link is permanent and includes all 7 latest packages. The extension, regular Windows installer, and source code are also available from GitHub / Gitee v0.3.221 release above.

  • 当前后端源码 tag:backend-v*

  • 当前插件 release:extension-v*,并附 openbiliclaw-extension-v*.zip / openbiliclaw-extension-v*-firefox.zip(Firefox 临时调试);启用 AMO signing 时还会附 openbiliclaw-extension-v*-firefox.xpi(Firefox 正式安装)

  • 当前桌面安装包 release:desktop-v*,同版本桌面 channel 完成后会附可用的 .dmg / .exe;缺失 channel 显示未发布,不回填上一版资产

  • macOS:从发布页下载与你的 Mac 匹配的 DMG:Apple 芯片用 OpenBiliClaw-macos-v*-arm64.dmg;Intel 用 OpenBiliClaw-macos-v*-x64.dmg(如发布页提供)。打开后推荐双击 安装并启动 Install OpenBiliClaw.command:它会校验新包、退出旧实例、原子替换「应用程序」中的 app,再启动刚安装的版本;传统拖拽仍可用,但升级时需先退出旧版并在替换后手动重开。

  • Windows:下载 OpenBiliClaw-windows-*-Setup.exe,双击安装。向导最后一页提供默认勾选的「Launch OpenBiliClaw」复选框,点「完成」才会启动刚安装的新版本(升级时安装器会先结束无互斥体的旧实例;若运行中的是已带 AppMutex 的新版应用,安装/卸载会先弹「OpenBiliClaw 正在运行」提示,退出应用后点 OK 自动重检,正常点「完成」即完成新旧交接,取消勾选则不启动);/SILENT / /VERYSILENT 静默安装没有向导界面,安装成功后仍会自动启动新版本;但应用仍在运行时静默安装(配合 /SUPPRESSMSGBOXES)会按取消处理,需先退出应用。

macOS 主应用继续以 10.15+ 为兼容目标;只有 Go 1.26.6 构建的可选 Tailnet helper 实测要求 macOS 12+。10.15 / 11 会只降级远程 Tailnet,本机应用功能仍照常。

安装包自带本地 Ollama + bge-m3 embedding,开箱即用;也内置默认内容源依赖,包括 X 的 twitter-cli、Reddit 的 rdt-cli,以及默认关闭的应用内 Tailnet helper。后者让电脑端应用自己加入用户的 tailnet,不安装系统 Tailscale。请在电脑本机的桌面 Web 或浏览器插件「设置 → 通用」中开启 Tailnet,选择网页登录、Auth Key 或 OAuth Client Secret 入网并完整重启;OAuth 方式还需填写该 OAuth Client 已获准使用的设备 tag。Reddit rdt 命令后端会优先使用已连接插件同步的 reddit_session,插件不可用时可手动运行 rdt login,未登录会 fallback 插件。启动后常驻 macOS 菜单栏 / Windows 系统托盘,右键可「打开 Web 界面 / 查看运行日志 / 退出」。数据与 AI / 脚本安装复用同一个目录:~/OpenBiliClaw(macOS / Linux)/ %USERPROFILE%\OpenBiliClaw(Windows),升级或卸载不会动它;旧安装包曾写入的 ~/Library/Application Support/OpenBiliClaw / %LOCALAPPDATA%\OpenBiliClaw 会在新版本首次启动时非覆盖拷贝回来。若 config.toml / config.local.toml 损坏导致启动失败,桌面包会把坏文件备份为 *.invalid 并重新生成默认配置,随后打开 /setup/ 重新初始化;data/ 不会被删除。

⚠️ macOS 安全阻挡(应用尚未签名 / 公证):

  • 当前 Release 是 ad-hoc signed、未 notarized。首次打开安装助手或应用时如果提示“无法验证开发者”或“未经安全验证”,请右键 / Control-click 对应项目 →「打开」→ 在弹窗里再点「打开」;也可以到「系统设置 → 隐私与安全性」点击「仍要打开」。

  • 如果提示“OpenBiliClaw.app 已损坏,无法打开。您应该将它移到废纸篓”,通常是下载隔离属性导致。确认包来自本项目 Releases 后运行:

    APP="/Applications/OpenBiliClaw.app"
    xattr -dr com.apple.quarantine "$APP"
    

    然后再次打开应用。

  • Windows:SmartScreen 弹窗点「更多信息 → 仍要运行」。

这是实验性预发布:未签名、随后端版本滚动更新,适合只想最快试用、不碰命令行的人。要二次开发 / 改源码请用下面的方式 B。

方式 B:AI 一句话部署(可定制 / 可改源码)

把下面整句粘给 Claude Code、Codex CLI、Cursor、Windsurf 或其他 AI 编程助手即可。括号里的限制是给 AI 助手看的,你不用理解。

请按照 https://raw.githubusercontent.com/whiteguo233/OpenBiliClaw/main/docs/agent-install.md 的说明帮我部署 OpenBiliClaw 后端(务必用 Bash 的 curl 下载这个文档,不要用 WebFetch — 会丢关键指令)

AI 助手会克隆仓库、安装依赖、用局域网可访问的默认绑定启动后端(0.0.0.0:8420)、做健康检查,并问几个有默认值的问题。自动初始化前会真实验证全局 LLM 实例链和独立 embedding 服务;有一个不通就先停下让你修配置。小红书、抖音、YouTube、X、知乎、Reddit、Linux.do、Bangumi、V2EX、微博与 GitHub 信号只有你明确同意才会进入初始画像;微博个人事件需要已登录微博浏览器和扩展,Bangumi / GitHub 则需公开用户名或各自可选令牌解析出的身份。三者的公开发现仍可匿名进行。

源码安装默认不编译 Tailnet helper。只有用户明确需要 Android / iOS 原生 App 跨网络访问时,安装 Go 1.26.6 并在 checkout 中运行 openbiliclaw tailnet build-helper、openbiliclaw tailnet enable,然后 完整重启;只在局域网使用不需要这一步。Docker 首版镜像不内置该 helper。

Chrome Web Store / AMO 发布包默认只声明本机后端权限。让插件连接局域网另一台机器或远程域名时,在设置里选择协议并填写地址,浏览器会请求该 scheme://host/* 的可选权限;WebExtension host permission 无法跨浏览器限定端口,但实际请求仍固定到配置端口。公网地址强制 HTTPS。后端需先用 ext-key generate 和 ext-key enable 开启默认关闭的设备认证。

有公网域名时,最短路径是叠加 docker-compose.https.yml,由 Caddy 自动申请和续期证书;PC、手机和插件共用 https://<域名>。命令与安全门禁见 HTTPS 部署指南。

3. 在同一个浏览器登录内容平台

默认登录 B 站 并勾选 B 站来源即可生成第一版画像和推荐;如果不想接 B 站,也可以改勾已登录的小红书 / 抖音 / YouTube / X / 知乎 / Reddit / Linux.do / V2EX,或选择 Bangumi / GitHub 并填写公开用户名。至少保留一个能拉到画像信号的来源;未填身份的 Bangumi / GitHub 仍可公开 discovery,但不能单独完成画像初始化。

4. 打开桌面端或移动端 Web

后端启动后会同时托管桌面端和移动端 Web,都只调用本地 API,不做 Cookie 同步或平台登录。

openbiliclaw start
  • 桌面端:浏览器直接访问 http://127.0.0.1:8420/web(或 http://127.0.0.1:8420/,自动跳转)。大屏两栏布局,推荐流、30 天历史、画像、聊天、消息和设置全在一页。
  • 移动端:点击插件顶部的手机图标扫二维码,或手动输入 http://<电脑局域网 IP>:8420/m/。适合手机上刷推荐、回看 30 天历史、看画像和与阿B聊天。
  • Flutter 原生客户端:从 Latest Release 下载 Android APK(新机型选 arm64-v8a,老设备选 armeabi-v7a)直接安装,或下载 iOS 未签名 IPA 用个人 Apple 账号重签;装好后右上角设置里填后端 IP / 端口即可连接同一后端。局域网仍填电脑 IP;跨网络时 Android / iOS App 已内嵌 tsnet,可配合电脑端默认关闭的应用内 Tailnet 使用,两端加入同一 tailnet 后走 MagicDNS / Tailnet IP,无需电脑全局开 Tailscale,并建议开启应用密码。这里不包括该仓库的 Web / Linux / macOS / Windows Flutter 构建。

首次运行 openbiliclaw init 时会询问是否允许局域网访问(默认 Y)。如果选了 N 或想改回来,编辑 config.toml 的 [api].host(0.0.0.0 = 通过可用的 IPv4 / IPv6 局域网访问,127.0.0.1 = 仅本机)。二维码优先使用 IPv4;仅有 IPv6 时会自动生成带方括号的 IPv6 地址。

打开 /m/ 后可以把手机页面保存成桌面快捷入口:iPhone / iPad 用 Safari 的「分享 → 添加到主屏幕」;Android Chrome / Chromium 浏览器用菜单里的「安装应用」或「添加到主屏幕」。局域网 HTTP 在部分 Android 浏览器上可能只生成快捷方式;如果想要更稳定的完整 PWA 安装提示,建议在可信环境里用 HTTPS 反代访问本机后端。

页面底部收敛为「推荐 / 内容库 / 画像 / 对话」四个一级 Tab。内容库内再按「稍后再看 / 收藏 / 历史记录」切换:前两项管理保存列表;历史记录按「主动点开过 / 出现过但没点开 / 最近移除」分页展示近 30 天内容,同一内容的多个移除原因会一起显示,收藏和稍后再看可以分别恢复。旧的稍后、收藏和历史直达链接会自动迁移到对应内容库子项。

不用 AI 助手:直接跑一句话安装脚本

macOS / Linux / WSL2(Bash):

curl -fsSL https://raw.githubusercontent.com/whiteguo233/OpenBiliClaw/main/scripts/install.sh | bash

Windows 原生(PowerShell,不需要 Docker / WSL2):

[Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls12; iwr https://raw.githubusercontent.com/whiteguo233/OpenBiliClaw/main/scripts/install.ps1 -UseBasicParsing | iex

脚本依赖 git 和 Python 3.11+。它会自动克隆仓库,然后先在终端向导里收集首选 LLM 实例、embedding、B 站 Cookie,以及小红书 / 抖音 / YouTube 的 opt-in 决策,再安装依赖、启动后端和健康检查;确认齐全后会先验证全局 LLM 实例链和 embedding 服务都能真实响应,再自动运行 init,完成画像生成和首轮发现。X / 知乎 / Reddit / Linux.do / Bangumi / V2EX / 微博 / GitHub 可在启动后的 /setup/ 或设置页显式开启;Linux.do、Bangumi、V2EX、微博与 GitHub 的公开 discovery 无需登录,微博个人初始化需要已登录微博浏览器和扩展,Bangumi / GitHub 个人初始化可填写公开用户名,GitHub PAT 仍为可选。不确定的选项直接回车或选默认。

高级:Docker 部署

适合已经安装 Docker 的用户,自带 Ollama embedding sidecar。预构建镜像无需克隆源码:

mkdir -p ~/openbiliclaw && cd ~/openbiliclaw
curl -fsSLO https://raw.githubusercontent.com/whiteguo233/OpenBiliClaw/main/docker-compose.prebuilt.yml
docker compose -f docker-compose.prebuilt.yml up -d
# 然后打开 http://127.0.0.1:8420/setup/ 完成初始化

也可以把下面这句粘给 AI 编程助手,走终端向导 + 自动 init:

请按照 https://raw.githubusercontent.com/whiteguo233/OpenBiliClaw/main/docs/docker-deployment.md 的说明帮我用 Docker Compose 部署 OpenBiliClaw 后端(务必用 Bash 的 curl 下载这个文档,不要用 WebFetch)

源码构建、升级与排查详见 Docker 部署指南。

高级:多源登录与插件链路

OpenBiliClaw 不保存你的平台密码,也不替你绕过登录。需登录的来源复用当前浏览器里的会话,匿名来源只读公开内容;两者都不会越过你能访问的边界。

源登录方式不登录的影响
B 站在装了插件的浏览器打开 https://www.bilibili.com 正常登录拉不到观看历史 / 收藏 / 关注,画像会明显变弱
小红书在同一浏览器打开 https://www.xiaohongshu.com 正常登录小红书 discovery 和详情抓取不可用
抖音在同一浏览器打开 https://www.douyin.com 正常登录init --yes-douyin、fetch-douyin 和 discover --source douyin 的 search / hot / feed 可能返回 0 条
YouTube在同一浏览器打开 https://www.youtube.com 正常登录init --yes-youtube 和 fetch-youtube 可能返回 0 条;仍可用 import-youtube 从 Takeout 导入
X(Twitter)在同一浏览器打开 https://x.com 正常登录init --yes-x、fetch-x 和 X discovery 拉不到数据(服务端重放需要 auth_token+ct0,登录后扩展自动同步)
知乎在同一浏览器打开 https://www.zhihu.com 正常登录init --yes-zhihu、fetch-zhihu、discover --source zhihu 和 discover-zhihu* 拉不到数据
Reddit在同一浏览器打开 https://www.reddit.com 正常登录;插件会同步 reddit_session 给日常 discovery 的 rdt-cli,rdt login 仅作为插件不可用时的 fallbackfetch-reddit --mode bootstrap 拉不到初始化信号;rdt credential 未同步时 rdt 路径会 fallback 到插件任务
Linux.do在同一浏览器打开 https://linux.do 正常登录;公开 discovery 无需登录未登录时 fetch-linuxdo 和 init --yes-linuxdo 拉不到书签 / 点赞 / 阅读记录,但 search / hot / feed / creator / related discovery 仍可用
Bangumi无需登录;可选填公开用户名读取公开收藏,或填个人令牌读取私密收藏;插件在 bgm.tv / bangumi.tv 仅做账号身份自动识别(不读 Cookie、不采集浏览行为)未填用户名时不能把 Bangumi 作为唯一画像初始化来源,但匿名 search / ranked / 按日期 discovery 仍可用
V2EX无需登录;可选填 PAT;guided init / 增量任务在扩展中读取本人主题、本人回复、收藏主题和收藏 Node 的公开渲染字段未连接扩展时仍可匿名 search / node / tab / hot / latest discovery;收藏 scope 需要实际登录态
GitHub无需登录;可选填公开用户名读取公开 starred repositories,PAT 只用于提额和 /user 身份核验未填身份时仍可匿名 search / ranked / latest discovery,但不能把 GitHub 作为唯一画像初始化来源;不读取浏览器 Cookie

小红书、抖音、YouTube、知乎和 Linux.do 走 Chrome 插件任务链路,Reddit 日常 discovery 默认走随后端安装的 rdt-cli、初始化信号仍走插件,X 的 discovery 走服务端 cookie 重放;GitHub 则始终由后端官方 REST client 只读公开 repository,不进入插件任务。Linux.do 上游请求全部在真实站点 tab 内以同源 GET 执行,_t 只作登录布尔,Cookie 值和原始响应不会上传。Reddit/X、YouTube、小红书、抖音与知乎原生保存 executor 已 6/6 接入并通过 fixture 测试;2026-07-14 的真实账号回归中,六平台 favorite 与 watch-later/fallback 均得到 synced/already_synced。当前知乎收藏页已使用全局 收藏 / 已收藏 切换,目标文案为 知乎收藏;已收藏初始态和二次验证都严格只读,扩展不会重复点击保存。Linux.do 与 GitHub 不提供任何站内写回。[sources.browser].cdp_url 只保留给通用 Web / 自定义网页源的浏览器抓取场景。

高级:本地 embedding / Ollama

如果你不想给 embedding 单独配置 API Key,或担心远程 embedding 配额,可以装一次 Ollama 后使用本地 bge-m3:

# macOS
# 安装并启动官方 Ollama.app(会创建 ollama 命令行入口)
open https://ollama.com/download/mac

# Linux
curl -fsSL https://ollama.com/install.sh | sh && ollama serve &

macOS / Windows 用户可以从 ollama.com/download 安装官方 App。启动 Ollama 后运行:

uv run openbiliclaw setup-embedding

向导会自动拉取 bge-m3(约 1.1GB,CPU 可跑)并写入配置。

高级:手动安装与 discovery 调试

人类维护者可以参考 docs/agent-install.md(给智能体看的精简契约)和 docs/agent-deployment.md(详细排查说明)。

手动安装

# 克隆项目
git clone https://github.com/whiteguo233/OpenBiliClaw.git
cd OpenBiliClaw

# 使用 uv (推荐)
uv sync

# 或使用 pip
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"

手动配置

# 复制配置模板
cp config.example.toml config.toml

# 编辑配置(设置 LLM API Key 等)
vim config.toml

运行

# 一键初始化(拉取历史 · 生成画像 · 首轮发现)
openbiliclaw init

# 可选:启用本地 Ollama 作为独立 embedding provider(无需额外 API Key)
openbiliclaw setup-embedding

# 手动触发内容发现
openbiliclaw discover

# 可选:抖音内容发现(需先启用 [sources.douyin];search / hot / feed 从首页 DOM 操作触发)
openbiliclaw discover --source douyin

# 可选:Linux.do 书签 / 点赞 / 阅读记录只读 smoke(默认不写 memory)
openbiliclaw fetch-linuxdo

# 可选:Linux.do 正式发现(search / hot / feed / creator / related)
openbiliclaw discover-linuxdo --limit 30
# 等价:openbiliclaw discover --source linuxdo --limit 30

# 可选:独立调试抖音 search / hot / feed 召回
openbiliclaw discover-douyin --keyword 机械键盘 --source search,feed --no-cache --no-evaluate

# 可选:微博公开 discovery(需先启用 [sources.weibo];公开读取不写画像)
openbiliclaw discover --source weibo
openbiliclaw discover-weibo 机械键盘
openbiliclaw discover-weibo-hot
openbiliclaw discover-weibo-creator 1234567890

# 查看推荐
openbiliclaw recommend

# 查看用户画像
openbiliclaw profile

开发者也可以从源码构建插件:

cd extension
npm install
npm run package

🤖 接入 OpenClaw / Hermes / WorkBuddy Agent

OpenBiliClaw 仓库内置了一个 workspace skill 和版本化的 Agent Bridge。把仓库挂到任何支持 skill 或本地 JSON CLI 的 Agent 宿主(OpenClaw / Hermes / WorkBuddy / Claude Code / Codex CLI / Cursor 等),宿主就能直接调用你本机上的 OpenBiliClaw。

接入之后能干什么

  • ✨ 主动推荐 — 系统在后台持续发现内容,遇到高分惊喜时通过 WebSocket 主动推送给 OpenClaw,OpenClaw 再转述给你——你不需要开口问
  • 🔮 主动追问兴趣 — 系统猜测你可能对某个方向感兴趣,支持 confirm / reject / defer / chat 四态反馈,画像自动更新
  • 🧭 主动确认避雷 — 系统也会确认你可能想避开的内容形态,支持四态反馈;只有确认后才写入过滤偏好
  • 💬 苏格拉底式对话 — 带 durable turn_id 的多轮对话,重试或切换宿主后仍可读取历史
  • 📖 读当前灵魂画像 — MBTI、核心特质、深层需求、兴趣领域
  • 🎯 按需拉多源推荐 — 支持平台范围、换一批、追加、库存可用量和完整内容元数据
  • 💬 把反馈写回学习闭环 — 推荐和惊喜卡片反馈都支持 durable 幂等
  • 💾 本地优先保存 — 收藏 / 稍后再看先落本地;外部同步必须显式授权
  • 🔄 同步 B 站账号行为 — 拉历史、收藏、关注等长期信号,注入记忆系统

一句话让 OpenClaw 完成接入

把下面这段粘给 OpenClaw(或 Claude Code / Codex CLI / Cursor),它会自动读指南并完成接入:

请按照 https://raw.githubusercontent.com/whiteguo233/OpenBiliClaw/main/docs/openclaw-quickstart.md 的说明帮我把当前仓库接入 Agent Bridge(目标宿主是 OpenClaw;务必用 Bash 的 curl 下载这个文档,不要用 WebFetch — 会丢关键指令)

用户使用示例

接入后不只是"你问它答"——系统会主动找你。以下是两个最核心的场景:

场景一:系统主动推一条惊喜内容

OpenClaw 在后台开着 listen,某次 refresh 后系统发现了一条高分内容:

OpenClaw(收到 WebSocket 推送 delight.candidate,主动找你):

刚发现一条你可能会意外喜欢的: 《为什么说回县城你也躺不平》 — 县域经济的明斯基时刻。你最近一直在盯地缘政治和宏观债务,这条用硬核推演把土地财政和债务周期的齿轮咬合讲清楚了。[BV1KMwuzdEcB]

要不要看看?

你:"这条非常到位。"

OpenClaw(内部执行 submit-feedback --recommendation-id 4268 --feedback-type like --request-id feedback-4268-like-1,重试复用该 ID)

你没有开口要推荐——是系统主动捅过来的。

场景二:系统主动追问你的兴趣

OpenClaw 收到 interest.probe 事件(或主动拉取 next-probe),发现有一个猜测兴趣假设待确认:

OpenClaw(主动找你):

我从你最近的轨迹里嗅到你可能对【建筑美学】(比如:参数化设计、混凝土美学)感兴趣——你最近看了很多关于结构和空间的内容。这个方向你自己认不认?

你:"嗯对,最近在看很多参数化设计的东西,安藤忠雄那种清水混凝土的美感很戳我。"

OpenClaw(内部执行 chat --message "嗯对,最近在看很多参数化设计的东西……",返回苏格拉底式追问):

你说的这个方向我有个猜测——你是不是其实更在意底层结构而不只是结论?安藤忠雄那种用最少元素构建最大张力的方式,跟你平时看大模型逻辑时追求的"把齿轮咬合讲清楚"好像是同一种审美驱动。你觉得呢?

对话内容自动回写进灵魂画像——下一轮推荐就会把建筑美学纳入正式兴趣,搜索策略也会开始往这个方向发力。

场景三:你也可以主动要推荐

当然,传统的"你问→它答"也完全支持:

你:"给我推三条今天值得看的 B 站内容。"

OpenClaw(内部执行 recommend --limit 3,整理后回复)

整个闭环都是本地的——Agent 宿主只是调 CLI 桥接,画像和数据仍留在你自己的 SQLite 文件里,一条都不会上云。

📖 完整命令参考与常见问题,见 Agent Bridge 接入指南 和 能力说明。宿主启动后先执行 capabilities,不要缓存旧的功能子集。

✨ 核心特性

  • 🧠 五层灵魂画像 — 事件→偏好→觉察→洞察→灵魂,推断 MBTI、认知风格和深层需求(详解)
  • 🔮 兴趣探针 — 基于心理学桥接主动猜测你可能喜欢的未知领域,猜对升级为正式兴趣,猜错安静退出
  • 🧭 避雷探针 — 主动确认你想避开的内容形态和风格边界,确认后才写入过滤偏好
  • 🌐 跨平台内容源 — B 站 / 小红书 / 抖音 / YouTube / X / 知乎 / Reddit / Linux.do / Bangumi / V2EX / 微博 / GitHub / 通用 Web,兴趣不再被单一平台割裂(详解)
  • 🎯 智能多样性 — 主题配额 + 跨平台混排 + 小源保护,告别「一刷都是 AI」
  • ⚡ 「换一批」瞬间响应且默认去重 — reshuffle ~0.6s;当前卡、推荐历史和持久化已看账本三层排除,连续刷不卡顿也不靠“忽略当前”开关
  • 💬 有温度的推荐理由 — 像朋友一样解释为什么你会喜欢,而不是「因为你看过类似视频」
  • 🔄 持续学习 — 苏格拉底式对话 + 行为分析 + 反馈即时生效,越用越懂你
  • ⭐ 本地优先收藏 / 稍后看 — 推荐卡先写本地 SQLite,自动同步默认关闭;桌面 Web 刷新后首屏就显示保存数量徽标;B站和六个扩展平台均支持收藏与原生稍后看/收藏回退,2026-07-14 七平台两类动作真实账号回归均为 synced/already_synced
  • 🕘 30 天内容历史 — 插件、桌面与移动端统一显示点开过、出现未点和最近移除;按页懒加载封面,移除的本地收藏 / 稍后看可一键恢复
  • 🧩 浏览器插件 — Chrome / Edge / Brave / Arc / Firefox / Safari,侧边栏推荐 + 跨站行为采集,装上就能用
  • 📱 Flutter 原生客户端 — 独立仓库 OpenBiliClaw-mobile,Android / iOS / Web / Linux / macOS / Windows 连接同一本地后端;B 站封面 CDN 直连省两跳
  • 🛜 应用内 Tailnet 远程访问 — OpenBiliClaw-mobile Android / iOS 原生 App 与电脑端各自内嵌 tsnet,非局域网也能走用户自己的 tailnet 连接;不支持其 Web / 桌面 Flutter 构建,电脑无需系统 Tailscale,入口默认关闭且无公网 Funnel
  • 🚀 图形化引导初始化 — 安装包 /setup/、桌面 Web 和插件都能点一下完成初始化,不碰命令行
  • 📦 跨机器迁移 — 桌面配置页一键导出 / 导入可移植配置、SQLite、画像、Cookie 与图片缓存;导入先校验暂存,可查询 / 取消,重启后带回滚副本应用。.obcbackup 含明文敏感信息,但不含源机 API 登录密码 / 会话签名密钥或扩展设备 key
  • 🔬 自动化评测优化 — 5 个模块各带 LLM-as-judge 自优化循环,prompt 质量随轮次自动提升
  • 🔒 完全私有 — SQLite、配置、画像与缓存都留在本机,LLM 用你自己的 Key,每个实例只为你一个人构建
  • 🔌 本地 embedding — 可选 Ollama + bge-m3,CPU 即可,无需额外 API Key
  • 🔧 完全可控 — 同类型 LLM 可配置多个独立渠道,拖拽全局 / 模块故障切换链;也可直接编辑画像、写自定义 Skill

🏛️ 架构概览

推荐交互:主 API → 默认独立推荐进程 → 当前 SQLite 候选 → 完整排序 → 原子提交 → 卡片 + 总量/平台库存;主 API 桥接库存事件,后台补货由有客户端时的库存观察任务同步。

完整的架构总览 ASCII 图(runtime 并发闸门、Agent 编排层、多源适配、发现 / 推荐 / 保存链路)已拆分到单独文档,避免 README 过长:

发布日期偏好:[sources.<name>].recommendation_date_* 按来源配置 → 发现阶段 LLM 评估前硬过滤范围外候选 → 有效库存 → PoolCurator → 范围外软降分 / 严格 serving 忽略(候选保留);严格模式下推 B 站搜索边界

远程 Android / iOS App:App(内嵌 tsnet)→ 用户 tailnet → 电脑端 Go tsnet helper → 127.0.0.1:<有效 server port> → FastAPI;入网控制流为 本机设置页 → PUT /api/config(凭据只写)→ 私有单次暂存 → stdin → helper。有效端口通常为 [api].port,也跟随启动参数 / 桌面 OPENBILICLAW_PORT 覆盖;入口默认关闭,电脑无需系统 Tailscale,无 Funnel/Serve,节点身份和暂存凭据都不进入迁移包。

📖 架构总览图

可选视觉与弹幕预热

开启 [discovery].keyframe_enabled 时,只要多模态 embedding 可用,系统也会构建关键帧与 P1 共用的视觉质心;P1 封面 bonus 仍只由 visual_profile_enabled 控制。关键帧按全局采样并把 采样算法、keyframe_max_frames、embedding fingerprint 和维度写入缓存 provenance;换模型或 采样配置会安全重建。partial 关键帧结果携带稳定 sampled-slot,成功槽位可先入缓存但不落完成戳; 只有确认 no-data 或完整采样且所有 embedding 成功才完成,失败槽位保留下轮重试资格。

keyframe_fetch_limit、danmaku_fetch_limit 和 danmaku_max_chars 同时受配置文件与配置 API 范围校验;弹幕摘要按完整 danmaku_max_chars 做 document embedding,不静默截成固定前缀。 跨平台视觉 bonus 以 0 为固定点;多平台正负两侧对齐到当前全局观测极值并受组合 cap 限制,单平台不放大绝对幅度,0 / 缺失保持 0。完整契约见 docs/modules/recommendation.md 与 docs/architecture.md。

远程扩展连接采用显式、默认关闭的设备认证:ext-key generate → 配置仅存摘要 → /api/auth/extension-token 换短会话;HTTP 使用 Bearer Header,WebSocket / 图片代理仅携带短会话 query。

公网域名的 Docker 部署可叠加默认关闭的 Caddy HTTPS overlay:自动 申请 / 续期受信证书,通过共享 loopback 代理 REST 与 WebSocket,并把宿主机 8420 收紧为 仅本机可达。可信局域网 / 自管环境仍可选择内置 TLS Proxy:精确校验 HTTPS Origin/Host, 并为本地 CA 证书管理显式 SAN;无远程 SAN 时证书只适合 localhost。两种入口互斥,默认 HTTP 路径完全不变。

完整架构细节(runtime 状态机、候选池计数、画像覆盖层等)见 架构设计 与 可视化架构图。

内容发现引擎

多源适配架构——通过 SourceAdapter 协议统一接入不同平台,每个平台有自己的发现方式:

来源发现方式取数方式
B 站搜索 · 趋势 · 关联链 · 跨域探索后端 WBI 签名 API 直连,降级时插件真实搜索页兜底
小红书被动收集 · 搜索 · 创作者订阅 · 初始化导入插件在已登录页面读取,零后端爬取
抖音初始化导入 · 搜索 · 热点 · 推荐流CLI/daemon 共用正式 producer,插件后台 tab 模拟 DOM 操作,候选统一进入待评估池
YouTube初始化导入 · Takeout 离线导入 · 搜索 / 热门 / 频道插件读画像信号,日常发现后端直连补池
X(Twitter)初始化导入 · 搜索 · For-You · 关注作者discovery 使用服务端只读 cookie 重放;原生书签 executor 已接入但未实号验证
知乎初始化导入 · 搜索 · 热榜 · 推荐 · 作者 · 相关插件在已登录 tab 内读取,返回文字卡片
Reddit初始化导入 · 搜索 · 热门 · Subreddit · 相关discovery 默认 rdt-cli;Saved executor 已接入但未实号验证
Linux.do书签 / 点赞 / 阅读记录初始化 · 搜索 · 热门 · 最新 · 作者 · 相关插件在真实 linux.do 任务 tab 内执行同源只读 GET;公开发现无需登录,不上传 Cookie 或原始响应
Bangumi公开收藏初始化 · 搜索 · 排名 · 按日期浏览官方匿名只读 API;无需 Cookie/token,日期结果可能含未播条目
V2EX搜索 · Node · Tab · 热门 · 最新官方匿名 API / JSON Feed;PAT 可选增强 API 2.0,Topic 为无封面文字卡
GitHubstarred repositories 初始化 · 搜索 · 排名 · 最新官方 REST API;匿名可用、PAT 可选,强制只读公开 repository,无封面文字卡
通用 Web浏览器 + LLM 抽取适配任意网页

发现之后的统一流程:

  • 安全取数 — 后端不代登录、不爬你看不到的内容;需要账号态的来源复用浏览器已有会话,GitHub 等公开 API 来源只读公开数据。首轮画像信号只在你点「开始初始化」后按所选来源拉取。账号周期回拉默认关闭;GitHub 明确采用 init-and-on-demand,不加入扩展周期任务。抖音仍额外默认关闭,Linux.do 任务只允许 GET,_t 仅作布尔登录提示。
  • 连续统一评估 — 各来源原始候选进入同一待评估池,由共享 evaluator 结合灵魂画像、正文和近期负反馈批量打分;默认 3×30 worker 任一完成即补位,调度只计 durable 库存,串行 admission 按实时 headroom 封顶。可选 embedding 预过滤默认先 shadow 观测,确认无误后才 enforce 跳过明显低相似候选;learned scorer 也先用 shadow 与完整 LLM 做隐私安全对照,通过只读门禁后才人工启用 hybrid relevance,当前不减少 LLM 调用。
  • 多样性选择 — 平台配额 → 主题去重 → 风格均衡 → 跨平台混排 → 数量封顶;开箱只启用 B 站,其余平台在设置里显式打开。

各平台任务链路、候选池计数、fallback 策略等完整机制见 内容发现引擎文档。

灵魂引擎

从用户行为中推断:

  • 人格画像 — 自然语言描述的用户画像
  • MBTI — 四维度 + 置信度
  • 认知风格 — 信息处理偏好
  • 深层需求 — 心理层面的内容驱动力
  • 猜测兴趣 — 系统推测的潜在兴趣方向(分子料理、建筑美学、制表工艺...)

🏗️ 项目结构

OpenBiliClaw/
├── src/openbiliclaw/          # Python 后端核心
│   ├── agent/                 # Agent 编排和 Skill 系统
│   ├── soul/                  # 用户灵魂引擎 (深度画像 · MBTI · 兴趣/避雷探针)
│   ├── memory/                # 多层网状记忆系统
│   ├── discovery/             # 内容发现引擎 (多源策略 · 待评估池 · 配额均分 · 多样性选择)
│   ├── recommendation/        # 推荐与表达引擎 (跨平台混排)
│   ├── sources/               # 多源适配层 (SourceAdapter 协议,含 GitHub 官方 API)
│   │   ├── bilibili_adapter   # B 站 (API 直连)
│   │   ├── bangumi_client     # Bangumi 官方匿名 v0 API 客户端
│   │   ├── bangumi            # Bangumi 条目 / 公开收藏归一化
│   │   ├── github_client      # GitHub 官方 REST API 客户端
│   │   ├── github             # Repository / starred event 归一化
│   │   ├── v2ex_client        # V2EX 匿名 API/Feed 与可选 PAT 客户端
│   │   ├── v2ex               # V2EX Topic 归一化
│   │   ├── xiaohongshu_adapter # 小红书 (扩展代理)
│   │   ├── xhs_tasks          # 小红书插件任务队列 / bootstrap_profile
│   │   ├── dy_tasks           # 抖音插件任务队列 / bootstrap_profile + search + hot + feed
│   │   ├── yt_tasks           # YouTube 插件任务队列 / bootstrap_profile
│   │   ├── zhihu_tasks        # 知乎插件任务队列 / bootstrap_events + search/hot/feed/creator/related
│   │   ├── reddit_tasks       # Reddit bootstrap 插件任务 / extension fallback discovery / rdt 默认 discovery helpers
│   │   ├── linuxdo_tasks      # Linux.do 同源只读 bootstrap / 五路 discovery 任务
│   │   └── web_adapter        # 通用 Web (Playwright + LLM)
│   ├── youtube/               # YouTube Takeout 离线导入解析
│   ├── api/                   # 本地 FastAPI (配置回滚 / 降级模式 / popup API)
│   ├── tls_proxy.py           # 默认关闭的 LAN/self-managed HTTPS 入口
│   ├── runtime/               # 后台刷新、feedback 合并、presence gate、CLI/桌面共享 autostart 对账、Ollama、降级 RuntimeContext
│   ├── bilibili/              # B 站接入层 (WBI 签名 · 速率控制)
│   ├── llm/                   # 多模型 LLM 适配 + 结构化 JSON 容错
│   └── storage/               # 数据存储层
├── extension/                 # Chrome/Firefox/Safari 插件(含 Linux.do / V2EX / 微博只读任务桥)
├── skills/                    # 内置 Skill 定义
├── docs/                      # 项目文档
└── tests/                     # 测试 (1900+)

原生移动客户端(Flutter,Android / iOS / Web / Linux / macOS / Windows)在独立仓库 OpenBiliClaw-mobile。

🛠️ 技术栈

模块技术
后端Python 3.11+
浏览器插件TypeScript + Chrome Extension (Manifest V3)
LLM同一 Provider 类型可建多个独立 Base URL / token / model 实例,并配置全局及模块有序降级链;首次迁移自动保留旧配置备份,config-export-legacy 可生成旧版副本;内置 Gemini / DeepSeek / OpenAI / Claude / OpenRouter / OrcaRouter / Ollama,兼容任意 OpenAI 协议服务;OpenAI 可实验性复用 Codex CLI ChatGPT OAuth(官方 Codex 传输)
B 站交互自研 API 客户端 (WBI 签名 · v_voucher 自动恢复 · 速率控制)
小红书交互扩展 DOM/state 元数据提取 + 插件任务调度;search / creator 在后台标签执行,search 用 MAIN-world 页面响应桥避开隐藏页虚拟 DOM 限制;仅滚动型初始化会前台打开 /explore 并点击页面 profile 入口(零后端爬取)
抖音交互扩展 DOM + MAIN-world 被动 fetch tap + 插件任务调度;初始化导入发布 / 收藏 / 点赞 / 关注信号,search / hot / feed discovery 从抖音首页模拟 DOM 操作触发加载,search/feed 被动收集页面响应 / 渲染结果,hot 可用热榜 group_id seed 走已登录页面 related fallback(零后端代登录)
YouTube 交互扩展 DOM 任务调度读取观看历史 / 订阅 / 点赞;Google Takeout 可离线导入旧数据
X 交互服务端 cookie 重放(默认安装内置 twitter-cli,只读且 lazy import);扩展捕获你在 x.com 的互动并同步 cookie;推文为纯文本卡片
知乎交互扩展任务调度在已登录浏览器内读取事件 smoke / 初始化画像信号和 search / hot / feed / creator / related 候选;回答 / 文章 / 问题为纯文本卡片
Reddit 交互默认安装内置 rdt-cli,读取 search / hot / subreddit / related 候选;插件自动同步 reddit_session 到 rdt credential,rdt login 仅作手动 fallback;rdt 未登录 / 不可用或显式选择 extension 时,扩展任务调度在已登录浏览器内读取 discovery;bootstrap saved/upvoted/subscribed 始终走插件;帖子 / 评论为纯文本卡片
Linux.do 交互普通页面使用统一行为 adapter;隔离任务 tab 只执行同源 GET,支持 search / hot / feed / creator / related 与 bookmarks / likes / read_history;只回传归一化字段或结构化错误,Cookie 和原始响应不上报
Bangumi 交互官方匿名只读 v0 API;search / ranked / 按日期浏览进入统一候选池,可选公开用户名读取公开收藏用于初始化;不收 Cookie/token,不做站内写回
V2EX 交互官方匿名 API / Feed;search / node / tab / hot / latest 进入统一候选池,可选 PAT 只读增强;扩展按需读取四个只读 bootstrap scope,心跳只回传登录布尔值;不发帖、不回复、不收藏、不关注 Node
GitHub 交互后端官方 REST API;匿名 search / ranked / latest 进入统一候选池,公开 starred repositories 可作为 favorite 初始化信号,PAT 可选且固定专用环境变量;无插件权限、Cookie、媒体或站内写入
可选 HTTPS公网域名使用固定版本 Caddy Docker overlay 自动管理证书;LAN/self-managed 使用 Python TLS Proxy + [tls] extra,本地 CA/SAN;默认关闭且两种入口互斥
存储SQLite + Embedding 向量索引
容器化Docker Compose (后端)
Agent 框架自研轻量框架

📖 文档

📜 更新日志

最新版本见上方 最近更新;完整历史见 docs/changelog.md。普通用户从 Latest Release 的 openbiliclaw-v* 聚合页下载插件包和可用桌面安装包;自动化频道 release 仍分别保留 backend-v*、extension-v*、desktop-v*。

🗺️ 后续规划

OpenBiliClaw 的目标是做你的全网个性化内容入口——从 B 站起步,已覆盖小红书、抖音、YouTube、X、知乎、Reddit、Linux.do、Bangumi、V2EX、微博、GitHub 与通用 Web,下一步:

  • 更多内容源 — 各类 BBS / 论坛与垂直社区;每个平台都遵循统一来源契约与验收门禁
  • 跨平台兴趣融合 — 你在 B 站看的机械键盘 + 小红书种草的咖啡器具 + 抖音点赞收藏的短视频偏好 + YouTube 长视频观看和订阅 + X 点赞收藏的资讯 = 一个完整的你。画像融合让推荐不再割裂
  • 更智能的发现 — 跨平台关联推荐("你在小红书关注了咖啡器具,B 站有个手冲咖啡纪录片你可能喜欢",或用抖音 feed 口味补足短视频兴趣)
  • 社区生态 — 用户自定义 SourceAdapter、共享发现策略、贡献平台适配器

🤝 贡献

欢迎贡献!请查看 开发指南 了解如何参与。

🙏 致谢

  • 感谢 @addtion99 在 #8 提出浏览器插件后端地址 / 端口可配置需求,并给出 popup 侧实现思路。
  • 感谢 @jiaobenhaimo 在 #53 贡献 Safari 扩展、稍后再看、YouTube 搬运检测、营销号过滤等功能设计与实现,其中 OR-join 去重修复和稍后再看功能已合入主线。
  • 感谢 @tangle111-design 在 #69 贡献 style_key 观看模式、推荐语气、B 站初始化和 LLM / 画像流程方面的功能探索;相关思路已拆分评审并选择性合入主线。
  • 感谢 @DongLanQwQ0 在 #102 贡献桌面 Web 侧栏折叠动画、delight 卡片拖拽死区、栈式 toast 通知等交互细节打磨,已合入主线。
  • 感谢 @DongLanQwQ0 在 #110 贡献桌面 Web 主题引擎 oklch 化重构,引入 --hue-primary 单一控制点与 12 色相可调拾色器、五级强调色阶与统一交互态,已合入主线。
  • 感谢 @wuwafly3 持续贡献多模态推荐能力:在 #100 中实现 DashScope(阿里百炼)多模态 embedding provider 与封面 image-only 向量,并在 #135 中进一步实现用户视觉画像(P1)、B 站弹幕语义(P2)、视频关键帧(P3)及跨平台视觉加权管线;主干在这些实现上完成契约加固、失败重试、配置界面与真实环境验收。
  • 感谢 @LHMQ878 在 #182 修复 agent_bootstrap 对引号键 TOML 实例段(如 [llm.instances."openai"])的 section 匹配,避免二次运行 bootstrap 时重复声明表导致 tomllib 解析失败,已合入主线。
  • 感谢 @Patrick5D 在 #179 贡献事件来源归属持久化(events.source_platform / content_id / source_confidence、统一来源解析优先级与 schema v6 增量迁移),为按平台撤回数据重建画像奠定数据基础;主干在此之上完成未知平台 slug 降级与 confidence 防升级加固,已合入主线。
  • 感谢 @OctoBored 在 #196 恢复 README 中/英文的实时 Star History 图表,替换已失效的静态徽章与临时提示;主干在合入时补齐了 URL 中的 &amp; 转义,已合入主线。

⭐ Star History

如果 OpenBiliClaw 帮你找回了对推荐流的控制权,点个 Star 是对「继续适配更多平台」最直接的投票。

Star History Chart

隐私速览

默认数据流向:浏览器插件 → 你配置的本地 OpenBiliClaw 后端 → 本机 SQLite。插件不会把数据发送到 OpenBiliClaw 开发者运营的服务器。Linux.do 的 _t 仅在浏览器内转换为登录布尔,Cookie 值、CSRF 数据和原始站点响应不上传。若你配置云端 LLM / embedding,相关内容会按你的配置发送给对应服务商。详见 隐私政策。 默认数据流向:浏览器插件 → 你配置的本地 OpenBiliClaw 后端 → 本机 SQLite / 数据文件。插件不会把数据发送到 OpenBiliClaw 开发者运营的服务器。若你配置云端 LLM / embedding,相关内容会按你的配置发送给对应服务商。你主动从配置页导出的 .obcbackup 可能包含模型 / 来源 API Key、Cookie、画像和历史,且没有加密;它会排除源机整段 API auth(密码、session、设备 key 等),但仍只能在可信设备间传递。详见 隐私政策。

📄 License

MIT

友情链接

友情链接

LINUX DO

Comments

Loading…

Similar plugins

dsh-openbiliclaw

by whiteguo233

OpenBiliClaw 是本地运行的跨平台个性化内容推荐 Agent,持续理解你的兴趣并主动找内容。本仓库是它的 DeepSeek Harness 插件:DSH 界面常驻第四栏(推荐/内容库/对话/画像/设置),注册 22 个 Agent Bridge 工具,让 Agent 也能读推荐、答探测、闭环学习。

Tools & CapabilitiesManifest valid

★ 52

BSD-3-Clause

JavaScript

Aug 21, 2026

dsh plugin --profile web add @openbiliclaw/dsh-plugin

by zhengjy01

Zhihu (知乎) for DeepSeek Harness: wraps the local pyzhihu-cli as 18 zhihu_* tools — 14 read-only (search, hot list, question, answer, user, feed, topic, notifications, collections) plus 4 publishing to

Tools & CapabilitiesManifest valid

★ 0

MIT

TypeScript

Sep 29, 2026

dsh plugin --profile web add @zhengjunyao/dsh-zhihu

by moxingovo

DeepSeek Harness plugin: Bilibili video search, metadata, and subtitle transcripts (bilibili_search / bilibili_video / bilibili_subtitles) · DeepSeek Harness 插件:B 站视频检索、元数据与字幕文稿,匿名可用,可选 SESSDATA 解锁登录字幕

Tools & CapabilitiesManifest valid

★ 5

MIT

TypeScript

Sep 30, 2026

dsh plugin --profile web add dsh-plugin-bilibili

Free web search for DeepSeek Harness: 13 engines (Bing/DuckDuckGo/AnySearch/SearXNG/Exa/Tavily/Keenable/Firecrawl/Parallel keyless; Perplexity/SerpBase/DeepSeek with key) + optional AnySearch key for higher quota + per-engine proxy + time filtering + platform search + web_fetch, with web settings UI.

Tools & CapabilitiesTerminal & ClientsManifest valid

★ 0

dsh plugin --profile web add @copylee/dsh-free-search

by ma-pony

AI 原生智能爬虫与 JavaScript 逆向工程平台,基于 DSH、Patchright/CDP 与独立语义运行时,从浏览器证据恢复参数生成逻辑并交付可验证 Solver。 | AI-native web scraping and JavaScript reverse-engineering platform powered by DSH, Patchright/CDP, and an ind

Tools & CapabilitiesManifest valid

★ 19

↓ 306/wk

JavaScript

Aug 19, 2026

dsh plugin --profile web add deepspider

by akash-digitavision

DeepSeek Harness bundle: Agent Reach skill - one-command internet reach for DSH agents (web, YouTube, GitHub, Twitter/X, Reddit, RSS, Exa search) via the Agent Reach CLI

Manifest valid

★ 0

MIT

JavaScript

Oct 8, 2026

dsh plugin --profile web add dsh-agent-reach