☰
Multi-Agent + Claude Code 搭建博客自动分析工作流
2026/10/2 9:49:05 网站建设 项目流程

做内容分析和SEO优化这几年,我一直想找一个能自动拆解博客结构的工具。最近搭了一套基于Multi-Agent的博客分析工作流,核心引擎用的Claude Code。标题里“Muti-Agent”这个拼写其实有点问题,正确写法是Multi-Agent,但完全不影响这个话题的价值。这篇博客我打算换个角度来写:不是单纯讲Claude Code怎么装、怎么配,而是讲清楚在博客分析这个具体场景下,为什么值得上多智能体架构,以及我把这套东西落地时踩过的坑、总结的参数和经验。适合正在研究AI编程工具落地、想做内容质量自动化评估、或者想试着用Agent做内容分析的朋友。

1. 为什么我盯上了“Multi-Agent + Claude”做博客分析

1.1 博客单篇人工分析的痛点

做博客的人都知道,一篇内容写完,除了校对错别字,还得看结构清不清楚、标题有没有吸引力、关键词密度合不合理、读者会不会在第二段就关掉页面。我自己以前的做法是拉一个对照表,一篇一篇过,遇到长文,光读一遍就要十几分钟,要是再拆结构、分析SEO、给改进建议,单篇耗时轻松超过半小时。批量分析一个几十篇的博客站点,基本就是一场手工劳动。

后来我开始用大模型辅助分析,用单个Prompt丢给模型“帮我分析这篇文章”,效果怎么说呢,能用,但很飘。模型喜欢把所有问题混在一起回答:有时候结构分析写得头头是道,SEO部分却明显在编,连文章里不存在的关键词都能分析出“密度适中”。这就是单一大模型的通病——它太想讨好用户了,一张嘴上上下下全包,结果每个维度都只做到60分。

1.2 Multi-Agent与单一Prompt的区别:不是分工,是“互相看得见对方的思考”

Multi-Agent的思路是模拟一个编辑部:有人负责找资料,有人负责审稿,有人专门盯SEO,有人负责出报告。每个Agent只干一件事,Prompt可以写得非常专注,工具权限也可以控制得很严。

关键区别不只是分工,而是中间产物是显式的。单Prompt模式下,模型的“思考过程”你看不见,它说结论你只能信;Multi-Agent模式下,采集Agent输出的是一份清洗后的文章文本,质量Agent输出的是结构化评分表,SEO Agent拿到评分表之后,才知道该在哪个维度上做深入分析。这一步的产物是可见、可校验、可修正的。对于博客分析这种需要反复追问的业务场景,这个特性太重要了。

我用一个生活化的类比解释:让一个人同时做翻译、校对、排版,他也能出稿,但错误率一定比“翻译完→校对盯译文→排版盯格式”高。Multi-Agent不是炫技,是把分析流程拆成流水线,每一站都有专人负责。

1.3 Claude Code在自己工作流里的定位

工具圈里能跑Agent的不少,我最终把主力放在Claude Code上,核心原因有三点。一是它对长上下文的支持很顶,分析一整个博客站点时,经常要把几十篇文章的标题、摘要、段落结构一次性塞进去,窗口不够大,Agent逻辑再漂亮也白搭。

二是它的Subagent机制几乎是天生的Multi-Agent基础设施。只要在项目目录下建一个.claude/agents文件夹,然后丢几个Markdown文件,每个文件定义一个专职Agent角色,主Claude Code进程就能按描述自动调度它们。门槛低到令人发指,不需要自己写Agent框架。

三是可编排性。Claude Code带命令行模式,可以一句“claude -p '指令'”直接跑无头任务,这意味着我可以用Python脚本或定时任务把它编成自动化流水线,做完一批博客自动出报告,扔到指定目录。这个用法远比交互式聊天适合内容分析场景。

2. Claude Code环境准备:从零到能跑通第一句指令

2.1 装CLI和它的依赖(Node.js、Platform、WSL)

Claude Code本质是一个Node.js命令行工具,安装前最优先确认的是Node环境。建议直接装LTS版,版本至少18以上,我自己的机器用的是20,跑得很稳。装完Node之后,全局安装Claude Code:

npm install -g @anthropic-ai/claude-code

装完敲claude --version,能输出版本号就算成功。Windows用户如果看到“claude : 无法将‘claude’项识别为 cmdlet、函数、脚本文件或可运行程序的名称”,说明npm全局路径没进PATH,去系统环境变量里把npm的全局目录加上,具体路径可以用npm prefix -g查。

