
Kato 是一个本地优先的小红书运营工作台,把 dashboard、容器内 Chromium、CDP 登录、REST API 和 MCP 兼容层打包进一个镜像。
半自动小红书运营工作台:发现 AI/效率工具相关帖子,快速入队,然后在本地看板里由你筛选、生成评论并确认发布点赞。
现在默认不启用定时任务。你从操作面板手动发起搜索入队;只有你选中队列项并点击“评论并发布”时,才会调用容器服务的发布接口。
推荐直接用一个容器跑完整 Kato:dashboard、容器内 Chromium、CDP、XHS browser service 和可选 MCP 兼容层都在同一个镜像里。
cp .env.example .env
docker compose up -d --build
打开:
http://localhost:4173
容器会同时暴露:
Dashboard: http://localhost:4173
XHS service REST: http://localhost:18060/api/v1/*
XHS service MCP: http://localhost:18060/mcp
CDP: http://127.0.0.1:9222/json
如果要本地 Node 开发,再使用:
npm install
cp .env.example .env
npm run init-db
npm run dashboard
打开看板后,先在“我的笔记库”录入你的真实小红书笔记,再手动发起搜索入队。队列里不合适的帖子直接跳过;合适的帖子可批量“评论并发布”。运行结果会输出到 output/runs/,包含 Markdown 和 CSV 两份队列。
Kato 内置自有的 XHS browser service,负责启动容器内 Chromium、暴露本机 CDP、提供 REST API,并保留一个轻量 /mcp 兼容层给 agent/MCP 客户端使用。它和 dashboard 在同一个镜像、同一个容器里:
docker compose up -d --build
Apple Silicon / ARM64 可以显式指定平台:
docker compose -f docker-compose.yml -f docker-compose.arm64.yml up -d --build
AMD64 服务器可以显式指定平台:
docker compose -f docker-compose.yml -f docker-compose.amd64.yml up -d --build
服务默认地址是:
http://localhost:18060/mcp
同一个容器也提供 REST API:
http://localhost:18060/api/v1/*
本地 Node 开发时创建配置:
cp xhs.config.example.json xhs.config.local.json
这个项目会映射这些工具:
search_feedsget_feed_detailpost_comment_to_feeddashboard 主路径使用 REST:搜索走 GET /api/v1/feeds/search,详情走 POST /api/v1/feeds/detail,评论发布走 POST /api/v1/feeds/comment,点赞走 POST /api/v1/feeds/like。/mcp 是兼容层,方便 agent/MCP 客户端调用同样能力。
评论发布只会在你从看板确认“评论并发布”,或显式运行 npm run publish -- --interaction-id <id> / --ids 1,2,3 后调用。不会调用收藏、验证码绕过等能力。
autoclaw-cc/xiaohongshu-mcp-skills 已作为交互契约参考:评论/互动必须先展示内容并等待用户确认,发布所需字段是 feed_id、xsec_token、content。
如果接入其他 MCP,可以从 xhs.config.example.json 开始,改成 stdio 或 http provider 并填写工具名。
开源说明:本仓库不再依赖无明确许可证的第三方 MCP 源码。
.gitignore和.dockerignore默认排除 cookies、素材、SQLite、运行输出以及历史mcp/xiaohongshu/source/目录。准备公开仓库前建议再走一遍 docs/open-source-readiness.md。
npm run dashboard
npm run run -- --slot manual --limit 30
npm run auth:cdp
npm run notes:import -- data/notes.csv
npm run publish -- --interaction-id 1
npm run mark -- --interaction-id 1 --status posted_by_user
npm test
如果小红书登录被二次验证、扫码安全确认或页面验证拦住,可以让 Kato 容器里的 Chromium 暴露 CDP,再由人通过 CDP/DevTools 接管:
docker compose up -d --build
npm run auth:cdp
Kato 容器会把浏览器 CDP 映射到本机:
http://127.0.0.1:9222/json
npm run auth:cdp 不会启动宿主机浏览器;它会请求 Kato 容器打开登录页,并等待容器内 Chromium 的 CDP 端口就绪。你在看板“浏览器接管”Tab 里扫码/完成验证后,登录态会保存到 mcp/xiaohongshu/data/cookies.json。
常用参数:
npm run auth:cdp -- --wait
npm run auth:cdp -- --wait --sync-cookies
npm run auth:cdp -- --restart
npm run auth:sync-cookies
如果是通过 CDP 手动操作完成登录,登录等待流程通常会自动保存 cookies。需要手动从容器 CDP 再导出一次时,运行:
npm run auth:sync-cookies
也可以在看板左侧“账号 / MCP”里点“打开浏览器接管”,完成验证后按需点“同步 CDP 登录态”。CDP 端口只绑定本机,不要把 9222 暴露到公网。
dashboard 额外提供稳定业务 API:
http://localhost:4173/api/v1/xhs/*
启动前设置本地 API token:
export XHS_API_TOKEN=change-me
npm run dashboard
调用示例:
curl -X POST http://localhost:4173/api/v1/xhs/posts/search \
-H "Content-Type: application/json" \
-H "X-API-Key: $XHS_API_TOKEN" \
-d '{"keywords":["AI工具"],"limit":10}'
接口覆盖登录状态、帖子搜索、详情、我的笔记同步、评论草稿、评论发布和点赞。发布/点赞必须传 confirm:true 和 idempotencyKey,重复 key 不会重复调用 XHS service。完整契约见 docs/public-xhs-api.md。
Kato 单镜像支持 linux/arm64 和 linux/amd64:
docker-compose.arm64.yml 使用 Debian Chromium,适合 Apple Silicon / ARM64。docker-compose.amd64.yml 同样使用 Debian Chromium,适合 AMD64 Linux 服务器。zh_CN.UTF-8 locale,并暴露本机 CDP 127.0.0.1:9222。如需发布单 tag 多架构镜像:
docker buildx build \
--platform linux/amd64,linux/arm64 \
-f Dockerfile \
-t ghcr.io/your-org/kato:latest \
--push \
.
启动本地看板:
npm run dashboard
打开:
http://localhost:4173
面板支持:
运行时不依赖 Codex。npm run dashboard 启动的是本地 Node 后端,它内部的 growth agent 会执行:
new 队列,不做前置相关性筛选。没有 active 笔记时,agent 会拒绝生成队列,避免后续产出无法关联你内容的泛泛评论。
npm test
npm run build
测试覆盖笔记库管理、本地 agent 前置检查、笔记导入、搜索入队、去重、评论草稿长度、posted_via_mcp 发布状态,以及 XHS browser service 搜索响应结构解析。
默认使用本地规则生成评论草稿,不需要外部 API。
如需使用火山方舟:
export COMMENT_PROVIDER=ark
export ARK_API_KEY=你的火山方舟APIKey
export ARK_MODEL=你的方舟推理接入点或模型ID
export ARK_RELEVANCE_MODEL=doubao-seed-2-0-mini-260215
export ARK_BASE_URL=https://ark.cn-beijing.volces.com/api/v3
npm run dashboard
API Key 只在本地后端进程读取,不会传到前端页面。
搜索入队不再调用模型筛选;模型只在你选择评论并发布时调用。
字段:
title,url,summary,keywords,scenarios,status
keywords 和 scenarios 使用 | 分隔。
newdraftedposted_by_userposted_via_mcpskipped