English | 中文
输入企业文献资料 → 自动产出适配豆包/Kimi/DeepSeek/通义千问/GPT 等大模型向量库收录的高质量原创文章,并消除 AI 生成痕迹。
GEO(Generative Engine Optimization,生成式引擎优化)内容优化智能体 —— 跨平台、无平台依赖。区别于传统 SEO 面向搜索引擎爬虫,GEO 面向的是 AI 摘要器和答案引擎:让大模型"读得懂、愿意引、能溯源"。
| 能力 | 说明 |
|---|---|
| 📄 多格式文献解析 | 支持 PDF / Word / Excel / PPT / TXT,一键提取纯文本 |
| 🔑 7类关键词挖掘 | 核心搜索词、长尾场景词、地域实体词、人群标签词、问题描述词、品牌专属词、场景触发词,结构化输出强制(Pydantic schema),按优先级公式排序 |
| ✍️ 七层架构内容生成 | EE-A-T 权威性框架 + ACES 结论前置范式 + 三段式 Hook 开篇 + 语义实体密度网络 |
| 🧹 8维度 AI 降痕 | 句子结构/段落节奏/用词习惯/情感浓度/例证来源/完美度/个性化/关键词密度,3 级别分级处理 |
| 🛡️ Stage 5 质量守门 | 极限词 lint、品牌溯源密度、结构完整性、反幻觉守门(数值溯源核验)、可选 LLM-as-Judge 评分 |
| 🌐 联网检索补充 | Tavily / Bing RSS / DuckDuckGo 三引擎自动切换,中国可用 |
| 📝 Word 文档导出 | Markdown → 格式化 Word(.docx),支持标题/表格/列表/代码块 |
| 🧩 MCP 协议集成 | 一行配置接入 Claude Desktop / Claude Code / WorkBuddy 等 AI 工具 |
| 📦 智能分块 | 长文本自动分块(≤60000字符/块,重叠500字符),分块结果合并后再进入下游 |
CLI 交互模式 → 终端对话,适合快速试用
命令行直接处理 → --file/--text 参数,适合批量脚本
Streamlit Web UI → 浏览器操作,适合非技术用户
HTTP API → FastAPI 服务,适合集成到现有系统
MCP Server → 接入 Claude 等 AI 工具,对话式调用
输入文献 → [Stage 0 联网检索(可选)] → [Stage 1 清洗切片] → [Stage 2 关键词提取] → [Stage 3 内容生成] → [Stage 4 降痕改写] → [Stage 5 质量守门] → 成品文章 + Word文档
| 阶段 | 功能 | 核心方法 |
|---|---|---|
| Stage 0 | 联网检索(可选) | 自动提取关键概念,三引擎搜索并行补充资料,丰富文献素材 |
| Stage 1 | 文献清洗与切片 | 过滤噪声、语义分块(段落/句子边界)、提取品牌信息;长文本自动分块并行处理 |
| Stage 2 | 关键词提取 | 7类关键词(结构化输出强制)+ 优先级公式(搜索量×相关性×竞争强度)三级排序 |
| Stage 3 | 内容生成 | EE-A-T 权威性框架 + ACES 结论前置 + 七层写作架构 + 语义实体密度 + FAQ/可引用事实块 |
| Stage 4 | 降痕改写 | 8维度 AI 去痕 + 3级别分级(轻度/中度/深度)+ 自检清单 |
| Stage 5 | 质量守门 | 极限词 lint + 品牌溯源密度 + 结构完整性 + 反幻觉守门 + 可选 LLM-as-Judge 评分 |
# 克隆仓库
git clone https://github.com/wangzhuo-coding/geo-content-optimizer.git
cd geo-content-optimizer
# 创建虚拟环境
python -m venv .venv
source .venv/bin/activate # Linux/macOS
# .venv\Scripts\activate # Windows
# 安装核心依赖
pip install -e .可选功能(按需安装):
pip install -e ".[mcp]" # MCP Server(接入Claude等AI工具)
pip install -e ".[webui]" # Streamlit Web UI
pip install -e ".[postgres]" # PostgreSQL 持久化
pip install -e ".[s3]" # S3 文件存储
pip install -e ".[all]" # 全部可选功能Windows 用户:直接运行
setup.bat一键安装。中国网络建议使用镜像源:pip install -e . -i https://pypi.tuna.tsinghua.edu.cn/simple
cp .env.example .env # Windows: copy .env.example .env编辑 .env 文件,填入你的 LLM API Key:
OPENAI_API_KEY=sk-xxx # 你的 API Key(必填)
OPENAI_BASE_URL=https://api.openai.com/v1 # API 地址
OPENAI_MODEL_NAME=gpt-4o # 模型名称兼容的 API 供应商:
| 供应商 | Base URL | 模型示例 |
|---|---|---|
| OpenAI | https://api.openai.com/v1 |
gpt-4o |
| DeepSeek | https://api.deepseek.com |
deepseek-chat |
| 豆包(字节跳动) | https://ark.cn-beijing.volces.com/api/v3 |
doubao-seed-2-0-pro |
| 通义千问 | https://dashscope.aliyuncs.com/compatible-mode/v1 |
qwen-max |
| Kimi(月之暗面) | https://api.moonshot.cn/v1 |
moonshot-v1-8k |
python -m src # 最简单
python src/cli.py # 等效
run.bat # Windows 一键启动# 输入文本,自动保存到 output/ 目录
python src/cli.py --text "你的文献内容..."
# 处理文件 + 品牌信息
python src/cli.py --file document.pdf --brand "品牌名, 官网地址"
# 启用联网检索 + 导出 Word 文档
python src/cli.py --file doc.pdf --search --docx
# 全功能:文件 + 品牌 + 联网检索 + Word导出
python src/cli.py --file doc.pdf --brand "华为, https://www.huawei.com" --search --docx| 参数 | 说明 |
|---|---|
--text "内容" |
直接输入文本 |
--file 路径 |
输入文件(PDF/Word/Excel/PPT/TXT) |
--brand "信息" |
品牌补充信息 |
--search |
启用联网检索(增加1-2分钟) |
--docx |
导出 Word 文档(.docx) |
--output 路径 |
指定 Markdown 输出路径 |
--verbose |
显示详细日志 |
pip install -e ".[webui]"
streamlit run src/web_ui.py浏览器打开后可上传文件、粘贴文本、勾选联网检索和 Word 导出,实时查看处理进度。
python -m uvicorn src.main:app --host 127.0.0.1 --port 5000| 接口 | 方法 | 说明 |
|---|---|---|
/run |
POST | 同步执行 Agent |
/stream_run |
POST | SSE 流式执行 |
/cancel/{run_id} |
POST | 取消任务 |
/v1/chat/completions |
POST | OpenAI 兼容接口 |
/health |
GET | 健康检查 |
/graph_parameter |
GET | Agent 图参数 |
Swagger 文档:启动后访问 http://127.0.0.1:5000/docs
调用示例:
curl -X POST http://127.0.0.1:5000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"messages": [{"role": "user", "content": "请优化这篇文献内容..."}]}'pip install -e ".[mcp]"
# stdio 模式(Claude Desktop / Claude Code / WorkBuddy)
python src/mcp_server.py
# SSE HTTP 模式(Web 客户端)
python src/mcp_server.py --transport sse --port 5001配置 Claude Desktop(%APPDATA%\Claude\claude_desktop_config.json):
重要:不要在 MCP 配置中写
env字段传 API Key!Claude Code 的env会覆盖整个环境变量(包括 Windows 必需的PATH),导致 Python 找不到系统 DLL 而启动失败(错误码 -32000)。API Key 请在项目.env文件中配置,MCP Server 启动时自动读取。
{
"mcpServers": {
"geo-content-optimizer": {
"command": "python",
"args": ["src/mcp_server.py"],
"cwd": "/path/to/geo-content-optimizer"
}
}
}配置 WorkBuddy(~/.workbuddy/mcp.json):
{
"mcpServers": {
"geo-content-optimizer": {
"command": "/path/to/geo-content-optimizer/.venv/Scripts/python.exe",
"args": ["src/mcp_server.py"],
"cwd": "/path/to/geo-content-optimizer"
}
}
}MCP 工具列表:
| 工具 | 参数 | 说明 |
|---|---|---|
parse_document |
file_path: str |
解析 PDF/Word/TXT/XLS/PPT 文件 |
run_geo_pipeline |
cleaned_text, brand_info="", enable_search=false, user_requirements="", output_docx="" |
执行4阶段 GEO 流水线 |
web_search |
query: str, max_results=5 |
联网搜索 |
search_and_enrich |
text: str, brand_info="", max_queries=3 |
提取概念+搜索+合并 |
配置完成后,在 Claude/WorkBuddy 中直接对话即可调用:
用户: 请帮我优化这篇华为云的产品白皮书
Claude: → 调用 parse_document 解析文件
→ 调用 run_geo_pipeline 执行4阶段流水线
→ 返回成品文章
run_geo_pipeline 支持 user_requirements 参数(内容方向/目标人群/字数/风格/关键词/平台等)。传入后:
- 写作(Stage 3/4)按三层优先级裁定用户要求:合规/事实/黑帽红线(Tier 0)拒绝并给合规替代;GEO 底线(Tier 1,EE-A-T/ACES/语义实体密度)尽量双赢、二选一保 GEO;其他要求(Tier 2)在约束内最大化满足
- 评分(Stage 5)增独立第二轴"用户要求满足度"(0-100%),与 100 分 GEO 基线构成双闸门:GEO 达标 且 满足度≥80% 才可发布;合规冲突的要求被拒绝+给替代,不计入满足度
不传 user_requirements 则行为不变(第二轴不激活),与生态中 geo-writer/geo-scorer 技能的机制一致。
| 变量 | 必填 | 默认值 | 说明 |
|---|---|---|---|
OPENAI_API_KEY |
是 | — | LLM API Key |
OPENAI_BASE_URL |
否 | https://api.openai.com/v1 |
API 地址 |
OPENAI_MODEL_NAME |
否 | gpt-4o |
模型名称 |
AGENT_TEMPERATURE |
否 | 0.7 |
Agent 温度 |
AGENT_MAX_TOKENS |
否 | 32768 |
Agent 最大 tokens |
PIPELINE_MAX_CHUNK_CHARS |
否 | 60000 |
单块最大字符数(语义分块) |
PIPELINE_LLM_MAX_RETRIES |
否 | 3 |
LLM 重试次数(仅瞬时网络/限流错误) |
PIPELINE_LLM_TIMEOUT |
否 | 600 |
Pipeline LLM 调用超时秒数 |
PIPELINE_LLM_MODEL |
否 | 空(同 OPENAI_MODEL_NAME) | Pipeline 专用模型 |
PIPELINE_MAX_CONCURRENCY |
否 | 4 |
分块处理 / 联网检索并行并发度 |
PIPELINE_QUALITY_JUDGE |
否 | true |
是否启用 Stage 5 LLM 评分(关闭则零 token 成本) |
PIPELINE_QUALITY_THRESHOLD |
否 | 70 |
GEO 基线达标线(接入 judge prompt,并作为双闸门的 GEO 门) |
PIPELINE_REQUIREMENT_SATISFACTION_THRESHOLD |
否 | 80 |
用户要求满足度达标线(双闸门第二轴门,仅当传入 user_requirements 时启用) |
GEO_API_KEY |
否 | 空 | HTTP 写接口鉴权(配置后需 Authorization: Bearer) |
TAVILY_API_KEY |
否 | - | Tavily 搜索 Key(不配则用免费引擎) |
PGDATABASE_URL |
否 | — | PostgreSQL 连接(配置后持久化) |
S3_* |
否 | — | S3 存储配置 |
HTTP_PORT |
否 | 5000 |
HTTP 服务端口 |
MCP_SSE_PORT |
否 | 5001 |
MCP SSE 模式端口 |
geo-content-optimizer/
├── config/
│ └── agent_llm_config.json # Agent System Prompt + 模型配置
├── scripts/ # 运行脚本 (Linux/macOS)
├── src/
│ ├── __main__.py # python -m src 入口
│ ├── main.py # FastAPI HTTP 服务
│ ├── cli.py # CLI 交互模式
│ ├── mcp_server.py # MCP Server(接入Claude等AI工具)
│ ├── web_ui.py # Streamlit Web UI
│ ├── agents/
│ │ └── agent.py # Agent 构建(LangGraph)+ AgentState
│ ├── tools/
│ │ ├── geo_pipeline.py # 核心:4阶段流水线 + 智能分块 + Word导出
│ │ └── web_search.py # 联网检索(Tavily/Bing/DuckDuckGo)
│ ├── utils/
│ │ ├── file/
│ │ │ └── file.py # 文件解析(PDF/Word/Excel/PPT/TXT)
│ │ └── docx_export.py # Markdown → Word 文档转换
│ └── storage/
│ ├── memory/ # 内存持久化(默认)
│ ├── database/ # PostgreSQL(可选)
│ └── s3/ # S3 存储(可选)
├── run.bat # Windows 一键启动
├── setup.bat # Windows 一键安装
├── .env.example # 环境变量模板
├── pyproject.toml # 依赖配置
├── LICENSE # MIT License
└── README.md
| 层级 | 技术 |
|---|---|
| Agent 框架 | LangChain + LangGraph (create_react_agent) |
| LLM 调用 | ChatOpenAI(兼容所有 OpenAI API) |
| Web API | FastAPI + Uvicorn |
| Web UI | Streamlit(可选) |
| MCP 协议 | FastMCP(接入 Claude 等 AI 工具) |
| CLI | argparse + asyncio |
| 重试机制 | tenacity(指数退避 + JSON 自修复) |
| 持久化 | PostgreSQL(可选)+ S3(可选) |
欢迎贡献!
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/amazing-feature) - 提交修改 (
git commit -m 'Add amazing feature') - 推送分支 (
git push origin feature/amazing-feature) - 创建 Pull Request
开发环境设置:
python -m venv .venv
pip install -e ".[all]"
pip install pytest pytest-asyncioMIT License — 自由使用、修改和分发。