还有一类高频报错是claude's workspace requires the virtual machine platform on windows. enable。这说的是它要的“虚拟机平台”功能没打开。控制面板→程序→启用或关闭Windows功能,勾选“虚拟机平台”和“适用于Linux的Windows子系统”,重启。这个问题的本质是Claude Code在新版Windows上依赖WSL2或Hyper-V相关组件来隔离任务,不是可选项,是硬性要求。

还有个别安装过程会遇到error: claude native binary not installed. either postinstall did not run,多半是npm安装过程中脚本被中断或权限不足。处理办法是删掉全局包重装一次,或者用管理员权限的PowerShell执行安装。重装前建议先npm uninstall -g @anthropic-ai/claude-code清干净。

2.2 三种模型接入方式(官方订阅、CC Switch第三方API、LMStudio本地模型)

Claude Code装好之后,面临第一个选择:模型从哪来。我试过三种方式,分别说说适用场景。

官方订阅是最省心的。直接claude login走浏览器授权就行,不需要配任何环境变量,默认用的是Anthropic官方模型。如果你的使用频率高,或者要用1M上下文窗口做整站分析,直接用官方订阅最简单,响应稳定,新功能更新也最快。缺点就是贵,而且国内环境连接官方服务的体验要看网络状态,这里不多展开,大家自己评估。

CC Switch切换第三方API是很多人关心的方案。它是一个开源配置管理工具,专门用来给Claude Code切换不同模型服务商。支持接DeepSeek、Qwen、GLM这些模型提供商,操作逻辑是把不同服务商的base_url和token存成一套套配置,一键切换,不用每次改环境变量。

# 安装ccswitch后,按提示配置provider ccswitch add deepseek ccswitch use deepseek

配完之后,Claude Code读取环境变量时就能拿到对应的base_url和token。好处是成本立刻降下来,坏处是第三方模型的能力边界和官方Claude不完全一致,在复杂Multi-Agent调度中,偶尔会出现“每个Agent都正常,但汇总结果不一致”的情况,需要自己在Prompt里做约束。

LMStudio本地模型是离线方案。在LMStudio里加载一个Qwen或GLM本地模型,启动本地服务后,把Claude Code的base_url指向http://localhost:1234/v1,认证token随便填一个占位字符即可,Claude Code会以OpenAI兼容接口的格式和本地模型对话。

setx ANTHROPIC_BASE_URL "http://localhost:1234/v1" setx ANTHROPIC_AUTH_TOKEN "local-test-token"

本地模型的好处是零API成本、数据不出机器,对内容敏感的场景友好;缺点是速度和生成质量明显弱于云端大模型,小参数模型在长文本分析时容易丢细节。我的建议是:调试流程用本地小模型,正式批量分析用云端模型。

2.3 我踩过的安装坑与第一轮排查

说到安装,必须记录几个真实的坑。第一个坑是Windows下路径问题。装完Claude Code后,配置文件默认落在C:\Users\Administrator\AppData\Local\目录下,有次报错信息里出现了“using provider-specific claude config: c:\users\administrator\appdata\local\”,我一开始没在意,结果发现无论怎么切换配置,读的还是旧的那个。后来把配置文件清理干净,再用CC Switch重新生成才正常。经验就是:换API服务商之后,别急着跑任务,先检查配置目录下有没有残留旧配置文件。

第二个坑是VSCode接Claude Code插件。在扩展市场搜Claude Code安装后,会自动重开一个终端会话。第一次接的时候我发现两边配置不同步,命令行里跑得好好的,VSCode里却一直报“连接已断开”。后来定位到是VSCode集成终端没继承最新的环境变量,重启几次VSCode或者在新终端里手动执行一遍环境变量设置就解决了。

第三个坑是模型选择。Claude系列模型分好几个档位,大模型、中档模型、轻量模型各有侧重。在Multi-Agent场景里,不要所有Subagent都用最强模型,成本吃不消。我自己的配置是:主控和报告生成用最强档,采集和结构化提取用中档,纯格式转换类任务用轻量档,整体成本能压掉三成。

3. 博客分析的Multi-Agent编排:系统设计

3.1 六个Agent角色的设定与职责边界

