1. 从手动发笔记到 Qwen3 驱动的小红书自动发布链路
小红书内容运营最耗时的环节从来不是写文案,而是「写完文案 → 找图 → 排版 → 打开创作平台 → 上传 → 填标题 → 发布」这一整套重复动作。如果一天要发三条图文加一条视频,光是机械操作就能吃掉一个小时。我试过把 Qwen3 和 MCPs 串起来做自动发布,核心思路是:让 Qwen3 负责生成标题和正文,让 MCP 服务端负责操作浏览器完成上传和发布,中间用统一的 API 通道管理模型调用。
这套方案适合三类人:一是做小红书矩阵号、需要批量产出内容的运营;二是想学 MCP 协议落地、找一个真实可跑场景的开发者;三是已经在用 Cherry Studio 或 Claude Code 这类客户端、想把手里的模型能力接到实际业务流程里的同学。整个链路不需要你写复杂的爬虫,也不需要逆向平台接口,MCP 服务端通过浏览器自动化完成发布动作,Qwen3 通过标准 API 完成文案生成,两边各司其职。
先解释一下 MCPs 在这里的角色。MCP 全称 Model Context Protocol,你可以把它理解成「模型和外部工具之间的 USB 接口」。模型本身只会生成文本,它不知道怎么写文件、怎么开浏览器、怎么上传图片。MCP 服务端把这些能力封装成一个个 tool,模型在对话中决定调用哪个 tool、传什么参数,客户端负责执行。小红书发布 MCP 就是这样一个服务端,它暴露了create_note(图文笔记)和create_video_note(视频笔记)两个工具,模型只要生成标题、正文、图片路径或视频路径,剩下的浏览器操作全由 MCP 完成。
Qwen3 在这里承担的是「内容大脑」。Qwen3-235B-A22B 是 MoE 架构,推理时只激活部分参数,所以在保持生成质量的同时调用成本可控。它支持 thinking 模式,对于「帮我写一篇小红书风格的种草文案」这类需要一定结构化的任务,表现比通用对话模型更稳。你可以通过 TaoToken 的统一 API 通道调用 Qwen3,也可以接其他模型,关键是客户端要能同时挂载模型 API 和 MCP 服务端。
整条链路的执行顺序是这样的:你在客户端输入一句需求,比如「写一篇介绍 Qwen3 的小红书笔记并配图发布」;Qwen3 先调用搜索类 MCP 收集素材,再生成标题和正文;然后调用文生图 MCP 生成配图;最后调用小红书发布 MCP,把标题、正文、图片路径传进去,MCP 拉起浏览器完成发布。整个过程你只需要在第一次登录小红书时输入一次验证码,之后 cookie 会保存在本地,后续发布全自动。
这里有个容易踩的坑:很多人以为 MCP 服务端是「云端服务」,其实小红书发布 MCP 是跑在你本地的 stdio 进程,它通过 puppeteer 控制本地 Chrome。所以你的电脑上必须装好 Node.js、Python、uv 和 chromedriver,缺一个都会在启动时报错。下一节先把 TaoToken 的 API 通道配好,再进入具体的 MCP 配置。
2. TaoToken 前置配置:统一 Key 与 API 通道管理
在配 MCP 之前,先把模型调用通道理顺。为什么要用 TaoToken 而不是直接在每个客户端里填不同厂商的 Key?因为这套链路里你至少会用到两类模型能力:一类是 Qwen3 这样的对话模型负责生成文案,另一类是文生图模型负责出配图。如果每个客户端、每个 MCP 都单独配 Key,管理成本会很高,换模型时还要改多处配置。TaoToken 提供统一的 API 入口,你只需要维护一个 Key,客户端里把 Base URL 指向https://taotoken.net/api,模型 ID 按需切换即可。
先拿 Key。打开https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=api-keys,登录后在控制台创建 API Key。建议给这个 Key 起一个能区分用途的名字,比如xhs-auto-publish,方便后续排查是哪个业务在调用。创建后立刻复制保存,页面刷新后完整 Key 不会再显示。
拿到 Key 之后,先做一次最小验证,确认通道可用。用 curl 发一个 chat completions 请求:
curl https://taotoken.net/api/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_TAOTOKEN_KEY" \ -d '{ "model": "Qwen/Qwen3-235B-A22B", "messages": [ {"role": "user", "content": "用一句话介绍小红书笔记的标题写法"} ], "max_tokens": 128 }'如果返回里有choices[0].message.content,说明 Key 和通道都正常。如果返回 401,先检查 Authorization 头里 Bearer 后面有没有多余空格;如果返回 model not found,说明模型 ID 写错了,Qwen3 在 TaoToken 上的 ID 通常带厂商前缀,具体以控制台模型列表为准。
接下来在 Cherry Studio 里配置模型。打开设置 → 模型服务 → 添加,类型选 OpenAI 兼容,Base URL 填https://taotoken.net/api,API Key 填刚才创建的 Key。模型列表里手动添加Qwen/Qwen3-235B-A22B,如果你还想用其他模型做对比,可以一并加上。配置完成后点「检查」,能拉到模型列表就说明通了。
这里要强调一个细节:TaoToken 的 Base URL 是https://taotoken.net/api,但实际请求路径是/api/v1/chat/completions。有些客户端会自动补/v1,有些不会。Cherry Studio 里填 Base URL 时如果它自动补了/v1,你就填https://taotoken.net/api;如果它不补,你要填到https://taotoken.net/api/v1。判断方法很简单:配置完发一条测试消息,报 404 就是路径没拼对,报 401 才是 Key 问题。
模型通道通了之后,再配 MCP 服务端。MCP 的配置和模型 API 是两套东西:模型 API 负责「生成内容」,MCP 负责「执行动作」。你可以在同一个客户端里同时挂载两者,Qwen3 生成完文案后,客户端会把 MCP 的 tool 列表一起发给模型,模型决定调用哪个 tool。所以下一步先装环境,再写 MCP 配置。
3. 可复制配置:MCP 服务端与客户端 settings 片段
这一节给出可以直接复制的配置。先装环境,Mac 上用 brew,Windows 上用对应的包管理器或手动安装。核心依赖是 Node.js(跑 puppeteer 和 inspector)、uv(跑 Python 写的 MCP 服务端)、chromedriver(控制 Chrome)。
# 安装 Node.js 和 uv brew install node brew install uv # 安装小红书发布 MCP 服务端 pip install xhs-mcp-server # 安装 chromedriver,版本要和本地 Chrome 匹配 npx @puppeteer/browsers install chromedriver@134.0.6998.166装完之后先做一次登录,这一步只需要做一次。登录命令需要传两个环境变量:手机号和 cookie 保存目录。cookie 目录建议用一个固定路径,比如/Users/yourname/xhs-cookies/,后面 MCP 配置里要填同一个路径。
env phone=YOUR_PHONE_NUMBER json_path=/Users/yourname/xhs-cookies/ \ uvx --from xhs_mcp_server@latest login运行后会自动弹出浏览器,打开小红书创作平台登录页,并向你的手机发送验证码。在终端输入验证码后,如果显示「使用cookies登录成功」,说明 cookie 已经保存到指定目录。如果提示「无效的cookies,已清理」,重新运行一次登录命令即可,通常是第一次 cookie 还没写完整。
登录成功后,写 MCP 客户端配置。以 Cherry Studio 为例,在 MCP 服务器页面添加一个 stdio 类型的服务端,配置如下:
{ "xhs-mcp-server": { "name": "xhs-mcp-server", "type": "stdio", "isActive": true, "command": "uvx", "args": ["xhs_mcp_server@latest"], "env": { "phone": "YOUR_PHONE_NUMBER", "json_path": "/Users/yourname/xhs-cookies/" } } }这段配置里三个关键点:command是uvx,不是python,因为 MCP 服务端是通过 uvx 拉起的;args里的xhs_mcp_server@latest保证每次拉最新版;env里的json_path必须和登录时用的目录完全一致,否则 MCP 找不到 cookie,发布时会重新要求登录。
如果你用的是 Claude Code 或 Cline,配置格式略有不同。Claude Code 的 MCP 配置在~/.claude/settings.json或项目级.mcp.json里,结构类似:
{ "mcpServers": { "xhs-mcp-server": { "command": "uvx", "args": ["xhs_mcp_server@latest"], "env": { "phone": "YOUR_PHONE_NUMBER", "json_path": "/Users/yourname/xhs-cookies/" } } } }Cline 的 MCP 配置在 VS Code 设置里,格式和 Cherry Studio 接近,注意type字段要写stdio。Codex 的auth.json不直接管 MCP,它管的是模型认证,MCP 配置在config.toml里:
[mcp_servers.xhs-mcp-server] command = "uvx" args = ["xhs_mcp_server@latest"] [mcp_servers.xhs-mcp-server.env] phone = "YOUR_PHONE_NUMBER" json_path = "/Users/yourname/xhs-cookies/"不管用哪个客户端,三件套必须齐全:Base URL(模型通道)、API Key(TaoToken 的 Key)、Model ID(比如Qwen/Qwen3-235B-A22B)。MCP 这边则是 command、args、env 三件套。两边都配好,模型才能既生成内容又调用工具。
配完 MCP 后,建议先用 inspector 单独调试一下发布工具,不要一上来就接模型。inspector 是 MCP 官方提供的调试界面,可以手动调用 tool 看参数和返回:
npx @modelcontextprotocol/inspector \ -e phone=YOUR_PHONE_NUMBER \ -e json_path=/Users/yourname/xhs-cookies/ \ uvx xhs_mcp_server@latest打开 inspector 界面后,在 List Tools 里能看到create_note和create_video_note。点create_note,填入标题、正文、图片路径(支持本地路径和网络 URL),点 Run Tool,后台会自动拉起浏览器完成发布。这一步能跑通,说明 MCP 服务端和 cookie 都没问题,接下来接模型就只是把参数生成交给 Qwen3。
4. 验证请求与成功结果:从提示词到自动发布
配置跑通后,进入实际验证。这一节给出 Qwen3 的提示词模板、图文发布和视频发布两条验证路径,以及每一步的预期结果。
先写提示词。小红书文案和普通文章不一样,标题要有钩子,正文要短句分段,结尾要带话题标签。给 Qwen3 的系统提示词可以这样写:
你是小红书内容运营助手。用户给你一个主题,你需要: 1. 生成一个不超过 20 字的标题,带情绪词或数字,比如「实测」「3个技巧」「别再」。 2. 生成正文,200-400 字,短句分段,每段不超过 3 行,适当用换行。 3. 结尾加 3-5 个话题标签,格式 #标签。 4. 如果需要配图,调用文生图工具生成一张 3:4 比例的图。 5. 文案和图片准备好后,调用小红书发布工具发布笔记。 输出时先给标题和正文,再执行工具调用。把这段提示词配到 Cherry Studio 的助手设置里,模型选Qwen/Qwen3-235B-A22B,MCP 列表里勾上xhs-mcp-server和文生图 MCP。然后在对话框输入:
帮我写一篇介绍 Qwen3 模型的小红书笔记,配一张科技感配图,然后发布。预期执行流程是这样的:Qwen3 先输出标题和正文,比如标题「Qwen3 实测:这个 MoE 模型有点东西」,正文分三段讲推理速度、中文表现、调用成本;然后模型决定调用文生图 MCP,传入 prompt「科技感,蓝色调,AI 芯片,3:4」;文生图 MCP 返回图片 URL 或本地路径;模型再把标题、正文、图片路径传给create_note;MCP 拉起浏览器,自动上传图片、填写标题正文、点击发布。发布成功后浏览器自动关闭,客户端里会显示 tool 调用返回的结果。
视频发布的验证路径类似,区别是调用create_video_note,参数里传视频路径。视频文件需要你提前准备好,或者用视频生成 MCP 生成。验证时先用一个短小的本地视频测试,确认发布链路通了,再换成 AI 生成的视频。
怎么判断发布成功?三个信号:一是客户端里create_note的返回结果包含成功状态或笔记 ID;二是浏览器在发布后自动关闭,没有停在发布页面;三是打开小红书创作平台,在「笔记管理」里能看到刚发布的笔记。如果浏览器停在发布页面没关,通常是某个字段没填对,比如图片路径不存在或标题超长。
这里有个实测经验:Qwen3 在 thinking 模式下有时会把「调用工具」的意图写在思考过程里,但实际没触发 tool call。解决办法是在提示词里明确写「必须调用工具完成发布,不要只输出文案」,或者在客户端里把 tool choice 设为 required。另外,文生图 MCP 返回的图片如果是网络 URL,create_note能直接接受;如果是本地路径,要确保路径是绝对路径,相对路径会找不到文件。
验证通过后,你可以把这条链路固化成一个「发布助手」助手,每次只需要输入主题,剩下的全自动。如果要批量发布,可以在客户端里连续发多个主题,Qwen3 会依次生成并发布,但注意发布间隔不要太短,避免触发平台频率限制。
5. 常见报错排查:401、local proxy failed、reading choices、OAuth
这一节对照真实报错给出排查路径。这些错误我在配置过程中基本都遇到过,按顺序排查能省不少时间。
401 Unauthorized:出现在模型 API 调用阶段。原因通常是 TaoToken Key 填错、Key 被删除、或者 Authorization 头格式不对。排查步骤:先用 curl 单独测 Key,确认https://taotoken.net/api/v1/chat/completions能返回结果;再检查客户端里 Base URL 有没有拼错,https://taotoken.net/api和https://taotoken.net/api/v1的区别要按客户端行为来;最后确认 Key 没有多余空格或换行。如果 curl 能通但客户端报 401,多半是客户端把 Key 存到了错误字段,重新填一次。
local proxy failed:出现在 MCP 服务端启动阶段。原因是 uvx 拉不起xhs_mcp_server,或者 chromedriver 版本和 Chrome 不匹配。排查步骤:先在终端手动运行uvx xhs_mcp_server@latest,看有没有报错;如果报 chromedriver 找不到,重新跑npx @puppeteer/browsers install chromedriver@134.0.6998.166,版本号要和你本地 Chrome 主版本一致;如果报 Python 依赖缺失,用pip install xhs-mcp-server重装。另外,json_path目录如果不存在,MCP 启动时也会失败,手动mkdir一下。
reading choices 报错:出现在模型返回解析阶段,典型报错是Cannot read properties of undefined (reading 'choices')。原因是模型 API 返回结构不是标准的 OpenAI 格式,或者请求根本没成功但客户端没处理好错误。排查步骤:先用 curl 看原始返回,确认有choices字段;如果返回的是错误信息,按错误信息排查;如果返回正常但客户端还报这个错,检查客户端版本,老版本 Cherry Studio 对非标准返回兼容性差,升级到最新版。
OAuth 相关报错:出现在 MCP 服务端需要认证时。小红书发布 MCP 本身不需要 OAuth,它用的是 cookie 登录。如果你看到 OAuth 报错,可能是误配了其他需要 OAuth 的 MCP,或者客户端把 stdio 类型的 MCP 当成了 SSE 类型。排查步骤:确认 MCP 配置里type是stdio,不是sse;确认command是uvx,不是npx;如果用的是远程 MCP,才需要 OAuth,本地发布 MCP 不需要。
发布时浏览器没反应:MCP 调用了但浏览器没拉起。原因是 cookie 失效或 chromedriver 没启动。排查步骤:重新跑一次登录命令,确认 cookie 有效;检查json_path目录里有没有 cookie 文件;如果 cookie 文件存在但发布失败,删掉 cookie 重新登录。另外,Mac 上如果 Chrome 正在运行,puppeteer 可能无法启动新的实例,先退出 Chrome 再试。
图片上传失败:create_note返回图片相关错误。原因是图片路径不对或格式不支持。排查步骤:确认图片是绝对路径,文件确实存在;确认格式是 jpg/png,小红书不支持 webp;如果是网络 URL,确认 URL 能直接访问,没有防盗链。本地图片建议放在一个固定目录,路径里不要有中文和空格。
排查时有个通用方法:把 MCP 服务端的日志级别调高,或者在终端手动运行 MCP 看输出。Cherry Studio 的 MCP 日志在设置里能看,Claude Code 的日志在~/.claude/logs下。日志里通常会直接告诉你哪一步失败,比猜快得多。
6. 把链路固化下来:长期编码与 Agent 化发布
链路跑通一次不难,难的是稳定跑一百次。这一节讲怎么把自动发布固化成一个可复用的 Agent 流程,以及长期使用时的几个实用技巧。
第一个技巧是把提示词模板化。不要每次都在对话框里手写需求,而是把系统提示词、发布规则、话题标签库写成一个固定的助手配置。Cherry Studio 支持保存助手,Claude Code 支持自定义 slash command,Cline 支持自定义 prompt。把「生成标题 → 生成正文 → 生成配图 → 发布」这个流程写死,每次只换主题变量,输出稳定性会高很多。
第二个技巧是给发布加一层校验。Qwen3 生成的标题可能超过 20 字,正文可能带敏感词,图片可能生成失败。在发布前加一个校验步骤:让模型自己检查标题长度和正文格式,不符合就重新生成;图片生成后先确认文件存在再传给发布工具。这一步可以在提示词里写,也可以用客户端的 workflow 功能实现。
第三个技巧是管理好 cookie 和 Key 的生命周期。小红书 cookie 一般能维持几周,过期后发布会失败,需要重新登录。建议在发布失败时自动提示重新登录,而不是静默失败。TaoToken 的 Key 建议定期轮换,轮换时只需要改客户端里的一个字段,不用动 MCP 配置。
如果你要把这套链路用到团队里,建议把模型调用统一走 TaoToken 的 Coding Plan。Coding Plan 适合长期编码和 Agent 场景,按量计费,多个客户端可以共用一个通道,不用每个成员单独配 Key。配置入口在https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=coding-plan,开通后把 Base URL 和 Key 发给团队成员,各自在客户端里填一次即可。
对于需要频繁调试 MCP 的场景,模型对话入口更方便快速验证。你可以在https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=model-chat里直接测 Qwen3 的生成效果,确认提示词没问题再放到客户端里跑完整链路。接入文档在https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=doc,里面有各客户端的详细配置步骤,遇到路径拼接问题可以对照查。
最后一个实用建议:先用图文链路跑稳,再上视频。视频发布涉及文件更大、上传更慢、失败率更高,图文链路跑通后再加视频,排查问题时变量更少。视频生成可以用 MiniMax MCP,也可以用本地视频文件测试,确认create_video_note能正常上传后再接 AI 生成。整套链路的核心不是模型多强,而是每个环节都可观测、可重试,这样长期跑下来才省心。