基于 EvaluatorOptimizer 工作流的品牌营销内容生成 Agent 实战指南(mcp-agent)
基于 EvaluatorOptimizer 工作流的品牌营销内容生成 Agent 实战指南mcp-agent【免费下载链接】mcp-agentBuild effective agents using Model Context Protocol and simple workflow patterns项目地址: https://gitcode.com/GitHub_Trending/mc/mcp-agent导读mcp_marketing_assistant_agent是 mcp-agent 仓库中一个端到端的营销内容生成示例它使用 EvaluatorOptimizerLLM 工作流驱动「内容创作者」与「质量评审官」两个 Agent 协作在生成、评估、反馈的迭代循环中产出符合品牌调性、达到 EXCELLENT 质量标准的内容并通过 Memory MCP Server 把用户选择与反馈写入持久化记忆实现内容风格的持续学习与进化。读完本文你将掌握如何搭建本地运行环境、如何配置品牌画像与平台规范、如何用一条命令行生成 LinkedIn 帖子 / Twitter 线程 / 邮件公告以及这个生成—评估—优化—记忆闭环在源码层的完整实现原理。示例整体架构五层协作的营销内容流水线该示例对应仓库路径 examples/usecases/mcp_marketing_assistant_agent/README.md将营销内容生产拆解为五个职责明确的组件Content Creator Agent内容创作者扮演拥有 15 年经验的资深内容策略师针对同一需求用两种截然不同的策略——数据驱动版VERSION A与叙事情感版VERSION B——各生成一份候选内容Quality Evaluator Agent质量评审官扮演极度挑剔的 CMOChief Marketing Officer按照品牌声音、内容质量、互动潜力与红旗指标Red Flags四套标准逐条打分Content Quality SystemEvaluatorOptimizerLLM把创作者 评审官封装进一个自动化的生成—评估—再生成反馈循环只有当输出达到QualityRating.EXCELLENT时才向用户呈现Memory Manager Agent记忆管理者把用户的版本选择与改进反馈结构化为实体存入知识图谱记忆供后续内容生成引用Context Assembly上下文装配每次生成前自动汇总品牌声音company_config.yaml、历史内容样本content_samples/与公司文档company_docs/让创作有据可依。README 给出了该流程的示意节点连线代表数据流方向用户请求先进入质量评估体系创作者产出后由质量控制 Agent 校验用户反馈与选择则写入记忆管理者┌──────────────┐ ┌───────────────────┐ ┌─────────────────┐ │ User Request │─────▶│ Content Quality │─────▶│ Content Creator │◀─┐ │ Feedback │ │ Evaluator │ │ Agent │ │ └──────────────┘ └───────────────────┘ └─────────────────┘ │ │ │ │ │ │ │ │ ▼ │ │ ┌─────────────────┐ │ │ │ Quality Control ├───┘ │ │ Agent │ │ └─────────────────┘ │ ┌─────────────────┐ └────────────▶│ Memory Manager │ └─────────────────┘这种以评估驱动生成、以记忆驱动改进的设计保证了每次产出的内容既贴合品牌、又持续贴合用户的真实偏好。第一步克隆仓库与环境准备按 README 的操作顺序先克隆仓库并进入示例目录若你已在本仓库内可直接切换到 examples/usecases/mcp_marketing_assistant_agentgit clone https://github.com/lastmile-ai/mcp-agent.git cd mcp-agent/examples/usecases/mcp_marketing_assistant_agent随后安装包管理工具uv若尚未安装pip install uv同步项目依赖依赖清单见示例目录下的 pyproject.toml核心包括mcp-agent0.1.7、fastmcp、pydantic2.0.0、pyyaml、markitdown0.1.2等要求 Python 3.10uv sync最后安装两个外部 MCP Server 依赖——负责长期记忆的知识图谱服务器以及负责多格式文档转换的 MarkItDown 服务器npm install -g modelcontextprotocol/server-memory pip install markitdown-mcp第二步配置密钥与品牌画像复制密钥示例文件并填入 OpenAI API Keycp mcp_agent.secrets.yaml.example mcp_agent.secrets.yaml打开mcp_agent.secrets.yaml对应 mcp_agent.secrets.yaml.example填入openai: api_key: YOUR_OPENAI_API_KEY密钥解析由 mcp-agent 框架统一处理示例中同时存在mcp_agent.config.yaml公开配置与mcp_agent.secrets.yaml敏感信息两者职责分离。品牌声音配置company_config.yaml这是整个示例的灵魂配置它决定了品牌是谁、声音如何、各平台怎么写、什么绝对不能写。以下字段全部会在运行时被加载并注入 Agent 的指令company: name: Your Company Name industry: Technology # e.g., AI, SaaS, HealthTech, Fintech target_audience: - Primary Audience - Secondary Audience - Decision Makers brand: voice: personality: Professional yet approachable # 一句话描述品牌个性 tone_keywords: [clear, helpful, authentic, professional, engaging] avoid: [buzzwords, jargon, overly promotional, sales-heavy language, robotic tone] messaging_pillars: - Quality solutions - Customer focused - Innovation driven platforms: linkedin: max_word_count: 150 tone: Professional but conversational guidelines: Be human. Avoid startup buzz. Focus on impact and value. twitter: max_word_count: 50 tone: Sharp, witty, to-the-point guidelines: Write like youre texting a peer. Start with a punchline. email: max_word_count: 300 tone: Friendly, clear, no-nonsense guidelines: Use plain English. Add a helpful CTA. Be personal. instagram: max_word_count: 100 tone: Visual, engaging, authentic guidelines: Focus on storytelling. Use emojis. Be relatable.值得特别注意的是quality_standards块excellence_criteria定义了人类感、具体细节、零废话、匹配品牌、可执行等晋级 EXCELLENT 的必要条件poor_criteria定义了一票否决的劣质信号而banned_phrases则是硬性禁用词表预置了 Unlock potential、Revolutionary、Excited to announce、Game-changing、Cutting-edge、Disruptive 等典型 AI 味 / 过度营销短语。prompt_variables中则提供正反例清单good_examples/bad_examples帮助评审官建立什么样的内容才是好内容的直觉基准。完整模板见 company_config.yaml。你还可以把品牌指南细化到 company_docs/brand_guidelines.md它给出了 Voice Tone、Messaging Pillars、各内容类型的 GOOD/BAD 示例等结构化的填充框架。第三步准备内容样本创建三个目录分别用于训练样本、公司文档与生成结果落盘mkdir -p content_samples posts company_docscontent_samples/放入已有的优质社媒帖子、博客内容作为基准风格供 Agent 模仿支持 .md、.txt、.pdf、.docx、.html由 markitdown-mcp 统一转成 Markdown 后读取company_docs/放入品牌指南、公司介绍等资料示例中已预置 brand_guidelines.mdposts/生成的最终内容会自动保存到这里示例已含一份真实产出 linkedin_content_20250725_163333.md可直观看到 VERSION A / VERSION B 的成稿格式。这些目录被配置为 filesystem MCP Server 的挂载根目录见下Agent 只能在这些白名单目录内读写实现安全文件操作。MCP Server 装配mcp_agent.config.yaml示例在 mcp_agent.config.yaml 中声明了四个 MCP Server构成 Agent 的工具包execution_engine: asyncio logger: transports: [console, file] level: debug path: logs/marketing.jsonl path_settings: path_pattern: logs/marketing-{unique_id}.jsonl unique_id: timestamp timestamp_format: %Y%m%d_%H%M%S mcp: servers: markitdown: # 多格式文档 → Markdown command: markitdown-mcp args: [] description: Convert various file formats to Markdown using Microsoft MarkItDown memory: # 知识图谱长期记忆 command: npx args: [-y, modelcontextprotocol/server-memory] description: Basic knowledge graph memory system filesystem: # 白名单文件读写 command: npx args: [ -y, modelcontextprotocol/server-filesystem, ./content_samples, ./posts, ./company_docs ] description: Secure file operations fetch: # 网页内容抓取 command: uvx args: [mcp-server-fetch] description: Web content fetching and conversion openai: default_model: gpt-4o-minimarkitdown把 PDF/DOCX/HTML 等样本统一转为纯 Markdown供 LLM 阅读memory知识图谱记忆create_entities/search_nodes等工具支撑用户偏好与反馈的写入与检索filesystem以content_samples、posts、company_docs为根的白名单访问保证 Agent 读写受限、安全fetch当用户请求里带 URL 时抓取网页内容作为创作背景例如上面的示例输出中Agent 被要求visit this link and make a similar post。第四步本地运行与典型用法运行入口为 main.py接受任意自然语言指令作为命令行参数生成 LinkedIn 帖子uv run main.py Write a linkedin post about our new feature创建 Twitter 线程uv run main.py Create a twitter thread about our latest release生成邮件公告可附带活动页 URLAgent 会用 fetch 抓取网页内容uv run main.py Draft an email about our upcoming webinar link to event page运行时交互流程为Agent 先产出并展示两个候选版本 → 终端提示Which version do you prefer? (A/B/feedback/quit):→ 选 A/B 则保存成稿并学习偏好输入feedback则录入改进意见并据此完全重写输入quit退出。最终产物以带 YAML front-matterplatform / version / company / created / request的 Markdown 文件写入posts/目录。平台识别与配置加载入口逻辑main.py顶层的两个辅助函数支撑了指令→平台→配置的映射detect_platform(request)对请求文本做小写匹配命中twitter / linkedin / instagram / facebook / email / reddit中的任一关键词即返回该平台否则默认linkedinload_company_config()读取company_config.yaml若文件缺失则回退到{company: {name: Your Company}, platforms: {linkedin: {max_word_count: 150}}}的默认配置保证程序不会因配置缺失而崩溃。main.py还会在启动时自动创建posts、content_samples、company_docs三个目录os.makedirs(..., exist_okTrue)并以时间戳%Y%m%d_%H%M%S生成输出文件名如linkedin_content_20250725_163333.md。核心原理一Content Creator 与 Quality Evaluator 的双 Agent 设计创作者指令两种策略、一套质检清单content_creatorAgentmain.py 中定义挂载了memory、fetch、filesystem、markitdown四个 Server其思维链被严格编排为四步RESEARCH CONTEXTsearch_nodes user_preference {platform}检索记忆中的用户偏好 → 读 2-3 个content_samples/样本 → 读company_docs/品牌指南 → 分析company_config.yaml的 voice 与质量标准 → 对请求中的 URL 用 fetch 抓取CONTENT STRATEGY明确目标受众、核心信息、价值主张、情感钩子与行动号召CTAWRITE TWO DISTINCT APPROACHESVERSION A 走直接 数据驱动数字/结果开场、权威语气、具体案例VERSION B 走叙事 情感故事钩子、生动语言、个人相关性QUALITY CHECK对照品牌声音、平台最佳实践、禁用短语、具体性、人类感、CTA、平台长度七项自检。输出固定为VERSION A / VERSION B的成稿格式并强调像资深人类专家而非 AI 那样写作。评审官指令四维评分 红旗一票否决quality_evaluatorAgent 挂载filesystem、markitdown两个 Server评分体系由四个维度构成BRAND VOICE必须全部匹配人格匹配、批准的语气词、零禁用短语、真实人类感、全文一致CONTENT QUALITY必须全部具备清晰具体的价值主张、真实案例/数字/细节、零废话填充、自然结构、平台长度合适、有说服力的 CTAENGAGEMENT POTENTIAL满足 3 项以上能停下滚动、驱动互动、提供实际价值、建立情感连接、激发行动RED FLAGS任一命中即自动 POOR泛泛的营销话术、无依据的模糊主张、AI 味 / 企业腔、缺具体细节、用了禁用短语、平台格式错误。评级分为EXCELLENT / GOOD / FAIR / POOR四级其中 EXCELLENT 要求超过所有标准、零改进点、可直接发布。输出必须包含每版的评分、3 条以上带例子的优势、具体问题 修复建议以及品牌一致性评估。核心原理二EvaluatorOptimizerLLM 的迭代闭环两个 Agent 通过EvaluatorOptimizerLLM组合成内容质量系统main.pycontent_quality_system EvaluatorOptimizerLLM( optimizercontent_creator, evaluatorquality_evaluator, llm_factoryOpenAIAugmentedLLM, min_ratingQualityRating.EXCELLENT, )该工作流类定义于 src/mcp_agent/workflows/evaluator_optimizer/evaluator_optimizer.py。其核心设计如下QualityRating 枚举POOR0 / FAIR1 / GOOD2 / EXCELLENT3用于量化评级与阈值比较构造参数optimizer生成方可为 Agent、AugmentedLLM 或 Orchestrator/Router/ParallelLLM 等嵌套工作流、evaluator评估方、min_rating最低合格评级默认 GOOD本例收紧为 EXCELLENT、max_refinements最大精炼迭代次数默认 3、llm_factory从 Agent 构建 LLM 的工厂函数执行语义optimizer 生成 → evaluator 返回结构化EvaluationResult含rating、feedback、needs_improvement、focus_areas四个字段均以 Pydantic 模型定义→ 若评级低于min_rating且未超过max_refinements则把反馈并入下一轮生成直到达标或耗尽迭代上限。调用时通过generate_str(messagetask, request_paramsRequestParams(modelgpt-4o))指定模型。也就是说只有同时通过评审官评分和迭代次数上限两道门槛的内容才会被呈现给用户从机制上保证了EXCELLENT 才交付。核心原理三记忆管理与持续学习memory_managerAgent 挂载memoryServer指令被刻意保持简单收到反馈或用户选择时用create_entities工具创建一条实体一条学习的结构化记录实体字段为name带时间戳的唯一标识、entityType: user_preference、observations学习数据数组。运行时 main.py 用OpenAIAugmentedLLM(agentmemory_manager)实例化其 LLM并在两处写入记忆用户给出feedback时先把反馈存为实体gpt-4o-mini随后把feedback_context更新为CRITICAL USER FEEDBACK TO ADDRESS的指令块明确告诉创作者上一版因 X 失败必须彻底换思路再continue触发新一轮生成用户选择 A 或 B 时把选择结果版本 平台 请求存为实体然后跳出循环、保存成稿。而创作者每次创作的第一步就是search_nodes user_preference {platform}检索这些历史偏好——由此形成创作 → 评估 → 用户反馈 → 记忆沉淀 → 下次创作参考的飞轮。值得注意的是新指令通过feedback_context拼入下一轮task而非追加到对话历史保证了每次重写都是全新内容 针对性改进避免简单修补。运行与日志可观测性示例在mcp_agent.config.yaml中启用了双通道日志console file日志文件写入logs/marketing-{timestamp}.jsonl日志级别为 debug。main.py内全程通过content_app.logger记录关键节点创建内容、用户取消、内容保存成功、异常堆栈配合 mcp-agent 的事件流与追踪机制可以完整回放评估了几轮、每轮评分是什么、用户反馈了什么的全过程便于调优质量阈值与提示词。落地清单与扩展思路将本示例迁移到自有品牌建议按以下顺序操作填写company_config.yaml的公司名、行业、受众与品牌声音替换banned_phrases为你所在行业真实的禁用词按 company_docs/brand_guidelines.md 的模板补齐品牌指南放入company_docs/往content_samples/投放 5-10 篇你认可的历史内容作为风格基准依次执行uv sync、密钥配置与三个目录创建然后跑一条指令验证闭环。在此基础上可以进一步扩展把platforms段扩展到 Threads、X 长文等新平台把min_rating放宽到GOOD以加速交付或把max_refinements从默认 3 调高以换取更高打磨度甚至用嵌套工作流如先 Router 分流再 EvaluatorOptimizer 精修替代单一创作 Agent这些组合方式在 src/mcp_agent/workflows/evaluator_optimizer/evaluator_optimizer.py 的类注释中都有明确说明。整个示例的完整代码与配置均可直接在 examples/usecases/mcp_marketing_assistant_agent 目录下查看与运行。【免费下载链接】mcp-agentBuild effective agents using Model Context Protocol and simple workflow patterns项目地址: https://gitcode.com/GitHub_Trending/mc/mcp-agent创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考