Multi-Agent系统的第一步不是写代码,是画清楚“谁干什么”。我给博客分析场景定义了六个角色,每个角色的职责边界必须非常明确。

  • blog-crawler(采集员):接收一批博客URL,抓取正文内容,去除HTML标签、导航、广告等噪声,输出纯文本。
  • content-normalizer(清洗员):把采集到的文本按统一结构重新组织,分段落、提取小标题、整理列表项。这个角色的存在是因为不同博客的排版差异太大,不标准化,后续Agent没法处理。
  • quality-reviewer(质量评审):评估文章质量,包括逻辑结构完整性、信息密度、是否有空洞表述、结尾是否有力。
  • seo-specialist(SEO专员):分析关键词覆盖、标题吸引力、Meta描述、内链外链情况,给出可量化的SEO评分。
  • reader-intent-analyzer(读者意图分析):判断文章目标受众,分析读者在阅读过程中可能的疑问和流失点。
  • report-writer(报告生成):汇总所有Agent的结构化输出,生成最终博客分析报告,按优先级排序给出改进建议。

这种切分的核心原则是:每个角色只对一类问题负责,输出必须是结构化数据。不要让质量评审去顺带点评SEO,也不要让SEO专员去评价文笔。职责交叉是Multi-Agent项目后期维护最大的敌人。

3.2 用.claude/agents定义Subagent

Claude Code的Subagent机制非常轻量,不需要写复杂框架,只需要在项目目录下建.claude/agents文件夹,然后写Markdown文件。文件名就是Agent的ID,文件内容由YAML frontmatter和系统提示词组成。

这是我在真实项目里用的一个SEO专员定义文件,供参考:

--- name: seo-specialist description: 分析博客文章的SEO表现,包括关键词密度、标题结构、Meta信息、内链建议。仅在需要SEO分析时调用。 tools: Read, Bash model: sonnet 温度: 0.2 --- 你是一名资深SEO分析师。你的输入是经过清洗的文章正文和文章元数据。 你的分析必须输出严格的JSON格式,包含以下字段: - title_score: 标题吸引力评分(0-10)及原因 - keyword_density: 核心关键词密度评估,给出建议区间 - meta_issues: Meta描述和标题标签的问题清单 - internal_link_suggestions: 至少3条内链建议 - seo_score: 综合SEO评分(0-100) 注意:你只能基于输入文本做分析,不能臆测文章里不存在的内容。

关键点有两个:tools字段限制了Agent能用哪些工具,一般情况下只给它Read和Bash,避免它主动去改文件;model字段控制模型档位,轻量任务不要用最强档;最后那段“不能臆测”的约束在真实分析中极其重要,不加这句,Agent就敢编数据给你看。

3.3 让Agent之间“对话”的调度策略

角色定义好了,接下来是调度。我试过两种模式,各有利弊。

第一种是Claude Code内建调度。当主对话里提到“分析SEO质量”,主Claude Code会根据每个Subagent的description自动判断并调用seo-specialist。这个模式适合临时、单次的分析需求,优点是零配置,缺点是调度结果不受控,你无法精确控制多个Agent的执行顺序和数据流向。

第二种是外部Python编排器。我写一个Python脚本,按顺序调用多个“Claude Code无头模式”实例,把上一个Agent的输出JSON作为下一个Agent的输入。这个模式适合批量自动化,比如每天夜里定时跑一次全站博客分析。优点是流程完全可控,任何一步失败都能重试,缺点是需要自己维护编排逻辑,相当于每个Agent之间多了一道“翻译层”。

从我的实践看,博客分析这种标准化流水线业务,强烈建议走第二种。因为它的执行顺序是相对固定的:采集→清洗→质量→SEO→阅读意图→报告。与其依赖模型自己决定调度,不如写死在编排器里,稳定性和可维护性都好得多。

4. 实操:把一套博客分析流水线跑起来

4.1 场景设定与输入规范

我拿自己的一个技术博客站点做实验,站点里一共36篇文章,涵盖了工具教程、项目复盘、踩坑记录这几类。

给流水线喂数据之前,先定义输入规范。我建了一个blog_input.json,里面是待分析文章清单:

{ "site": "example-blog", "articles": [ {"title": "用Claude Code分析博客的实验记录", "url": "https://example.com/2025/02/test.html", "word_count": 2600}, {"title": "Multi-Agent在内容生产中的实践", "url": "https://example.com/2025/03/agent-practice.html", "word_count": 3800} ] }

输入越规范,后面的Agent工作越省心。如果你连URL列表都没有,也可以让采集Agent自己读sitemap.xml生成,但我觉得给一份人工确认过的清单更稳妥,避免Agent抓了一堆无关页面。

4.2 从采集到报告:完整Prompt链

整套流水线的核心不是代码,是每一站之间的Prompt设计。数据在Agent之间流动时,需要有一个统一的“交接格式”,否则每个Agent都在用自己的话概括,传到下一站信息就走样了。

我定义了一个中间格式叫clean_article,字段包含:article_id、title、clean_text、headings、word_count、publish_date。采集Agent和清洗Agent的任务就是把原始网页变成这个格式。之后的Agent读取这个格式,输出各自的评估JSON。

这里放一个质量评审Agent的实际Prompt片段:

你的输入是clean_article格式的JSON。请对文章做质量评审。 评估维度: 1. 结构完整性(是否包含明确引入、主体论证、结尾收束) 2. 信息密度(每千字是否包含至少1个可实操的要点) 3. 表述质量(是否存在空话套话、重复表述) 4. 落地性(读者读完是否能照着做) 输出JSON: { "article_id": "...", "structure_score": 0.0, "info_density_score": 0.0, "clarity_issues": ["..."], "actionability_score": 0.0, "overall_score": 0.0, "top_3_improvements": ["..."] }

发现没有,每个Prompt都做了一件事:明确输入格式、明确输出字段、明确评分标准。这个习惯养成了,Multi-Agent的成功率能高出一大截。

4.3 用Python编排多个Claude Code实例

这是我实际在用的编排器核心代码,去掉日志和异常处理后的简化版本:

import subprocess import json import os AGENT_STEPS = [ ("blog-crawler", "采集文章并提取正文"), ("content-normalizer", "将正文标准化为clean_article格式"), ("quality-reviewer", "输出质量评审JSON"), ("seo-specialist", "输出SEO分析JSON"), ("reader-intent-analyzer", "输出读者意图分析JSON"), ] def call_claude_with_agent(prompt: str, agent: str) -> dict: cmd = [ "claude", "-p", prompt, "--output-format", "json", "--subagent", agent ] result = subprocess.run(cmd, capture_output=True, text=True, encoding="utf-8") if result.returncode != 0: raise RuntimeError(f"Agent {agent} failed: {result.stderr}") return json.loads(result.stdout) def run_pipeline(article_json: dict) -> dict: current_payload = json.dumps(article_json, ensure_ascii=False) intermediate = {} for agent_name, description in AGENT_STEPS: print(f"当前Agent: {agent_name} - {description}") prompt = f"处理以下数据,按你的角色要求输出JSON:\n{current_payload}" output = call_claude_with_agent(prompt, agent_name) intermediate[agent_name] = output # 关键点:为了让下一站拿到最核心的数据,我们用当前输出替换当前输入 current_payload = json.dumps(output, ensure_ascii=False) return intermediate

这段代码的要点在current_payload的迭代更新。每跑完一个Agent,就用它的输出作为下一轮的输入,这样各Agent之间的上下文是紧凑传递的,不会越滚越臃肿。跑完reader-intent-analyzer之后,再单独调一次report-writer,把五份中间结果一次性汇总成自然语言的博客分析报告。

真实跑通一篇文章大约要1到2分钟,视模型响应速度而定。36篇文章的批量任务大概40分钟能出全站报告,这个效率比人工分析高太多了。

4.4 拿到结果后怎么反推质量

任何自动分析工具,输出质量都是要人验证的,AI也不例外。我的验证方法是抽三篇文章,把Multi-Agent的报告和人工评审对照,主要看两个指标:评分接近度和问题命中率。

实际跑完第一轮,我发现质量评审Agent给的分数普遍虚高,一篇文章人工打分只有62,它给了80。查了下原因:Agent倾向于把“结构完整”当高分依据,完全不看论点是否成立。解决办法是在Prompt里加了一条硬性规则:“如果文章存在核心论据缺失,结构分直接扣到50以下”。加了这条之后,评分偏差明显变小。

另一个例子是SEO Agent刚开始会过度关注关键词密度,给出“密度过低,建议从3%提到5%”这种过时建议。我纠正了它的知识库,在Prompt里补充了“现代SEO不追求机械密度,而是关注语义相关性和标题命中”,后续输出就正常了。这个动作也提醒我:给Agent的领域知识版本要新,旧方法会带偏分析结果。

5. 常见问题与排查技巧实录

5.1 安装与启动阶段报错速查表

这半年折腾下来,安装启动阶段的报错基本都能背下来了,整理成表方便你对着查。

报错信息根本原因处理方法
claude无法识别为cmdlet、函数npm全局路径未加入PATH执行npm prefix -g,把输出目录加入系统Path并重启终端
workspace requires the virtual machine platform on windowsWindows未启用虚拟机平台/WSL2开启“虚拟机平台”和“适用于Linux的Windows子系统”功能,重启
error: claude native binary not installednpm安装时postinstall脚本未执行卸载全局包后重装,用管理员权限运行PowerShell
版本升级后配置全部丢失升级时覆盖了配置文件升级前备份C:\Users\用户名\AppData\Local\下相关Claude配置目录
左下角一直转圈,无法交互终端代理环境变量冲突检查http_proxy/https_proxy环境变量,临时清除后重试

5.2 API配置阶段报错速查表

接入第三方模型是问题重灾区,报错五花八门,但根因就那么几个。

报错信息根本原因处理方法
api error: 400 配置错误: claude provider 缺少 base_url 配置环境变量没传对,CC Switch配置未生效检查ANTHROPIC_BASE_URL和ANTHROPIC_AUTH_TOKEN是否已设置,版本更新后重设
claude api error: connection dropped (econnreset)网络连接被重置,服务端主动断开确认服务地址可达,设置更短请求超时,或切换配置到其他可用节点
using provider-specific claude config: 路径同时存在旧配置文件干扰新配置清理Config目录下的旧配置文件,只保留当前provider
your organization has disabled claude subscription access企业管理策略禁止了订阅接入用个人账号或获取组织授权,这个报错和本地配置无关
LMStudio连接后返回模型不存在本地服务未加载模型或模型ID不匹配LMStudio模型列表里确认加载了模型,拷出完整模型ID填入配置

5.3 多Agent协作中的隐性坑

第五部分要说的不是命令和参数,而是Multi-Agent架构本身容易出的“流程坑”。

第一个是上下文污染。当一个Agent的输出包含幻觉信息,而这个信息恰好又进了下游Agent的输入,错误会被放大。我在一次分析中,采集Agent因为没抓到全文,把摘要当成了正文传给下一步,结果质量评审、SEO分析全部基于这个残缺文本进行,产出的报告完全不能用。后来我在采集Agent的输出里加了raw_text_length字段,后续编排器检测到这个数值小于预期阈值(比如少于1000字)就直接告警,不再继续往下跑。

第二个是成本失控。Multi-Agent比单Prompt调用消耗的token多好几倍,36篇文章分析一轮,光中间传递的JSON就要好几万token。控制成本的办法有三个:能用轻量模型就不用最强模型,能让Agent输出压缩摘要就不要输出全文,能在编排器里缓存中间结果就缓存。我现在做的增量分析,只对新增文章跑一遍完整流水线,旧文章直接复用上次的中间结果,成本一下子降了很多。

第三个是循环依赖。如果两个Agent互相校验,比如质量评审说结构有问题,报告Agent修改了结构,又要重新评审,可能陷入无限循环。我的解法是给编排器设置最大迭代次数,超过就取最后一次结果并人工标记。工程上这叫“熔断”,比让模型自己判断“我改好了”可靠得多。

6. 一些体会

这套Multi-Agent博客分析系统跑到现在,我最大的感受是:多智能体架构不是什么神秘的东西,它本质上是在模拟一家编辑部的工作流程。真正的难点不在配置Claude Code,也不在写Subagent的文件,而在于你怎么定义问题、怎么切分职责、怎么设计Agent之间的交接协议。每个Agent的Prompt都是面向一个窄问题的,所以写起来不难;难的是整套系统的边界管理,你得时刻清楚哪些数据该流动、哪些状态该停留在某一步。

我个人目前最推荐的落地路线是:先用单Agent跑通,再拆成两个Agent,确认效果确实变好,再往更多角色扩展。不要一上来就搭六个Agent,否则排查问题的时候,你根本分不清是哪个环节把数据带偏了。我就是从“采集+报告”两个Agent起步,迭代了三轮才稳定成现在的六角色流水线。

后续我还打算做两件事:一是把报告输出接进MCP服务器,让分析结果能直接同步到文档系统;二是加一个定时触发,每周自动抓取站点新文章,产出增量分析。这个方向的可玩性还很多,如果你正在折腾类似的内容分析场景,可以照着这个思路试试看。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询