{"id":"e83aed27-bf22-44e3-939a-1ca1cfc737e0","entityType":"agent","slug":"clawhub-tangyuanmile-coder-aidso-xiasou-geo","name":"AIDSO 虾搜 GEO","canonicalUrl":"https://www.xpersona.co/agent/clawhub-tangyuanmile-coder-aidso-xiasou-geo","canonicalPath":"/agent/clawhub-tangyuanmile-coder-aidso-xiasou-geo","generatedAt":"2026-10-10T23:48:14.894Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T20:55:46.211Z","emptyReason":null},"description":"AIDSO虾搜 GEO 一体化 Skill，支持统一 API Key 绑定、检查、品牌诊断报告、品牌知识库、GEO 内容生产、GEO 问题挖掘。 Skill: AIDSO 虾搜 GEO Owner: tangyuanmile-coder Summary: AIDSO虾搜 GEO 一体化 Skill，支持统一 API Key 绑定、检查、品牌诊断报告、品牌知识库、GEO 内容生产、GEO 问题挖掘。 Tags: AIDSO:2.1.0, GEO:2.1.0, latest:2.1.2, xiasou:2.1.0 Version history: v2.1.2 | 2026-05-19T05:43:02.515Z | user - 文档部分更新：GEO 内容生产命令中的平台参数从 --ai-platform 修改为 --platform，更加统一和规范。 - 其余功能和使用规则保持不变。 v2.1.1 | 2026-05-18T08:38:26.427Z | user Version 2.1.1 - No file changes detected; behavior and","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.3K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s178c1t4ep9v3hme695cdz7b9983kw3j:aidso-xiasou-geo","sourceUrl":"https://clawhub.ai/tangyuanmile-coder/aidso-xiasou-geo","homepage":"https://clawhub.ai/tangyuanmile-coder/skills/aidso-xiasou-geo","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/tangyuanmile-coder/aidso-xiasou-geo","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/tangyuanmile-coder/skills/aidso-xiasou-geo","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":62,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"AIDSO虾搜 GEO 一体化 Skill，支持统一 API Key 绑定、检查、品牌诊断报告、品牌知识库、GEO 内容生产、GEO 问题挖掘。 Skill: AIDSO 虾搜 GEO Owner: tangyuanmile-coder Summary: AIDSO虾搜 GEO 一体化 Skill，支持统一 API K"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T20:55:46.211Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T20:55:46.211Z","emptyReason":null},"stars":null,"forks":null,"downloads":1260,"packageName":null,"latestVersion":"2.1.2","tractionLabel":"1.3K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T20:55:46.145Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T20:55:46.211Z","lastCrawledAt":"2026-10-10T20:55:46.145Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T20:55:46.145Z","lastVerifiedAt":null,"highlights":[{"version":"2.1.2","createdAt":"2026-05-19T05:43:02.515Z","changelog":"- 文档部分更新：GEO 内容生产命令中的平台参数从 --ai-platform 修改为 --platform，更加统一和规范。 - 其余功能和使用规则保持不变。","fileCount":17,"zipByteSize":27700},{"version":"2.1.1","createdAt":"2026-05-18T08:38:26.427Z","changelog":"Version 2.1.1 - No file changes detected; behavior and features unchanged from the previous version. - All functionalities, rules, and capabilities remain as previously documented.","fileCount":16,"zipByteSize":26287},{"version":"2.1.0","createdAt":"2026-05-18T07:46:26.010Z","changelog":"- Integrated four core GEO capabilities—brand diagnosis report, content generation, knowledge base addition, and AI question mining—into one unified skill. - Introduced unified API Key management via AIDSO_GEO_API_KEY; streamlined binding and checking commands. - Consolidated script behavior and file structure, with new tools for each core function and clear CLI usage instructions. - Standardized confirmation flows for key actions (e.g., diagnosis question confirmation, points usage). - Reworked rules to ensure all API returns are used as-is, with strict API Key security and usage guidelines. - Removed outdated command references and legacy scripts for a simplified, focused user experience.","fileCount":16,"zipByteSize":26358},{"version":"2.0.1","createdAt":"2026-04-27T06:18:06.474Z","changelog":"- Expanded GEO诊断相关 API 路由，新增 /openapi/skills/get_questions 和 /openapi/skills/band_report/md/v2 支持 POST 方法 - 更新 GEO诊断 API 路由表，替换原有 GET 请求为 POST，并采用新版路径 - 其他功能与规则保持一致，无破坏性变更 - 品牌诊断新增诊断问题确认环节，诊断问题数量不同，消耗的积分数不一样。","fileCount":10,"zipByteSize":21240},{"version":"2.0.0","createdAt":"2026-04-20T06:56:30.812Z","changelog":"AIDSO_虾搜GEO 2.0.0 - 全新支持 GEO 品牌诊断、知识库管理和 GEO 优化内容生产三大能力 - 新增 API key 绑定和鉴权流程，提升账户安全管理 - 引入详细的指令路由和自然语言意图识别机制 - 完善错误处理和用户积分提示逻辑 - 提供清晰的使用文档与执行约束，确保安全、准确响应","fileCount":10,"zipByteSize":21264}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s178c1t4ep9v3hme695cdz7b9983kw3j:aidso-xiasou-geo","setupComplexity":"medium","setupSteps":["Setup complexity is MEDIUM. Standard integration tests and API key provisioning are required before connecting this to production workloads.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-tangyuanmile-coder-aidso-xiasou-geo/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-tangyuanmile-coder-aidso-xiasou-geo/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-tangyuanmile-coder-aidso-xiasou-geo/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-tangyuanmile-coder-aidso-xiasou-geo/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-tangyuanmile-coder-aidso-xiasou-geo/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-tangyuanmile-coder-aidso-xiasou-geo/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T23:48:14.893Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-tangyuanmile-coder-aidso-xiasou-geo/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-tangyuanmile-coder-aidso-xiasou-geo/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-tangyuanmile-coder-aidso-xiasou-geo/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-tangyuanmile-coder-aidso-xiasou-geo/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-10T20:55:46.211Z","emptyReason":null},"readme":"Skill: AIDSO 虾搜 GEO\n\nOwner: tangyuanmile-coder\n\nSummary: AIDSO虾搜 GEO 一体化 Skill，支持统一 API Key 绑定、检查、品牌诊断报告、品牌知识库、GEO 内容生产、GEO 问题挖掘。\n\nTags: AIDSO:2.1.0, GEO:2.1.0, latest:2.1.2, xiasou:2.1.0\n\nVersion history:\n\nv2.1.2 | 2026-05-19T05:43:02.515Z | user\n\n- 文档部分更新：GEO 内容生产命令中的平台参数从 --ai-platform 修改为 --platform，更加统一和规范。\n- 其余功能和使用规则保持不变。\n\nv2.1.1 | 2026-05-18T08:38:26.427Z | user\n\nVersion 2.1.1\n\n- No file changes detected; behavior and features unchanged from the previous version.\n- All functionalities, rules, and capabilities remain as previously documented.\n\nv2.1.0 | 2026-05-18T07:46:26.010Z | user\n\n- Integrated four core GEO capabilities—brand diagnosis report, content generation, knowledge base addition, and AI question mining—into one unified skill.\n- Introduced unified API Key management via AIDSO_GEO_API_KEY; streamlined binding and checking commands.\n- Consolidated script behavior and file structure, with new tools for each core function and clear CLI usage instructions.\n- Standardized confirmation flows for key actions (e.g., diagnosis question confirmation, points usage).\n- Reworked rules to ensure all API returns are used as-is, with strict API Key security and usage guidelines.\n- Removed outdated command references and legacy scripts for a simplified, focused user experience.\n\nv2.0.1 | 2026-04-27T06:18:06.474Z | user\n\n- Expanded GEO诊断相关 API 路由，新增 /openapi/skills/get_questions 和 /openapi/skills/band_report/md/v2 支持 POST 方法\n- 更新 GEO诊断 API 路由表，替换原有 GET 请求为 POST，并采用新版路径\n- 其他功能与规则保持一致，无破坏性变更\n- 品牌诊断新增诊断问题确认环节，诊断问题数量不同，消耗的积分数不一样。\n\nv2.0.0 | 2026-04-20T06:56:30.812Z | user\n\nAIDSO_虾搜GEO 2.0.0\n\n- 全新支持 GEO 品牌诊断、知识库管理和 GEO 优化内容生产三大能力\n- 新增 API key 绑定和鉴权流程，提升账户安全管理\n- 引入详细的指令路由和自然语言意图识别机制\n- 完善错误处理和用户积分提示逻辑\n- 提供清晰的使用文档与执行约束，确保安全、准确响应\n\nArchive index:\n\nArchive v2.1.2: 17 files, 27700 bytes\n\nFiles: bind_api_key.py (5765b), CHANGELOG.md (513b), check_api_key.py (2475b), geo_content_tool.py (9786b), geo_report_tool.py (12410b), knowledge_tool.py (3792b), meta.json (113b), prompt_research.py (33678b), README.md (385b), requirements.txt (17b), skill-card.md (2373b), SKILL.md (5546b), test_content.json (103b), test_knowledge.json (73b), test_prompt.json (117b), test_report.json (190b), _meta.json (135b)\n\nFile v2.1.2:SKILL.md\n\n---\nname: aidso-xiasou\ndescription: AIDSO虾搜 GEO 一体化 Skill，支持统一 API Key 绑定、检查、品牌诊断报告、品牌知识库、GEO 内容生产、GEO 问题挖掘。\n---\n\n# AIDSO虾搜 GEO 一体化 Skill\n\n## 功能范围\n\n本 Skill 将以下 4 个能力合并到同一个 Skill 包中：\n\n1. GEO 品牌诊断报告\n2. GEO 内容生产\n3. 品牌知识库添加\n4. GEO 监测问题挖掘\n\n## API Key 统一规则\n\n当前 Skill 使用统一 API Key：\n\n```bash\nAIDSO_GEO_API_KEY\n```\n\nAPI Key 读取优先级：\n\n1. 系统环境变量 `AIDSO_GEO_API_KEY`\n2. 当前 Skill 目录下 `.env`\n\n绑定后会在当前 Skill 根目录生成 `.env`，内容生产、知识库、品牌诊断、问题挖掘四个能力都会直接读取该 `.env`。\n\n问题挖掘脚本 `prompt_research.py` 已改为读取统一 API Key 配置；`.state/prompt_research_bindings.json` 仅用于保存问题挖掘任务状态，不再保存 API Key。\n\n## 通用 API Key 操作\n\n### 检查 API Key\n\n```bash\npython3 check_api_key.py\n```\n\n### 绑定 API Key\n\n```bash\npython3 bind_api_key.py --api-key \"<用户提供的_api_key>\"\n```\n\n### 重新绑定 API Key\n\n```bash\npython3 bind_api_key.py --api-key \"<用户提供的_api_key>\" --force\n```\n\n如果未绑定 API Key，提示用户：\n\n```text\n使用虾搜 GEO 功能前，需要先绑定 AIDSO API Key。\nAPI Key 获取地址：https://geo.aidso.com/setting?type=apiKey\n请发送：绑定 api-key：你的_api_key\n```\n\n## 功能一：GEO 品牌诊断报告\n\n### 触发场景\n\n- 帮我生成某品牌的 GEO 报告\n- 给我一份某品牌的品牌诊断报告\n- 某品牌的 GEO 表现如何\n- 获取某品牌的诊断问题\n\n### 执行流程\n\n1. 先检查 API Key：\n\n```bash\npython3 check_api_key.py\n```\n\n2. 获取诊断问题：\n\n```bash\npython3 geo_report_tool.py questions --brand-name \"<品牌名称>\"\n```\n\n3. 将问题列表展示给用户，允许用户替换、删除、追加问题。\n\n4. 用户确认问题后，计算积分：\n\n```text\n消耗积分数 = 问题数 × 4\n```\n\n5. 用户确认积分后执行：\n\n```bash\npython3 geo_report_tool.py report --brand-name \"<品牌名称>\" --questions-json '<JSON数组字符串>'\n```\n\n### 品牌诊断强制规则\n\n1. 发起诊断任务前必须先让用户确认诊断问题。\n2. 发起诊断任务前必须先让用户确认消耗积分数。\n3. 成功后必须返回接口返回的 `brand_name` 和 `report_url`。\n4. 只有 `report_url` 返回 URL 时才算成功。\n5. 不得把任务 ID 当成报告地址。\n\n## 功能二：GEO 内容生产\n\n### 触发场景\n\n- 生成 GEO 内容\n- 针对某个 AI 问题生成内容\n- 生成适合 AI 引用的内容\n- 为某品牌生成内容优化文章\n\n### 必要参数\n\n1. 品牌名称\n2. AI 问题\n3. 目标优化平台\n4. 用户确认消耗 6 积分\n\n### 支持平台\n\n- 豆包\n- Deepseek\n- 腾讯元宝\n- 文心一言\n- 通义千问\n- KIMI\n- 抖音AI\n- 百度AI\n\n查看平台：\n\n```bash\npython3 geo_content_tool.py platforms\n```\n\n未确认积分时：\n\n```bash\npython3 geo_content_tool.py generate --brand \"<品牌名称>\" --issue \"<AI问题>\" --platform \"<平台名称>\"\n```\n\n用户确认后：\n\n```bash\npython3 geo_content_tool.py generate --brand \"<品牌名称>\" --issue \"<AI问题>\" --platform \"<平台名称>\" --confirmed\n```\n\n### 内容生产返回规则\n\n1. 不得摘要接口返回内容。\n2. 不得改写接口返回内容。\n3. 不得润色接口返回内容。\n4. 不得重新生成内容。\n5. 不得只回复“生成成功”。\n6. 必须把接口返回内容原样返回给用户。\n\n## 功能三：品牌知识库添加\n\n### 触发场景\n\n- 添加品牌知识\n- 写入品牌知识库\n- 保存某品牌的知识内容\n- 给某品牌补充知识库内容\n\n### 执行命令\n\n```bash\npython3 knowledge_tool.py add --brand-name \"<品牌名称>\" --content \"<知识内容>\"\n```\n\n### 知识库规则\n\n1. 只支持添加知识库内容。\n2. 不支持删除、修改、查询知识库。\n3. 返回成功后明确告知用户知识已添加。\n\n## 功能四：GEO 监测问题挖掘\n\n### 触发场景\n\n- 帮我生成某品牌的 GEO 问题\n- 帮我挖掘某品牌的 AI 搜索问题\n- 给某品牌生成 30 / 50 / 100 个问题\n- 帮我做问题挖掘\n\n### 必要参数\n\n1. 品牌名称 `brand_name`\n2. 产品词 `product_names`，可为空\n3. 生成问题数量 `gen_question_num`，仅支持 30、50、100\n\n### 积分规则\n\n| 生成问题数量 | 消耗积分 |\n|---|---:|\n| 30 个问题 | 18 积分 |\n| 50 个问题 | 20 积分 |\n| 100 个问题 | 25 积分 |\n\n### 执行流程\n\n1. 先检查 API Key：\n\n```bash\npython3 check_api_key.py\n```\n\n2. 用户未选择数量时，引导用户选择 30 / 50 / 100。\n\n3. 用户确认积分后执行：\n\n```bash\npython3 prompt_research.py \"<用户原始问题挖掘请求>\"\n```\n\n示例：\n\n```bash\npython3 prompt_research.py \"帮我给京东生成 50 个问题\"\n```\n\n4. 查询任务结果时执行：\n\n```bash\npython3 prompt_research.py \"继续\"\n```\n\n### 问题挖掘返回规则\n\n1. 如果接口返回 `success`，完整返回问题列表。\n2. 不得自行补充接口未返回的问题。\n3. 不得用二次总结替代接口结果。\n4. 可以整理成 Markdown 表格，但不得改变字段含义。\n\n## 全局安全规则\n\n1. 不要在回复中泄露完整 API Key。\n2. 如果需要展示 API Key，只能展示脱敏版本。\n3. 不得默认使用企业版预授权。\n4. 用户没有绑定 API Key 时，必须先引导绑定。\n5. 「虾搜」不得写作「瑕搜」「夏搜」。\n6. GEO 指生成式引擎优化，不是地理优化。\n\nFile v2.1.2:README.md\n\n# AIDSO虾搜 · GEO 一体化 Skill\n\n## 统一 API Key\n\n四个能力共用同一个 API Key 配置：\n\n```bash\nAIDSO_GEO_API_KEY\n```\n\n读取优先级：\n\n1. 系统环境变量 `AIDSO_GEO_API_KEY`\n2. 当前 Skill 目录 `.env` 文件中的 `AIDSO_GEO_API_KEY`\n\n绑定：\n\n```bash\npython3 bind_api_key.py --api-key \"你的 API Key\"\n```\n\n检查：\n\n```bash\npython3 check_api_key.py\n```\n\nFile v2.1.2:_meta.json\n\n{\n  \"ownerId\": \"kn782v9hb818axcrqs7p5y76wd833afk\",\n  \"slug\": \"aidso-xiasou-geo\",\n  \"version\": \"2.1.2\",\n  \"publishedAt\": 1779169382515\n}\n\nFile v2.1.2:CHANGELOG.md\n\n# 更新说明\n\n## v2.1.0\n\n- 将 `prompt_research.py` 的 API Key 读取方式改为统一配置：\n  1. 优先读取系统环境变量 `AIDSO_GEO_API_KEY`\n  2. 其次读取当前 Skill 根目录 `.env` 中的 `AIDSO_GEO_API_KEY`\n- 问题挖掘的 `.state/prompt_research_bindings.json` 仅保留任务状态，不再保存 API Key。\n- 删除 `sync_prompt_api_key.py`，因为问题挖掘脚本已直接共用统一 API Key 配置。\n- 保留内容生产、品牌知识库、品牌诊断脚本原逻辑不变。\n\nFile v2.1.2:skill-card.md\n\n## Description:\n\nAIDSO虾搜 GEO 一体化 Skill，支持统一 API Key 绑定、检查、品牌诊断报告、品牌知识库、GEO 内容生产、GEO 问题挖掘。\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[tangyuanmile-coder](https://clawhub.ai/user/tangyuanmile-coder)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and marketers use this skill to work with the AIDSO GEO service for brand diagnosis reports, brand knowledge additions, GEO content generation, and AI search question mining. Developers or agents running it need Python 3 and an AIDSO_GEO_API_KEY.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The security scan says the API-key binding flow sends the secret as ordinary content to a remote knowledge endpoint and stores keys locally in plaintext.\n\nMitigation: Use a low-privilege AIDSO key where possible, avoid entering secrets in normal chat or shell history, rotate any key previously bound with this version, and remove artifact/.env when no longer needed.\n\nRisk: The security guidance notes that GEO_API_BASE_URL or wrapper environment changes can redirect authenticated question-mining requests.\n\nMitigation: Keep the default API base URL unless a trusted operator intentionally changes it, and review wrapper environment variables before running authenticated commands.\n\n## Reference(s):\n\n- [ClawHub skill release](https://clawhub.ai/tangyuanmile-coder/skills/aidso-xiasou-geo)\n- [AIDSO GEO service](https://geo.aidso.com)\n- [AIDSO GEO API key settings](https://geo.aidso.com/setting?type=apiKey)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Shell commands, Configuration, Guidance]\n\n**Output Format:** [Markdown or JSON/text returned from AIDSO service, with shell commands for local helper scripts.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires Python 3 and AIDSO_GEO_API_KEY; outputs can include report URLs, generated GEO content, brand knowledge add status, and question lists.]\n\n## Skill Version(s):\n\n2.1.2 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v2.1.2:meta.json\n\n{\n  \"openclaw\": {\n    \"emoji\": \"🦐\",\n    \"requires\": {\n      \"anyBins\": [\n        \"python3\"\n      ]\n    }\n  }\n}\n\nFile v2.1.2:test_content.json\n\n{\"brand\":\"欧莱雅小蜜罐\",\"issue\":\"30岁左右抗老面霜推荐有哪些？\",\"platform\":\"豆包\"}\n\nFile v2.1.2:test_knowledge.json\n\n{\"brand_name\":\"欧莱雅小蜜罐\",\"content\":\"品牌知识内容示例\"}\n\nFile v2.1.2:test_prompt.json\n\n{\n  \"brand_name\": \"京东\",\n  \"product_names\": [\n    \"京东超市\",\n    \"京东mall\"\n  ],\n  \"gen_question_num\": 50\n}\n\nFile v2.1.2:test_report.json\n\n{\n  \"action\": \"report\",\n  \"brand_name\": \"斯凯奇\",\n  \"questions\": [\n    \"斯凯奇适合什么人群？\",\n    \"斯凯奇和耐克哪个更适合日常通勤？\"\n  ],\n  \"confirmed\": false\n}\n\nFile v2.1.2:requirements.txt\n\nrequests>=2.31.0\n\nArchive v2.1.1: 16 files, 26287 bytes\n\nFiles: bind_api_key.py (5765b), CHANGELOG.md (513b), check_api_key.py (2475b), geo_content_tool.py (9762b), geo_report_tool.py (12410b), knowledge_tool.py (3792b), meta.json (113b), prompt_research.py (33678b), README.md (385b), requirements.txt (17b), SKILL.md (5552b), test_content.json (106b), test_knowledge.json (73b), test_prompt.json (117b), test_report.json (190b), _meta.json (135b)\n\nFile v2.1.1:SKILL.md\n\n---\nname: aidso-xiasou\ndescription: AIDSO虾搜 GEO 一体化 Skill，支持统一 API Key 绑定、检查、品牌诊断报告、品牌知识库、GEO 内容生产、GEO 问题挖掘。\n---\n\n# AIDSO虾搜 GEO 一体化 Skill\n\n## 功能范围\n\n本 Skill 将以下 4 个能力合并到同一个 Skill 包中：\n\n1. GEO 品牌诊断报告\n2. GEO 内容生产\n3. 品牌知识库添加\n4. GEO 监测问题挖掘\n\n## API Key 统一规则\n\n当前 Skill 使用统一 API Key：\n\n```bash\nAIDSO_GEO_API_KEY\n```\n\nAPI Key 读取优先级：\n\n1. 系统环境变量 `AIDSO_GEO_API_KEY`\n2. 当前 Skill 目录下 `.env`\n\n绑定后会在当前 Skill 根目录生成 `.env`，内容生产、知识库、品牌诊断、问题挖掘四个能力都会直接读取该 `.env`。\n\n问题挖掘脚本 `prompt_research.py` 已改为读取统一 API Key 配置；`.state/prompt_research_bindings.json` 仅用于保存问题挖掘任务状态，不再保存 API Key。\n\n## 通用 API Key 操作\n\n### 检查 API Key\n\n```bash\npython3 check_api_key.py\n```\n\n### 绑定 API Key\n\n```bash\npython3 bind_api_key.py --api-key \"<用户提供的_api_key>\"\n```\n\n### 重新绑定 API Key\n\n```bash\npython3 bind_api_key.py --api-key \"<用户提供的_api_key>\" --force\n```\n\n如果未绑定 API Key，提示用户：\n\n```text\n使用虾搜 GEO 功能前，需要先绑定 AIDSO API Key。\nAPI Key 获取地址：https://geo.aidso.com/setting?type=apiKey\n请发送：绑定 api-key：你的_api_key\n```\n\n## 功能一：GEO 品牌诊断报告\n\n### 触发场景\n\n- 帮我生成某品牌的 GEO 报告\n- 给我一份某品牌的品牌诊断报告\n- 某品牌的 GEO 表现如何\n- 获取某品牌的诊断问题\n\n### 执行流程\n\n1. 先检查 API Key：\n\n```bash\npython3 check_api_key.py\n```\n\n2. 获取诊断问题：\n\n```bash\npython3 geo_report_tool.py questions --brand-name \"<品牌名称>\"\n```\n\n3. 将问题列表展示给用户，允许用户替换、删除、追加问题。\n\n4. 用户确认问题后，计算积分：\n\n```text\n消耗积分数 = 问题数 × 4\n```\n\n5. 用户确认积分后执行：\n\n```bash\npython3 geo_report_tool.py report --brand-name \"<品牌名称>\" --questions-json '<JSON数组字符串>'\n```\n\n### 品牌诊断强制规则\n\n1. 发起诊断任务前必须先让用户确认诊断问题。\n2. 发起诊断任务前必须先让用户确认消耗积分数。\n3. 成功后必须返回接口返回的 `brand_name` 和 `report_url`。\n4. 只有 `report_url` 返回 URL 时才算成功。\n5. 不得把任务 ID 当成报告地址。\n\n## 功能二：GEO 内容生产\n\n### 触发场景\n\n- 生成 GEO 内容\n- 针对某个 AI 问题生成内容\n- 生成适合 AI 引用的内容\n- 为某品牌生成内容优化文章\n\n### 必要参数\n\n1. 品牌名称\n2. AI 问题\n3. 目标优化平台\n4. 用户确认消耗 6 积分\n\n### 支持平台\n\n- 豆包\n- Deepseek\n- 腾讯元宝\n- 文心一言\n- 通义千问\n- KIMI\n- 抖音AI\n- 百度AI\n\n查看平台：\n\n```bash\npython3 geo_content_tool.py platforms\n```\n\n未确认积分时：\n\n```bash\npython3 geo_content_tool.py generate --brand \"<品牌名称>\" --issue \"<AI问题>\" --ai-platform \"<平台名称>\"\n```\n\n用户确认后：\n\n```bash\npython3 geo_content_tool.py generate --brand \"<品牌名称>\" --issue \"<AI问题>\" --ai-platform \"<平台名称>\" --confirmed\n```\n\n### 内容生产返回规则\n\n1. 不得摘要接口返回内容。\n2. 不得改写接口返回内容。\n3. 不得润色接口返回内容。\n4. 不得重新生成内容。\n5. 不得只回复“生成成功”。\n6. 必须把接口返回内容原样返回给用户。\n\n## 功能三：品牌知识库添加\n\n### 触发场景\n\n- 添加品牌知识\n- 写入品牌知识库\n- 保存某品牌的知识内容\n- 给某品牌补充知识库内容\n\n### 执行命令\n\n```bash\npython3 knowledge_tool.py add --brand-name \"<品牌名称>\" --content \"<知识内容>\"\n```\n\n### 知识库规则\n\n1. 只支持添加知识库内容。\n2. 不支持删除、修改、查询知识库。\n3. 返回成功后明确告知用户知识已添加。\n\n## 功能四：GEO 监测问题挖掘\n\n### 触发场景\n\n- 帮我生成某品牌的 GEO 问题\n- 帮我挖掘某品牌的 AI 搜索问题\n- 给某品牌生成 30 / 50 / 100 个问题\n- 帮我做问题挖掘\n\n### 必要参数\n\n1. 品牌名称 `brand_name`\n2. 产品词 `product_names`，可为空\n3. 生成问题数量 `gen_question_num`，仅支持 30、50、100\n\n### 积分规则\n\n| 生成问题数量 | 消耗积分 |\n|---|---:|\n| 30 个问题 | 18 积分 |\n| 50 个问题 | 20 积分 |\n| 100 个问题 | 25 积分 |\n\n### 执行流程\n\n1. 先检查 API Key：\n\n```bash\npython3 check_api_key.py\n```\n\n2. 用户未选择数量时，引导用户选择 30 / 50 / 100。\n\n3. 用户确认积分后执行：\n\n```bash\npython3 prompt_research.py \"<用户原始问题挖掘请求>\"\n```\n\n示例：\n\n```bash\npython3 prompt_research.py \"帮我给京东生成 50 个问题\"\n```\n\n4. 查询任务结果时执行：\n\n```bash\npython3 prompt_research.py \"继续\"\n```\n\n### 问题挖掘返回规则\n\n1. 如果接口返回 `success`，完整返回问题列表。\n2. 不得自行补充接口未返回的问题。\n3. 不得用二次总结替代接口结果。\n4. 可以整理成 Markdown 表格，但不得改变字段含义。\n\n## 全局安全规则\n\n1. 不要在回复中泄露完整 API Key。\n2. 如果需要展示 API Key，只能展示脱敏版本。\n3. 不得默认使用企业版预授权。\n4. 用户没有绑定 API Key 时，必须先引导绑定。\n5. 「虾搜」不得写作「瑕搜」「夏搜」。\n6. GEO 指生成式引擎优化，不是地理优化。\n\nFile v2.1.1:README.md\n\n# AIDSO虾搜 · GEO 一体化 Skill\n\n## 统一 API Key\n\n四个能力共用同一个 API Key 配置：\n\n```bash\nAIDSO_GEO_API_KEY\n```\n\n读取优先级：\n\n1. 系统环境变量 `AIDSO_GEO_API_KEY`\n2. 当前 Skill 目录 `.env` 文件中的 `AIDSO_GEO_API_KEY`\n\n绑定：\n\n```bash\npython3 bind_api_key.py --api-key \"你的 API Key\"\n```\n\n检查：\n\n```bash\npython3 check_api_key.py\n```\n\nFile v2.1.1:_meta.json\n\n{\n  \"ownerId\": \"kn782v9hb818axcrqs7p5y76wd833afk\",\n  \"slug\": \"aidso-xiasou-geo\",\n  \"version\": \"2.1.1\",\n  \"publishedAt\": 1779093506427\n}\n\nFile v2.1.1:CHANGELOG.md\n\n# 更新说明\n\n## v2.1.0\n\n- 将 `prompt_research.py` 的 API Key 读取方式改为统一配置：\n  1. 优先读取系统环境变量 `AIDSO_GEO_API_KEY`\n  2. 其次读取当前 Skill 根目录 `.env` 中的 `AIDSO_GEO_API_KEY`\n- 问题挖掘的 `.state/prompt_research_bindings.json` 仅保留任务状态，不再保存 API Key。\n- 删除 `sync_prompt_api_key.py`，因为问题挖掘脚本已直接共用统一 API Key 配置。\n- 保留内容生产、品牌知识库、品牌诊断脚本原逻辑不变。\n\nFile v2.1.1:meta.json\n\n{\n  \"openclaw\": {\n    \"emoji\": \"🦐\",\n    \"requires\": {\n      \"anyBins\": [\n        \"python3\"\n      ]\n    }\n  }\n}\n\nFile v2.1.1:test_content.json\n\n{\"brand\":\"欧莱雅小蜜罐\",\"issue\":\"30岁左右抗老面霜推荐有哪些？\",\"ai_platform\":\"豆包\"}\n\nFile v2.1.1:test_knowledge.json\n\n{\"brand_name\":\"欧莱雅小蜜罐\",\"content\":\"品牌知识内容示例\"}\n\nFile v2.1.1:test_prompt.json\n\n{\n  \"brand_name\": \"京东\",\n  \"product_names\": [\n    \"京东超市\",\n    \"京东mall\"\n  ],\n  \"gen_question_num\": 50\n}\n\nFile v2.1.1:test_report.json\n\n{\n  \"action\": \"report\",\n  \"brand_name\": \"斯凯奇\",\n  \"questions\": [\n    \"斯凯奇适合什么人群？\",\n    \"斯凯奇和耐克哪个更适合日常通勤？\"\n  ],\n  \"confirmed\": false\n}\n\nFile v2.1.1:requirements.txt\n\nrequests>=2.31.0\n\nArchive v2.1.0: 16 files, 26358 bytes\n\nFiles: bind_api_key.py (5765b), CHANGELOG.md (511b), check_api_key.py (2475b), geo_content_tool.py (9762b), geo_report_tool.py (12410b), knowledge_tool.py (3792b), meta.json (113b), prompt_research.py (33678b), README.md (484b), requirements.txt (17b), SKILL.md (5552b), test_content.json (106b), test_knowledge.json (73b), test_prompt.json (117b), test_report.json (190b), _meta.json (135b)\n\nFile v2.1.0:SKILL.md\n\n---\nname: aidso-xiasou\ndescription: AIDSO虾搜 GEO 一体化 Skill，支持统一 API Key 绑定、检查、品牌诊断报告、品牌知识库、GEO 内容生产、GEO 问题挖掘。\n---\n\n# AIDSO虾搜 GEO 一体化 Skill\n\n## 功能范围\n\n本 Skill 将以下 4 个能力合并到同一个 Skill 包中：\n\n1. GEO 品牌诊断报告\n2. GEO 内容生产\n3. 品牌知识库添加\n4. GEO 监测问题挖掘\n\n## API Key 统一规则\n\n当前 Skill 使用统一 API Key：\n\n```bash\nAIDSO_GEO_API_KEY\n```\n\nAPI Key 读取优先级：\n\n1. 系统环境变量 `AIDSO_GEO_API_KEY`\n2. 当前 Skill 目录下 `.env`\n\n绑定后会在当前 Skill 根目录生成 `.env`，内容生产、知识库、品牌诊断、问题挖掘四个能力都会直接读取该 `.env`。\n\n问题挖掘脚本 `prompt_research.py` 已改为读取统一 API Key 配置；`.state/prompt_research_bindings.json` 仅用于保存问题挖掘任务状态，不再保存 API Key。\n\n## 通用 API Key 操作\n\n### 检查 API Key\n\n```bash\npython3 check_api_key.py\n```\n\n### 绑定 API Key\n\n```bash\npython3 bind_api_key.py --api-key \"<用户提供的_api_key>\"\n```\n\n### 重新绑定 API Key\n\n```bash\npython3 bind_api_key.py --api-key \"<用户提供的_api_key>\" --force\n```\n\n如果未绑定 API Key，提示用户：\n\n```text\n使用虾搜 GEO 功能前，需要先绑定 AIDSO API Key。\nAPI Key 获取地址：https://geo.aidso.com/setting?type=apiKey\n请发送：绑定 api-key：你的_api_key\n```\n\n## 功能一：GEO 品牌诊断报告\n\n### 触发场景\n\n- 帮我生成某品牌的 GEO 报告\n- 给我一份某品牌的品牌诊断报告\n- 某品牌的 GEO 表现如何\n- 获取某品牌的诊断问题\n\n### 执行流程\n\n1. 先检查 API Key：\n\n```bash\npython3 check_api_key.py\n```\n\n2. 获取诊断问题：\n\n```bash\npython3 geo_report_tool.py questions --brand-name \"<品牌名称>\"\n```\n\n3. 将问题列表展示给用户，允许用户替换、删除、追加问题。\n\n4. 用户确认问题后，计算积分：\n\n```text\n消耗积分数 = 问题数 × 4\n```\n\n5. 用户确认积分后执行：\n\n```bash\npython3 geo_report_tool.py report --brand-name \"<品牌名称>\" --questions-json '<JSON数组字符串>'\n```\n\n### 品牌诊断强制规则\n\n1. 发起诊断任务前必须先让用户确认诊断问题。\n2. 发起诊断任务前必须先让用户确认消耗积分数。\n3. 成功后必须返回接口返回的 `brand_name` 和 `report_url`。\n4. 只有 `report_url` 返回 URL 时才算成功。\n5. 不得把任务 ID 当成报告地址。\n\n## 功能二：GEO 内容生产\n\n### 触发场景\n\n- 生成 GEO 内容\n- 针对某个 AI 问题生成内容\n- 生成适合 AI 引用的内容\n- 为某品牌生成内容优化文章\n\n### 必要参数\n\n1. 品牌名称\n2. AI 问题\n3. 目标优化平台\n4. 用户确认消耗 6 积分\n\n### 支持平台\n\n- 豆包\n- Deepseek\n- 腾讯元宝\n- 文心一言\n- 通义千问\n- KIMI\n- 抖音AI\n- 百度AI\n\n查看平台：\n\n```bash\npython3 geo_content_tool.py platforms\n```\n\n未确认积分时：\n\n```bash\npython3 geo_content_tool.py generate --brand \"<品牌名称>\" --issue \"<AI问题>\" --ai-platform \"<平台名称>\"\n```\n\n用户确认后：\n\n```bash\npython3 geo_content_tool.py generate --brand \"<品牌名称>\" --issue \"<AI问题>\" --ai-platform \"<平台名称>\" --confirmed\n```\n\n### 内容生产返回规则\n\n1. 不得摘要接口返回内容。\n2. 不得改写接口返回内容。\n3. 不得润色接口返回内容。\n4. 不得重新生成内容。\n5. 不得只回复“生成成功”。\n6. 必须把接口返回内容原样返回给用户。\n\n## 功能三：品牌知识库添加\n\n### 触发场景\n\n- 添加品牌知识\n- 写入品牌知识库\n- 保存某品牌的知识内容\n- 给某品牌补充知识库内容\n\n### 执行命令\n\n```bash\npython3 knowledge_tool.py add --brand-name \"<品牌名称>\" --content \"<知识内容>\"\n```\n\n### 知识库规则\n\n1. 只支持添加知识库内容。\n2. 不支持删除、修改、查询知识库。\n3. 返回成功后明确告知用户知识已添加。\n\n## 功能四：GEO 监测问题挖掘\n\n### 触发场景\n\n- 帮我生成某品牌的 GEO 问题\n- 帮我挖掘某品牌的 AI 搜索问题\n- 给某品牌生成 30 / 50 / 100 个问题\n- 帮我做问题挖掘\n\n### 必要参数\n\n1. 品牌名称 `brand_name`\n2. 产品词 `product_names`，可为空\n3. 生成问题数量 `gen_question_num`，仅支持 30、50、100\n\n### 积分规则\n\n| 生成问题数量 | 消耗积分 |\n|---|---:|\n| 30 个问题 | 18 积分 |\n| 50 个问题 | 20 积分 |\n| 100 个问题 | 25 积分 |\n\n### 执行流程\n\n1. 先检查 API Key：\n\n```bash\npython3 check_api_key.py\n```\n\n2. 用户未选择数量时，引导用户选择 30 / 50 / 100。\n\n3. 用户确认积分后执行：\n\n```bash\npython3 prompt_research.py \"<用户原始问题挖掘请求>\"\n```\n\n示例：\n\n```bash\npython3 prompt_research.py \"帮我给京东生成 50 个问题\"\n```\n\n4. 查询任务结果时执行：\n\n```bash\npython3 prompt_research.py \"继续\"\n```\n\n### 问题挖掘返回规则\n\n1. 如果接口返回 `success`，完整返回问题列表。\n2. 不得自行补充接口未返回的问题。\n3. 不得用二次总结替代接口结果。\n4. 可以整理成 Markdown 表格，但不得改变字段含义。\n\n## 全局安全规则\n\n1. 不要在回复中泄露完整 API Key。\n2. 如果需要展示 API Key，只能展示脱敏版本。\n3. 不得默认使用企业版预授权。\n4. 用户没有绑定 API Key 时，必须先引导绑定。\n5. 「虾搜」不得写作「瑕搜」「夏搜」。\n6. GEO 指生成式引擎优化，不是地理优化。\n\nFile v2.1.0:README.md\n\n# AIDSO虾搜 · GEO 一体化 Skill\n\n## 统一 API Key\n\n四个能力共用同一个 API Key 配置：\n\n```bash\nAIDSO_GEO_API_KEY\n```\n\n读取优先级：\n\n1. 系统环境变量 `AIDSO_GEO_API_KEY`\n2. 当前 Skill 目录 `.env` 文件中的 `AIDSO_GEO_API_KEY`\n\n绑定：\n\n```bash\npython3 bind_api_key.py --api-key \"你的 API Key\"\n```\n\n检查：\n\n```bash\npython3 check_api_key.py\n```\n\n问题挖掘 `prompt_research.py` 已直接读取统一配置，不需要再执行同步脚本。\n\nFile v2.1.0:_meta.json\n\n{\n  \"ownerId\": \"kn782v9hb818axcrqs7p5y76wd833afk\",\n  \"slug\": \"aidso-xiasou-geo\",\n  \"version\": \"2.1.0\",\n  \"publishedAt\": 1779090386010\n}\n\nFile v2.1.0:CHANGELOG.md\n\n# 更新说明\n\n## v1.1\n\n- 将 `prompt_research.py` 的 API Key 读取方式改为统一配置：\n  1. 优先读取系统环境变量 `AIDSO_GEO_API_KEY`\n  2. 其次读取当前 Skill 根目录 `.env` 中的 `AIDSO_GEO_API_KEY`\n- 问题挖掘的 `.state/prompt_research_bindings.json` 仅保留任务状态，不再保存 API Key。\n- 删除 `sync_prompt_api_key.py`，因为问题挖掘脚本已直接共用统一 API Key 配置。\n- 保留内容生产、品牌知识库、品牌诊断脚本原逻辑不变。\n\nFile v2.1.0:meta.json\n\n{\n  \"openclaw\": {\n    \"emoji\": \"🦐\",\n    \"requires\": {\n      \"anyBins\": [\n        \"python3\"\n      ]\n    }\n  }\n}\n\nFile v2.1.0:test_content.json\n\n{\"brand\":\"欧莱雅小蜜罐\",\"issue\":\"30岁左右抗老面霜推荐有哪些？\",\"ai_platform\":\"豆包\"}\n\nFile v2.1.0:test_knowledge.json\n\n{\"brand_name\":\"欧莱雅小蜜罐\",\"content\":\"品牌知识内容示例\"}\n\nFile v2.1.0:test_prompt.json\n\n{\n  \"brand_name\": \"京东\",\n  \"product_names\": [\n    \"京东超市\",\n    \"京东mall\"\n  ],\n  \"gen_question_num\": 50\n}\n\nFile v2.1.0:test_report.json\n\n{\n  \"action\": \"report\",\n  \"brand_name\": \"斯凯奇\",\n  \"questions\": [\n    \"斯凯奇适合什么人群？\",\n    \"斯凯奇和耐克哪个更适合日常通勤？\"\n  ],\n  \"confirmed\": false\n}\n\nFile v2.1.0:requirements.txt\n\nrequests>=2.31.0\n\nArchive v2.0.1: 10 files, 21240 bytes\n\nFiles: _meta.json (135b), package.json (617b), README.md (3844b), references/apikey.md (3505b), references/content.md (6592b), references/diagnosis.md (6964b), references/knowledge.md (5217b), scripts/content_poll.py (7219b), scripts/diagnosis_poll.py (10756b), SKILL.md (5647b)\n\nFile v2.0.1:SKILL.md\n\n---\nname: AIDSO_虾搜GEO\ndescription: |\n  AIDSO_虾搜GEO - GEO品牌诊断、知识库、GEO内容生产。\n\n  **当以下情况时使用此 Skill**：\n  (1) 用户要发起或查询品牌 GEO 诊断：如「帮我做一个XX的GEO诊断报告」「查一下XX的GEO表现」\n  (2) 用户要管理知识库：如「建知识库」「加到知识库」\n  (3) 用户要生成 GEO 优化内容：如「GEO内容生产」\nuser-invocable: true\nmetadata: {\"openclaw\":{\"emoji\":\"🦐\",\"baseUrl\":\"https://api.aidso.com\",\"homepage\":\"https://geo.aidso.com\",\"optionalEnv\":[\"AIDSO_GEO_API_KEY\"]}}\n---\n\n# AIDSO_虾搜GEO Skill\n\n## ⚠️ Agent 必读约束\n\n### 🌐 站点与域名\n- API 主域名：`https://api.aidso.com`\n- 官网：`https://geo.aidso.com`\n- API key 获取地址：`https://geo.aidso.com/setting?type=apiKey&platform=GEO`\n- 诊断结果查看页：`https://geo.aidso.com/completeAnalysis`\n\n> 所有业务 API 请求必须使用 AIDSO 的正式 API 域名。  \n> 官网链接仅用于用户查看、获取 API key、购买积分或查看结果。\n\n### 🔑 API key 绑定规则\nAIDSO GEO 能力依赖用户已绑定的 API key。\n\n**每次调用任何 AIDSO GEO 相关 API 前，先检查当前用户是否已保存 API key。**\n\n- 若已保存：直接继续执行用户原本请求\n- 若未保存：进入 API key 绑定流程\n- 若后端返回 `401`、`invalid token`、`鉴权失败`、明确表示 API key 无效：清空已保存 API key，并要求用户重新绑定\n\n> ⚠️ 当前绑定流程 **不做预验证**。  \n> 用户输入 API key 后，**直接保存**。  \n> 后续任意真实业务请求都会自动携带该 API key。  \n> 若 API key 不正确，由后端返回错误后再提示用户重新绑定。\n\n**API key 绑定的完整规则见：** `references/apikey.md`\n\n### 🔒 安全规则\n- 不要主动展示用户已保存的完整 API key\n- 不要在回复中回显完整 API key\n- 不要要求用户重复输入已保存的 API key\n- API key 仅用于调用 AIDSO GEO 相关接口\n- 若用户未绑定 API key，不要尝试调用任何需要鉴权的业务接口\n\n### 🧭 总体执行原则\n1. 先做意图识别，再路由到对应模块\n2. 命中具体能力后，读取对应 `references/*.md` 获取完整规则和接口说明\n3. 业务处理必须严格基于后端返回，不自行猜测品牌不存在、报告失败、内容生成失败等结论\n4. 所有 JSON 返回都按 UTF-8 解析\n5. 后台返回的错误文案应尽量原样返回给用户\n6. 若出现“积分不足”，在原始后台文案后追加购买提示：\n   `请前往 https://geo.aidso.com 购买积分`\n\n---\n\n## 指令路由表\n\n> 匹配指令后， 用 **read 工具** 读取对应的 `references/xxx.md` 获取完整 API 文档。\n\n| 指令 | 角色 | 说明 | 详细文档 |\n|------|------|------|---------|\n| `/aidso config` 或「绑定 API key」 | ⚙️ 配置 | 绑定、更新、重绑 API key | [references/apikey.md](references/apikey.md) |\n| `/aidso diagnosis` 或「GEO诊断」 | 📊 诊断官 | 品牌诊断、结果轮询、报告返回 | [references/diagnosis.md](references/diagnosis.md) |\n| `/aidso knowledge` 或「品牌知识库」 | 📚 知识管理员 | 品牌知识库CRUD | [references/knowledge.md](references/knowledge.md) |\n| `/aidso content` 或「GEO内容生产」 | ✍️ 内容生产官 | 根据品牌 + 问题 + 平台生成 GEO 优化内容 | [references/content.md](references/content.md) |\n\n---\n\n## 自然语言路由\n\n```\n「配置/绑定/连接爱搜」              → /aidso config\n「GEO诊断」相关                    → /aidso diagnosis\n「品牌知识库」相关                     → /aidso knowledge\n「生产内容/优化」相关               → /aidso content\n```\n\n**决策原则**：优先匹配最具体的意图。\n\n## API 路由表\n\n> > ⚠️ **构造请求时必须使用下表中的完整路径**，Base URL 为 `https://api.aidso.com`。如果收到 404，说明路径不对，请对照此表检查。\n\n### GEO诊断\n\n| 方法 | 路径 | 说明 | 详细文档 |\n|------|------|------|----------|\n| POST | `/openapi/skills/get_questions` | GEO诊断 | [references/diagnosis.md](references/diagnosis.md) |\n| POST | `/openapi/skills/band_report/md/v2` | GEO诊断 | [references/diagnosis.md](references/diagnosis.md) |\n\n### 品牌知识库\n\n| 方法 | 路径 | 说明 | 详细文档 |\n|------|------|------|----------|\n| POST | `/openapi/skills/save_content/md` | 品牌知识库 | [references/knowledge.md](references/knowledge.md) |\n\n### GEO内容生产\n\n| 方法 | 路径 | 说明 | 详细文档 |\n|------|------|------|----------|\n| POST | `/openapi/skills/run_realtime_report` | 品牌知识库 | [references/content.md](references/content.md) |\n\n---\n\n## 鉴权方式\n\n所有 AIDSO GEO 相关请求都使用用户已绑定的 API key。\n\n请求头格式：`x-api-key: {用户已绑定的_api_key}`\n\n## 通用错误处理\n\n```json\n{\n    \"code\": XXX,\n    \"msg\": \"XXXX\"\n}\n```\n\n| 错误码 | 说明 | 处理方式 |\n|--------|------|---------|\n| 401 | 鉴权失败 | 检查 API Key ，或重新绑定 |\n| 405 | 积分不足 | 引导充积分：请前往https://geo.aidso.com 购买积分 |\n| 405 | 其他错误 | 返回后台 `msg` |\n\n## 首次API Key配置成功后回复\n\n✅ AIDSO_虾搜GEO 配置完成！\n凭证已写入 openclaw.json，服务已自动热加载生效。\n现在你可以使用以下功能了：\n🔍 GEO诊断 — 「帮我做一个 XX 的GEO诊断」「做一个 XX 的品牌GEO报告」\n📚 品牌知识库 — 「上传品牌知识库」「把品牌介绍加入知识库」\n📝 GEO生产内容 - 「GEO优化」\n\n试试说吧！\n\nFile v2.0.1:README.md\n\n# AIDSO_虾搜GEO\n\n让 爱搜AI 成为你的 GEO 操盘手。随时诊断，随时生成，随时优化。\n\n---\n\n## ✨ 核心能力\n\n| 能力 | 说明 |\n|------|------|\n| **📎 一键品牌GEO诊断** | 输入品牌名称，确认诊断问题，生成GEO诊断报告 |\n| **📚 品牌知识库** | 支持品牌知识库存储、查询与后续内容沉淀管理 |\n| **🎤 GEO内容生产** | 输入品牌 + 问题 + 大模型平台，生成适合 GEO 优化的文本内容 |\n\n---\n\n## 💡 使用场景\n\n### 🔍 随手诊断品牌GEO现状\n\n> 👤 帮我做一个 斯凯奇 的GEO诊断报告\n>\n> 🤖 已为「斯凯奇」生成推荐诊断问题：\n>    1. 斯凯奇适合什么人群？\n>    2. 斯凯奇的核心优势是什么？\n>    3. 斯凯奇和同类品牌相比有什么特点？\n>    你可以直接回复“确认”使用这些问题，或发送你修改后的问题。\n>\n> 👤 确认\n> \n> 🤖 此次诊断将消耗12积分，是否确认？\n>\n> 👤 确认\n>\n> 🤖 诊断已发起，报告生成中，大约需要3~10分钟，请稍后……\n>\n> 🤖 最终返回：GEO诊断报告文件\n\n---\n\n### 🔍 先确认问题，再诊断品牌GEO现状\n\n> 👤 帮我做一个 斯凯奇 的GEO诊断报告\n>\n> 🤖 已为「斯凯奇」生成推荐诊断问题：\n>    1. 斯凯奇适合什么人群？\n>    2. 斯凯奇的核心优势是什么？\n>    3. 斯凯奇和同类品牌相比有什么特点？\n>    你可以直接回复“确认”使用这些问题，或发送你修改后的问题。\n>\n> 👤 改成这两个问题：\n>    斯凯奇在大模型中的品牌认知是怎样的？\n>    斯凯奇和耐克相比有什么差异？\n> \n> 🤖 已收到你修改后的问题。此次诊断将消耗20积分，是否确认？\n> \n> 👤 确认\n> \n> 🤖 诊断已发起，报告生成中，大约需要3~10分钟，请稍后……\n> \n> 🤖 最终返回：GEO诊断报告文件\n\n---\n\n### ✏️ GEO 内容生产\n\n> 👤 给 斯凯奇 生成一篇 GEO 优化内容，优化问题是 “运动鞋品牌推荐”， 优化的平台是“豆包”\n>\n> 🤖 返回适合 GEO 优化铺排的正文内容\n\n---\n\n### 🔗 品牌知识库\n\n**品牌线上资料太少**\n\n> 👤 帮我把这些品牌介绍和产品资料存到 欧莱雅 品牌知识库\n>\n> 🤖 已保存到品牌知识库，后续会基于这些资料做更准确的 GEO 诊断和内容生产。\n\n**补充品牌官网和产品文档**\n\n> 👤 把官网链接、产品手册和品牌介绍文件都加入到 欧莱雅 的品牌知识库\n>\n> 🤖 已加入品牌知识库，AI 后续会结合这些资料理解品牌信息。\n\n---\n\n## 📦 安装\n\n### 方式一：通过 ClawHub 安装\n\n```bash\nclawhub install aidso_xiasou_geo\n```\n\n### 方式二：让 龙虾 安装（推荐）\n\n> 帮我安装 https://clawhub.ai/tangyuanmile-coder/aidso-xiasou-geo-diagnosis\n\n---\n\n## 🔑 配置\n\n### 自动配置（默认）\n\n安装后首次使用时，AI 会自动发起 API Key：\n\n1. 你说「GEO诊断」或任何GEO相关操作\n2. AI 检测到未配置，提供API Key获取链接\n3. 点击链接，获取API key\n4. 输入给龙虾，继续执行你的请求\n\n> 💡 需要 [API Key的账户有积分]才能使用 API\n\n---\n\n## 🛠 支持的知识库类型\n\n| 类型 | 说明 | 支持 |\n|------|------|------|\n| `plain_text` | 纯文本 | ✅ 读写 |\n| `link` | 链接 | ✅ 读写 |\n| `file` | 上传文件（pdf、word、PPT、md等） | 📖 仅读取 |\n\n---\n\n## 📜 相关链接\n\n- [爱搜官网](https://aidso.com)\n- [ClawHub](https://clawhub.ai/tangyuanmile-coder/aidso-xiasou-geo-diagnosis)\n- [官网虾搜下载](https://geo.aidso.com/setting?type=apiKey&platform=GEO)\n- [品牌诊断页面](https://geo.aidso.com/completeAnalysis)\n\n---\n## License\n\nMIT-0 (MIT No Attribution) · Published on [ClawHub](https://clawhub.ai)\n\n---\n\npip install requests markdown weasyprint\n\nFile v2.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn782v9hb818axcrqs7p5y76wd833afk\",\n  \"slug\": \"aidso-xiasou-geo\",\n  \"version\": \"2.0.1\",\n  \"publishedAt\": 1777270686474\n}\n\nFile v2.0.1:references/apikey.md\n\n# API Key 绑定配置\n\n## 概述\n\n使用API Key 为用户绑定 AIDSO GEO 服务访问权限。适用于「配置 AIDSO」「连接 AIDSO」等场景，也是首次使用时自动触发的流程.\n\n> ⚠️ 当前绑定流程 **不做预验证**。  \n> 用户输入 API key 后，系统会**直接保存**。  \n> 后续任意 API 请求都会自动携带该 API key。  \n> 若 API key 不正确，后端会返回错误，此时再提示用户重新绑定。\n\n---\n\n## 自动触发条件\n\n每次调用任何 AIDSO GEO 相关 API 前，先检查 `API_KEY` 是否存在。若不存在， **自动发起 API Key 绑定流程** （无需用户主动说\"配置\"），告知用户需要先绑定才能使用。\n\n绑定完成后，继续执行用户原本的请求。\n\n---\n\n## 手动绑定入口\n\n当用户表达以下意图时，进入 API key 绑定流程：\n\n- 配置 API key\n- 绑定 API key\n- 绑定爱搜账号\n- 连接爱搜 GEO\n- 重新绑定\n- 更换 API key\n\n---\n\n## API Key 获取地址\n\n请提示用户前往以下地址获取 API Key:\n\n`https://geo.aidso.com/setting?type=apiKey&platform=GEO`\n\n---\n\n## 绑定流程\n\n### 1. 步骤 1： 提示用户输入 API Key\n\n当检测到用户尚未绑定 API Key 时，回复：\n\n> 首次使用需要绑定爱搜账号，请输入你在后台创建的 API key 完成绑定。  \n> 获取地址：https://geo.aidso.com/setting?type=apiKey&platform=GEO\n\n首次绑定时，可附加欢迎文案：\n\n> 欢迎使用 AIDSO 虾搜 GEO 技能。  \n> 后续将持续支持品牌诊断、知识库、GEO内容生产等能力，欢迎关注后续更新。\n>\n> ---\n>\n> ### 步骤 2：接收用户输入并直接保存\n\n当用户输入任意非空字符串作为 API key 时：\n\n- **不要在绑定阶段调用接口做预验证**\n- **不要因为格式不确定而拒绝保存**\n- 直接将该 API key 保存到当前 skill 配置中\n- 保存成功后，告知用户绑定完成\n- 若用户当前原本正在执行某个请求，则绑定完成后继续执行原请求\n\n---\n\n### 步骤 3：写入配置\n\n将用户输入的 API key 长久保存到 OpenClaw 配置中。\n\n建议配置结构如下：\n\n```json\n{\n  \"skills\": {\n    \"entries\": {\n      \"aidso-xiasou-geo-diagnosis\": {\n        \"apiKey\": \"用户输入的_api_key\"\n      }\n    }\n  }\n}\n```\n\n## 绑定成功后的回复模板\n\n如果用户只是单独完成绑定，没有紧接着执行其他动作，回复：\n\n> 绑定成功，以后可直接使用 AIDSO GEO 技能。\n> 试试输入「品牌诊断」「知识库」「GEO内容生产」\n> 如有其他自定义需求，可前往官网查看：http://geo.aidso.com\n\n如果用户是在执行某个动作过程中完成绑定，则回复：\n\n> 绑定成功，下面继续处理你的请求。\n\n然后继续执行原请求。\n\n## API Key 失效处理\n\n如果任意 AIDSO GEO API 返回以下情况之一：\n\n- HTTP 401\n- invalid token\n- 鉴权失败\n- 明确表示 API key 错误、无效、失效\n\n则必须执行以下处理：\n\n1. 清空当前已保存的 API key\n2. 不继续执行当前请求\n3. 提示用户重新输入正确的 API key\n\n回复模板：\n\n> 当前绑定的 API key 已失效或不正确，请重新输入你在后台创建的 API key 完成绑定。\n> 获取地址：https://geo.aidso.com/setting?type=apiKey&platform=GEO\n\n## 适配说明\n\n本配置文档适用于以下 AIDSO GEO 相关能力：\n\n- 品牌诊断\n- 知识库\n- GEO内容生产\n- 后续新增的其他 GEO 能力\n\n这些能力在执行前都应统一检查 API Key 是否已绑定。\n\nFile v2.0.1:references/content.md\n\n# GEO内容生产\n\n## 概述\n\n接口成功返回的是 **Markdown 格式文本**，字段为：\n\n- `data.final_article`\n\n该字段内容已经包含以下全部内容：\n\n1. GEO优化文章（终版）\n2. 建议发布网站\n3. 基础优化建议\n4. 生成依据说明\n5. 质检报告\n\n> ⚠️ 成功返回后，必须将 `data.final_article`的 markdown链接 **原样返回给用户**。  \n> 不要擅自修改、拆分、补充、重组、润色接口返回的任何内容。\n> ⚠️ 本模块只负责 GEO内容生产。\n> API key 绑定请查看：references/apikey.md\n\n## 支持的触发方式\n\n以下表达可视为 GEO内容生产意图：\n\n- GEO优化\n- 给 XX 生成 GEO优化内容\n- 给 XX 生成一篇 GEO文章\n- 帮我生成关于 XX 的 GEO优化文章\n- 针对某个 AI问题生成 GEO内容\n- 给 XX 生成适合大模型引用的内容\n- 针对某平台生成 GEO优化内容\n\n## 请求参数\n\n以下表达可视为 GEO内容生产意图：\n\n| 参数 | 类型 | 必填 | 说明 |\n| ----- | ----- | ----- | ----- |\n| `brand` | string | 是 | 要优化的品牌名称 |\n| `issue` | string | 是 | 要优化的AI问题 |\n| `platform` | string | 是 | 要优化的大模型平台 |\n\n### 参数说明\n\n1. `brand`\n   \n品牌名称\n不要自行纠正品牌名，不要将用户输入的品牌映射为其他名称。用户输入什么品牌，就传什么品牌。\n   \n2. `issue`\n   \n用户希望围绕哪个 AI问题生成 GEO内容。\n例如：\n- 露露适合什么人群\n- 欧莱雅小蜜罐值得买吗\n- XX品牌安全吗\n- XX品牌和竞品有什么区别\n   \n3. `platform`\n   \n用户指定的大模型平台。\n调用 API 时，不能直接传中文平台名，必须转换为对应字段值。\n\n---\n\n## 大模型平台字段映射\n\n当用户输入平台名称时，调用 API 前需要转换为对应的 `platform` 字段：\n\n| 用户输入平台 | API字段 |\n|------|------|\n| 豆包 | `DB` |\n| DeepSeek | `DP` |\n| 腾讯元宝 | `TXYB` |\n| 千问 | `TYQW` |\n| 百度AI | `BDAI` |\n| 文心 | `WXYY` |\n| KIMI | `KIMI` |\n| AI抖音 | `DYAI` |\n\n> ⚠️ 调用 API 时必须传字段值，不要直接传中文平台名。\n\n## 平台名称识别规则\n\n以下用户输入可归一后再映射：\n\n| 用户输入别名 | 归一平台 | API字段 |\n|------|------|------|\n| 豆包 | 豆包 | `DB` |\n| DeepSeek / deepseek / Deep Seek | DeepSeek | `DP` |\n| 腾讯元宝 / 元宝 | 腾讯元宝 | `TXYB` |\n| 千问 / 通义千问 | 千问 | `TYQW` |\n| 百度AI / 百度 | 百度AI | `BDAI` |\n| 文心 / 文心一言 | 文心 | `WXYY` |\n| KIMI / kimi | KIMI | `KIMI` |\n| AI抖音 / 抖音AI | AI抖音 | `DYAI` |\n\n---\n\n## 参数缺失处理规则\n\n### 1. 缺少品牌名称\n若用户未提供品牌名称，则不要调用内容生产接口，先追问：\n\n> 这篇 GEO内容是为哪个品牌生成的？请先提供品牌名称。\n\n### 2. 缺少 AI问题\n若用户未提供 AI问题，则不要调用内容生产接口，先追问：\n\n> 你希望围绕哪个 AI问题生成 GEO内容？请补充具体问题。\n\n### 3. 缺少大模型平台\n若用户未提供平台，则不要调用内容生产接口，先追问：\n\n> 你希望针对哪个大模型平台生成内容？请补充平台名称。\n\n### 4. 平台无法识别\n若用户输入的平台名称不在支持范围内，则不要调用内容生产接口，提示用户重新指定支持的平台：\n\n> 当前仅支持以下平台：豆包、DeepSeek、腾讯元宝、千问、百度AI、文心、KIMI、AI抖音。  \n> 请补充正确的平台名称后再生成。\n\n---\n\n## 积分确认规则\n\n正式发起 GEO内容生产前，必须先提示用户确认积分消耗。\n\n当前默认提示文案：\n\n> 本次 GEO内容生产将消耗6积分，是否确认？\n\n### 执行规则\n\n- 用户未确认前，不要调用内容生产接口\n- 用户确认后，才正式发起内容生产请求\n- 若用户取消，则终止本次内容生产流程\n\n---\n\n## 内容生产接口\n\n### 接口地址\n\n```\nPOST https://api.aidso.com/openapi/skills/run_realtime_report\n```\n\n### 请求头\n\n```\nx-api-key: {用户已绑定的_api_key}\n```\n\n### 请求体\n\n```\n{\n  \"brand\": \"欧莱雅\",\n  \"issue\": \"30岁左右抗老面霜推荐有哪些？\",\n  \"platform\": \"DB\"\n}\n```\n\n---\n\n## 成功返回结构\n\n接口成功返回：\n\n```\n{\n  \"code\": 200,\n  \"msg\": \"success\",\n  \"data\": {\n    \"final_article\": \"提示词3文章内容\"\n  }\n}\n```\n\n### 字段说明\n\n| 字段 | 类型 | 说明 |\n| ----- | ----- | ----- |\n| `final_article` | string | Markdown 格式的最终内容文本 |\n\n### final_article 内容说明\n\nfinal_article 本身已经包含以下全部内容：\n\nGEO优化文章（终版）\n建议发布网站\n基础优化建议\n生成依据说明\n质检报告\n\n⚠️ 不需要 skill 再次拆解这些内容。\n不需要 skill 再重组展示顺序。\n不需要 skill 再做摘要。\n不需要 skill 再生成“修订摘要”。\n必须直接原样返回接口里的 final_article。\n\n### 接口返回处理规则\n\n**处理中**\n\n{\n    \"code\": 200,\n    \"msg\": \"处理中请稍后\"\n}\n\n## 自动轮询规则\n\n当内容生产接口返回“处理中”时，应进入自动轮询流程。\n\n### 轮询频率\n\n每 1 分钟轮询一次\n\n### 最长轮询时间\n\n- 最长 30 分钟\n- 即最多轮询 30 次\n\n### 轮询执行方式\n\n使用独立轮询脚本\n\n```\npython3 scripts/content_poll.py \"{brand}\" \"{issue}\" \"{platform}\"\n```\n\n### 轮询方式\n\n继续调用同一个内容生产接口，使用相同请求参数。\n\n### 轮询结束条件\n\n**成功**\n\n满足以下条件即停止轮询并返回结果：\n\n- code == 200\n- msg == \"success\"\n- data.final_article 有值\n\n**失败**\n\n不满足以下任一条件即停止轮询并返回错误 msg：\n\n- 返回 data.final_article\n- 返回处理中状态\n\n**超时**\n\n若超过 30 分钟仍未完成，回复：\n\n> GEO内容暂未生成完成，请稍后请求获取结果。\n\n---\n\n## 手动继续查询规则\n\n除自动轮询外，也支持用户手动继续查询当前待生成内容结果。\n\n以下表达可视为继续查询：\n\n- 查询GEO生产内容\n- 查询文章\n\n### 执行规则\n\n- 若当前存在待生成任务，则继续调用同一个内容生产接口查询\n- 若当前不存在待生成任务，则提示用户重新发起 GEO内容生产请求\n\n推荐提示文案：\n\n> 当前没有待查询的内容生产任务，请重新发起 GEO内容生产请求。\n\n## 成功回复模板\n\n> 已为「{brand}」生成针对「{issue}」的 GEO内容，平台为「{platform_display_name}」。\n> 以下为最终生成内容：{final_article}\n\n然后直接原样返回 final_article。\n\nFile v2.0.1:references/diagnosis.md\n\n# GEO 诊断\n\n## 概述\n\n用于发起 AIDSO GEO 品牌诊断，并返回最终诊断报告。\n\n1. 用户输入品牌诊断请求\n2. 系统先获取品牌的推荐诊断问题\n3. 用户可对推荐问题进行确认或修改\n4. 问题确认完成后，再正式发起诊断\n5. 诊断完成后返回最终结果\n\n---\n\n## 支持的触发方式\n\n- 帮我做一个 XX 的 GEO 诊断报告\n- 生成 XX 的 GEO 诊断报告\n- 查一下 XX 的 GEO 表现\n\n---\n\n## 品牌提取规则\n\n当用户输入类似以下表达时，需要从中提取 `brandName`：\n\n- 帮我做一个**露露**的GEO诊断报告\n- 做一个**欧莱雅**的GEO诊断报告\n- 生成**XX品牌**的GEO诊断报告\n\n### 建议提取规则\n\n可按以下模式识别品牌名称：\n\n- `帮我做一个(.+?)的GEO诊断报告`\n- `做一个(.+?)的GEO诊断报告`\n- `生成(.+?)的GEO诊断报告`\n- `(.+?)的GEO诊断报告`\n\n> ⚠️ 不要自行纠正品牌名，不要把数据外品牌名映射成其他别名。  \n> 用户输入什么品牌，就传什么品牌。\n\n---\n\n## 问题交互规则\n\n正式诊断前，系统需要先为该品牌获取推荐诊断问题。\n\n### 交互目标\n\n- 让用户知道当前诊断将围绕哪些问题展开\n- 允许用户在正式诊断前调整问题\n- 避免直接对不合适的问题发起诊断\n\n**系统支持两种处理方式**\n\n1. 用户确认推荐问题\n   如果用户认可系统返回的问题列表，则可直接确认，进入正式诊断流程。\n\n2. 用户修改推荐问题\n   如果用户不认可推荐问题，则可以修改问题，系统应以用户最终确认的问题为准发起诊断。\n\n---\n\n## 推荐问题接口\n\n### 接口地址\n\n```\nPOST https://api.aidso.com//openapi/skills/get_questions\n```\n\n### 请求头\n\n```\nx-api-key: {用户已绑定的_api_key}\n```\n\n### 请求参数\n\n| 参数 | 类型 | 必填 | 说明 |\n|----|----|----|----|\n| `brand_name` | string | 是 | 要诊断的品牌名称 |\n\n### 成功返回示例\n\n```\n{\n    \"code\": 200,\n    \"msg\": \"成功\",\n    \"data\": [\n        \"哪个品牌的智能手机性价比高？\",\n        \"哪款笔记本电脑性能好？\",\n        \"平板电脑哪个牌子好用？\",\n        \"智能手表买什么品牌好？\",\n        \"智能家居品牌排名前十的有哪些？\"\n    ]\n}\n```\n\n### 推荐问题返回后的交互规则\n\n当系统拿到推荐问题后，应先展示给用户，再等待用户确认或修改。\n\n**推荐展示模板**\n\n> 已为 「{brandName}」生成推荐诊断问题：\n> \n> 1. \"{qustion_1}\"\n> 2. \"{question_2}\"\n> 3. \"{question_3}\"\n>\n> 你可以：\n> - 直接回复\"确认\"使用这些问题\n> - 直接发送修改后的问题列表\n\n### 用户修改规则\n\n若用户未确认，而是直接输入新的问题内容，则视为用户修改问题。\n\n**修改后的问题处理规则**\n\n- 以用户最终输入的问题为准\n- 不再强制使用系统推荐问题\n- 用户可输入 1 个或多个问题\n- 修改后的问题确认完成后，再进入积分确认流程\n\n**推荐提示文案**\n\n> 已收到你修改后的问题，接下来将基于这些问题发起诊断。\n\n---\n\n## 积分确认规则\n\n正式发起品牌诊断前，必须先根据最终确认的问题数计算实际消耗积分。\n\n### 计算规则\n\n实际消耗积分数 = 问题数 × 4\n\n### 说明\n\n- 问题数以用户最终确认的问题列表为准\n- 若用户使用系统推荐问题，则按推荐问题的最终数量计算\n- 若用户修改问题，则按修改后的最终问题数量计算\n- 用户未确认前，不要调用正式诊断接口\n\n### 提示文案：\n\n> 本次诊断共确认 {question_count} 个问题，预计消耗 {points} 积分，是否确认？\n\n---\n\n## 诊断发起流程\n\n### 步骤1：检查 API Key\n\n若未绑定，则先进入 API key 绑定流程。\n\n### 步骤2：提取品牌名\n\n从用户请求中识别品牌名，并保存为当前待诊断品牌。\n\n### 步骤3：获取推荐问题\n\n调用推荐问题接口，返回系统建议的诊断问题列表。\n\n### 步骤4：用户确认或修改问题\n\n- 用户确认：使用推荐问题\n- 用户修改：使用用户最终输入的问题\n\n### 步骤5：提示积分确认\n\n向用户提示：\n\n> 本次诊断共确认 {question_count} 个问题，预计消耗 {points} 积分，是否确认？\n\n### 步骤6：用户确认后发起诊断\n\n调用正式诊断接口\n\n---\n\n## 品牌诊断接口\n\n### 接口地址\n\n```\nPOST https://api.aidso.com//openapi/skills/band_report/md/v2\n```\n\n### 请求头\n\n```\nx-api-key: {用户已绑定的_api_key}\n```\n\n### 请求参数\n\n| 参数 | 类型 | 必填 | 说明 |\n|----|----|----|----|\n| `brand_name` | string | 是 | 要诊断的品牌名称 |\n| `questions` | array | 是 | 要诊断的问题 |\n\n---\n\n## 接口返回处理规则\n\n**成功并返回下载地址**\n\n```\n{\n  \"code\": 200,\n  \"msg\": \"success\",\n  \"data\": \"https://tcdn.aidso.com/skills/md/xxx.md\"\n}\n```\n\n**处理中**\n\n```\n{\n  \"code\": 200,\n  \"msg\": \"处理中请稍后\",\n  \"data\": \"3603f2bc691e4cc09f9089971f0d0380\"\n}\n\n**参数错误**\n\n```\n{\n  \"code\": 401,\n  \"msg\": \"invalid token\",\n}\n```\n\n**积分不足**\n\n```\n{\n  \"code\": 401,\n  \"msg\": \"积分不足\",\n}\n```\n\n**没有品牌名称**\n\n```\n{\n    \"code\": 405,\n    \"msg\": \"没有品牌名称,请传入参数{brandName}\",\n    \"data\": \"\"\n}\n```\n\n---\n\n## 自动轮询规则\n\n当品牌诊断接口返回“处理中请稍后”时，应进入自动轮询流程。\n\n### 轮询频率\n\n- 每 1 分钟轮询一次\n\n### 最长轮询时间\n\n- 最长 30 分钟\n- 即最多轮询 30 次\n\n### 推荐执行方式\n\n使用辅助脚本执行轮询：\n\n```\npython3 scripts/diagnosis_poll.py \"{brandName}\"\n```\n\n### 轮询方式\n\n继续调用同一个诊断接口：\n\n```\nPOST https://api.aidso.com//openapi/skills/band_report/md/v2\nx-api-key: {api_key}\n```\n\n### 轮询结束条件\n\n**成功**\n\nJSON中返回有效文件链接\n\n**失败**\n\n不满足以下任一条件即停止轮询并返回错误\"msg\"：\n\n- JSON中返回有效文件链接\n- 处理中\n\n**超时**\n\n若超过 30 分钟仍未完成，回复：\n\n> 诊断结果暂未生成完成，请稍后请求获取结果。\n> 也可以前往官网查看：https://geo.aidso.com/completeAnalysis\n\n---\n\n## 手动继续查询规则\n\n除自动轮询外，也支持用户手动查询当前待诊断品牌结果。\n\n以下表达可视为继续查询：\n\n- 继续\n- 查看结果\n- 查询结果\n- 查询报告\n\n### 执行规则\n\n- 若当前存在待诊断品牌，则继续调用同一个诊断接口查询\n- 若当前不存在待诊断品牌，则提示用户重新发起品牌诊断请求\n\n推荐提示文案：\n\n> 当前没有待查询的诊断任务，请重新发起品牌诊断请求。\n\n---\n\n## 返回结果处理规则\n\n接口返回的是 Markdown 链接\n\n- 直接返回 Markdown 链接\n- 拉取 Markdown 内容并返回\n\n> ⚠️ 成功返回后，必须将接口返回的 Markdown 链接 **原样返回给用户**。  \n> 不要擅自修改、拆分、补充、重组、润色接口返回的任何内容。\n\nFile v2.0.1:references/knowledge.md\n\n# 品牌知识库\n\n## 概述\n\n品牌知识库用于补充 AI 对品牌的理解。\n\n用户上传品牌知识内容时，必须明确该内容属于哪个品牌的知识库。  \n因此，无论上传的是纯文本还是 `.md` 文件，上传时都必须提供 `brand_name`。\n\n> ⚠️ 当前为知识库 **V1 简化版**。  \n> 本版本只支持 **上传知识库内容**，**不支持修改、查询、删除**。  \n> 仅支持上传：\n> - “纯文本”\n> - “Markdown 文件（.md）”\n\n---\n\n## 使用场景\n\n品牌知识库适合以下情况：\n\n- 品牌是新品牌、小品牌，互联网信息较少\n- AI 对品牌认知不完整，影响 GEO 诊断准确性\n- AI 内容生产与品牌实际情况不够贴合\n- 用户希望上传品牌介绍、产品资料、卖点、场景、FAQ、品牌故事等资料，补充品牌信息基础\n\n通过上传品牌知识库，后续 AI 在做 GEO 诊断与内容生产时，可以更贴近品牌真实信息。\n\n### 示例对话\n\n**触发上传知识库**\n\n> 👤 上传品牌知识库\n>\n> 🤖 好，先要确认两件事\n> 🤖 1. 要添加什么内容？（暂时只支持文本、链接、markdown格式文件）\n> 🤖 2. 添加到哪个品牌的知识库？\n> 🤖 直接发给我就行👇\n\n**直接上传知识库**\n>\n> 👤 把我的品牌官网：http://xxx.com 上传到欧莱雅的品牌知识库\n> 🤖 已上传到「露露」品牌知识库，后续会基于这些资料做更准确的 GEO 诊断和内容生产。\n\n**未提供品牌名**\n\n> 👤 把这段资料上传到品牌知识库\n> 🤖 这份知识内容属于哪个品牌？请输入品牌名称后再上传。\n\n**非md文件上传**\n\n> 👤 我上传一个 pdf 到品牌知识库\n> 🤖 当前品牌知识库仅支持上传纯文本或 .md 文件。请先将文件转换成 md 格式后再上传。\n\n---\n\n## 当前支持范围\n\n### ✅ 支持\n- 上传纯文本知识\n- 上传 Markdown 文件（`.md`）\n\n### ❌ 不支持\n- 查询知识库\n- 修改知识库\n- 删除知识库\n- 上传链接\n- 上传 PDF / Word / Excel / PPT / 图片 / 其他非 `.md` 文件\n\n---\n\n## 支持的知识库类型\n\n| 类型 | 说明 | 支持 |\n|------|------|------|\n| `plain_text` | 纯文本 | ✅ 上传 |\n| `file` | Markdown 文件（仅 .md，上传时自动转成文本） | ✅ 上传 |\n\n---\n\n## 不支持的文件类型\n\n若用户上传以下类型文件：\n\n- `.pdf`\n- `.doc`\n- `.docx`\n- `.txt`\n- `.xls`\n- `.xlsx`\n- `.ppt`\n- `.pptx`\n- 图片\n- 其他非 `.md` 文件\n\n则不要调用上传接口，直接提示用户：\n\n> 当前品牌知识库仅支持上传纯文本或 `.md` 文件。  \n> 请先将文件转换成 md 格式后再上传。\n\n---\n\n## 支持的触发方式\n\n以下表达可视为品牌知识库上传意图：\n\n- 上传品牌知识库\n- 上传品牌资料\n- 把这段内容上传到品牌知识库\n- 把这个 md 文件上传到品牌知识库\n- 先补充品牌资料到知识库\n- 把品牌介绍加入知识库\n\n---\n\n## 上传输入规则\n\n上传品牌知识库内容时，必须同时提供：\n\n- `brand_name`：该内容所属品牌\n- `content`：知识内容文本\n\n### 1. 纯文本上传\n当用户直接输入大段品牌资料文本时，视为纯文本上传。\n\n### 2. Markdown 文件上传\n当用户上传 `.md` 文件时：\n\n- 先读取 `.md` 文件内容\n- 将文件内容转成文本\n- 再按纯文本方式上传\n\n> ⚠️ `.md` 文件只是用户上传形式，不作为独立 API 类型处理。  \n> 调用 API 时，统一按文本内容上传。\n\n### 3. 品牌名称缺失\n若用户上传知识内容时未提供品牌名称，则不要调用上传接口，应先追问：\n\n> 这份知识内容属于哪个品牌？请输入品牌名称后再上传。\n\n---\n\n## 上传流程\n\n### 步骤 1：检查 API key\n若未绑定，则先进入 API key 绑定流程。\n\n### 步骤 2：检查品牌名称\n若用户未提供 `brand_name`，则不要上传，先要求用户补充品牌名称。\n\n### 步骤 3：识别上传内容类型\n\n#### 情况 A：纯文本\n若用户输入的是文本内容，则直接按文本上传。\n\n#### 情况 B：Markdown 文件\n若用户上传的是 `.md` 文件：\n- 先读取 `.md` 文件内容\n- 将文件内容转成文本\n- 再按文本方式上传\n\n#### 情况 C：其他文件\n若用户上传的是非 `.md` 文件，则拒绝上传并提示转换格式。\n\n### 步骤 4：调用知识库上传接口\n调用 API 时统一传：\n\n- `brand_name`\n- `content`\n\n### 步骤 5：返回上传结果\n- 成功：告知用户已上传成功\n- 失败：返回后端错误文案\n- API key 无效：要求重新绑定\n\n---\n\n## 知识库上传接口\n\n### 接口地址\n\n```\nPOST  https://api.aidso.com/openapi/skills/save_content/md\n```\n\n### 请求头\n\n```\nx-api-key: {用户已绑定的_api_key}\n```\n\n---\n\n## 请求参数\n\n```\n{\n    \"content\": \"知识内容\",\n    \"brand_name\": \"品牌名称\"\n}\n```\n\n### 字段说明\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `brand_name` | string | 是 | 知识内容所属品牌 |\n| `content` | string | 是 | 知识内容正文；若用户上传的是 .md 文件，则传入读取后的 Markdown 文本内容 |\n\n### 返回结构\n\n{\n    \"code\": 200,\n    \"msg\": \"success\",\n    \"data\": true\n}\n\nFile v2.0.1:package.json\n\n{\n  \"name\": \"aidso-xiasou-geo\",\n  \"version\": \"2.0.0\",\n  \"description\": \"AIDSO 虾搜GEO Skill —— 支持 API key 绑定、品牌诊断、品牌知识库、GEO内容生产。\",\n  \"license\": \"MIT-0\",\n  \"author\": \"AIDSO\",\n  \"homepage\": \"https://geo.aidso.com\",\n  \"keywords\": [\n    \"aidso\",\n    \"geo\",\n    \"brand diagnosis\",\n    \"knowledge base\",\n    \"content generation\",\n    \"openclaw\",\n    \"skill\"\n  ],\n  \"clawhub\": {\n    \"acceptLicenseTerms\": true\n  },\n  \"openclaw\": {\n    \"minVersion\": \"0.1.0\",\n    \"baseUrl\": \"https://api.aidso.com\",\n    \"requires\": {},\n    \"optionalEnv\": [\n      \"AIDSO_GEO_API_KEY\"\n    ]\n  }\n}\n\nArchive v2.0.0: 10 files, 21264 bytes\n\nFiles: _meta.json (135b), package.json (617b), README.md (2727b), references/apikey.md (3505b), references/content.md (6592b), references/diagnosis.md (4115b), references/knowledge.md (5217b), scripts/content_poll.py (7219b), scripts/diagnosis_poll.py (14963b), SKILL.md (5556b)\n\nFile v2.0.0:SKILL.md\n\n---\nname: AIDSO_虾搜GEO\ndescription: |\n  AIDSO_虾搜GEO - GEO品牌诊断、知识库、GEO内容生产。\n\n  **当以下情况时使用此 Skill**：\n  (1) 用户要发起或查询品牌 GEO 诊断：如「帮我做一个XX的GEO诊断报告」「查一下XX的GEO表现」\n  (2) 用户要管理知识库：如「建知识库」「加到知识库」\n  (3) 用户要生成 GEO 优化内容：如「GEO内容生产」\nuser-invocable: true\nmetadata: {\"openclaw\":{\"emoji\":\"🦐\",\"baseUrl\":\"https://api.aidso.com\",\"homepage\":\"https://geo.aidso.com\",\"optionalEnv\":[\"AIDSO_GEO_API_KEY\"]}}\n---\n\n# AIDSO_虾搜GEO Skill\n\n## ⚠️ Agent 必读约束\n\n### 🌐 站点与域名\n- API 主域名：`https://api.aidso.com`\n- 官网：`https://geo.aidso.com`\n- API key 获取地址：`https://geo.aidso.com/setting?type=apiKey&platform=GEO`\n- 诊断结果查看页：`https://geo.aidso.com/completeAnalysis`\n\n> 所有业务 API 请求必须使用 AIDSO 的正式 API 域名。  \n> 官网链接仅用于用户查看、获取 API key、购买积分或查看结果。\n\n### 🔑 API key 绑定规则\nAIDSO GEO 能力依赖用户已绑定的 API key。\n\n**每次调用任何 AIDSO GEO 相关 API 前，先检查当前用户是否已保存 API key。**\n\n- 若已保存：直接继续执行用户原本请求\n- 若未保存：进入 API key 绑定流程\n- 若后端返回 `401`、`invalid token`、`鉴权失败`、明确表示 API key 无效：清空已保存 API key，并要求用户重新绑定\n\n> ⚠️ 当前绑定流程 **不做预验证**。  \n> 用户输入 API key 后，**直接保存**。  \n> 后续任意真实业务请求都会自动携带该 API key。  \n> 若 API key 不正确，由后端返回错误后再提示用户重新绑定。\n\n**API key 绑定的完整规则见：** `references/apikey.md`\n\n### 🔒 安全规则\n- 不要主动展示用户已保存的完整 API key\n- 不要在回复中回显完整 API key\n- 不要要求用户重复输入已保存的 API key\n- API key 仅用于调用 AIDSO GEO 相关接口\n- 若用户未绑定 API key，不要尝试调用任何需要鉴权的业务接口\n\n### 🧭 总体执行原则\n1. 先做意图识别，再路由到对应模块\n2. 命中具体能力后，读取对应 `references/*.md` 获取完整规则和接口说明\n3. 业务处理必须严格基于后端返回，不自行猜测品牌不存在、报告失败、内容生成失败等结论\n4. 所有 JSON 返回都按 UTF-8 解析\n5. 后台返回的错误文案应尽量原样返回给用户\n6. 若出现“积分不足”，在原始后台文案后追加购买提示：\n   `请前往 https://geo.aidso.com 购买积分`\n\n---\n\n## 指令路由表\n\n> 匹配指令后， 用 **read 工具** 读取对应的 `references/xxx.md` 获取完整 API 文档。\n\n| 指令 | 角色 | 说明 | 详细文档 |\n|------|------|------|---------|\n| `/aidso config` 或「绑定 API key」 | ⚙️ 配置 | 绑定、更新、重绑 API key | [references/apikey.md](references/apikey.md) |\n| `/aidso diagnosis` 或「GEO诊断」 | 📊 诊断官 | 品牌诊断、结果轮询、报告返回 | [references/diagnosis.md](references/diagnosis.md) |\n| `/aidso knowledge` 或「品牌知识库」 | 📚 知识管理员 | 品牌知识库CRUD | [references/knowledge.md](references/knowledge.md) |\n| `/aidso content` 或「GEO内容生产」 | ✍️ 内容生产官 | 根据品牌 + 问题 + 平台生成 GEO 优化内容 | [references/content.md](references/content.md) |\n\n---\n\n## 自然语言路由\n\n```\n「配置/绑定/连接爱搜」              → /aidso config\n「GEO诊断」相关                    → /aidso diagnosis\n「品牌知识库」相关                     → /aidso knowledge\n「生产内容/优化」相关               → /aidso content\n```\n\n**决策原则**：优先匹配最具体的意图。\n\n## API 路由表\n\n> > ⚠️ **构造请求时必须使用下表中的完整路径**，Base URL 为 `https://api.aidso.com`。如果收到 404，说明路径不对，请对照此表检查。\n\n### GEO诊断\n\n| 方法 | 路径 | 说明 | 详细文档 |\n|------|------|------|----------|\n| GET | `/openapi/skills/band_report/md?brandName={brandName` | GEO诊断 | [references/diagnosis.md](references/diagnosis.md) |\n\n### 品牌知识库\n\n| 方法 | 路径 | 说明 | 详细文档 |\n|------|------|------|----------|\n| POST | `/openapi/skills/save_content/md` | 品牌知识库 | [references/knowledge.md](references/knowledge.md) |\n\n### GEO内容生产\n\n| 方法 | 路径 | 说明 | 详细文档 |\n|------|------|------|----------|\n| POST | `/openapi/skills/run_realtime_report` | 品牌知识库 | [references/content.md](references/content.md) |\n\n---\n\n## 鉴权方式\n\n所有 AIDSO GEO 相关请求都使用用户已绑定的 API key。\n\n请求头格式：`x-api-key: {用户已绑定的_api_key}`\n\n## 通用错误处理\n\n```json\n{\n    \"code\": XXX,\n    \"msg\": \"XXXX\"\n}\n```\n\n| 错误码 | 说明 | 处理方式 |\n|--------|------|---------|\n| 401 | 鉴权失败 | 检查 API Key ，或重新绑定 |\n| 405 | 积分不足 | 引导充积分：请前往https://geo.aidso.com 购买积分 |\n| 405 | 其他错误 | 返回后台 `msg` |\n\n## 首次API Key配置成功后回复\n\n✅ AIDSO_虾搜GEO 配置完成！\n凭证已写入 openclaw.json，服务已自动热加载生效。\n现在你可以使用以下功能了：\n🔍 GEO诊断 — 「帮我做一个 XX 的GEO诊断」「做一个 XX 的品牌GEO报告」\n📚 品牌知识库 — 「上传品牌知识库」「把品牌介绍加入知识库」\n📝 GEO生产内容 - 「GEO优化」\n\n试试说吧！\n\nFile v2.0.0:README.md\n\n# AIDSO_虾搜GEO\n\n让 爱搜AI 成为你的 GEO 操盘手。随时诊断，随时生成，随时优化。\n\n---\n\n## ✨ 核心能力\n\n| 能力 | 说明 |\n|------|------|\n| **📎 一键品牌GEO诊断** | 输入品牌名称，生成GEO诊断报告 |\n| **📚 品牌知识库** | 支持品牌知识库存储、查询与后续内容沉淀管理 |\n| **🎤 GEO内容生产** | 输入品牌 + 问题 + 大模型平台，生成适合 GEO 优化的文本内容 |\n\n---\n\n## 💡 使用场景\n\n### 🔍 随手诊断品牌GEO现状\n\n> 👤 帮我做一个 斯凯奇 的GEO诊断报告\n>\n> 🤖 此次诊断将消耗20积分，是否确认？\n>\n> 👤 确认\n>\n> 🤖 诊断已发起，报告生成中，大约需要3~10分钟，请稍后……\n>\n> 🤖 最终返回：GEO诊断报告文件\n\n---\n\n### ✏️ GEO 内容生产\n\n> 👤 给 斯凯奇 生成一篇 GEO 优化内容，优化问题是 “运动鞋品牌推荐”， 优化的平台是“豆包”\n>\n> 🤖 返回适合 GEO 优化铺排的正文内容\n\n---\n\n### 🔗 品牌知识库\n\n**品牌线上资料太少**\n\n> 👤 帮我把这些品牌介绍和产品资料存到 欧莱雅 品牌知识库\n>\n> 🤖 已保存到品牌知识库，后续会基于这些资料做更准确的 GEO 诊断和内容生产。\n\n**补充品牌官网和产品文档**\n\n> 👤 把官网链接、产品手册和品牌介绍文件都加入到 欧莱雅 的品牌知识库\n>\n> 🤖 已加入品牌知识库，AI 后续会结合这些资料理解品牌信息。\n\n---\n\n## 📦 安装\n\n### 方式一：通过 ClawHub 安装\n\n```bash\nclawhub install aidso_xiasou_geo\n```\n\n### 方式二：让 龙虾 安装（推荐）\n\n> 帮我安装 https://clawhub.ai/tangyuanmile-coder/aidso-xiasou-geo-diagnosis\n\n---\n\n## 🔑 配置\n\n### 自动配置（默认）\n\n安装后首次使用时，AI 会自动发起 API Key：\n\n1. 你说「GEO诊断」或任何GEO相关操作\n2. AI 检测到未配置，提供API Key获取链接\n3. 点击链接，获取API key\n4. 输入给龙虾，继续执行你的请求\n\n> 💡 需要 [API Key的账户有积分]才能使用 API\n\n---\n\n## 🛠 支持的知识库类型\n\n| 类型 | 说明 | 支持 |\n|------|------|------|\n| `plain_text` | 纯文本 | ✅ 读写 |\n| `link` | 链接 | ✅ 读写 |\n| `file` | 上传文件（pdf、word、PPT、md等） | 📖 仅读取 |\n\n---\n\n## 📜 相关链接\n\n- [爱搜官网](https://aidso.com)\n- [ClawHub](https://clawhub.ai/tangyuanmile-coder/aidso-xiasou-geo-diagnosis)\n- [官网虾搜下载](https://geo.aidso.com/setting?type=apiKey&platform=GEO)\n- [品牌诊断页面](https://geo.aidso.com/completeAnalysis)\n\n---\n## License\n\nMIT-0 (MIT No Attribution) · Published on [ClawHub](https://clawhub.ai)\n\n---\n\npip install requests markdown weasyprint\n\nFile v2.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn782v9hb818axcrqs7p5y76wd833afk\",\n  \"slug\": \"aidso-xiasou-geo\",\n  \"version\": \"2.0.0\",\n  \"publishedAt\": 1776668190812\n}\n\nFile v2.0.0:references/apikey.md\n\n# API Key 绑定配置\n\n## 概述\n\n使用API Key 为用户绑定 AIDSO GEO 服务访问权限。适用于「配置 AIDSO」「连接 AIDSO」等场景，也是首次使用时自动触发的流程.\n\n> ⚠️ 当前绑定流程 **不做预验证**。  \n> 用户输入 API key 后，系统会**直接保存**。  \n> 后续任意 API 请求都会自动携带该 API key。  \n> 若 API key 不正确，后端会返回错误，此时再提示用户重新绑定。\n\n---\n\n## 自动触发条件\n\n每次调用任何 AIDSO GEO 相关 API 前，先检查 `API_KEY` 是否存在。若不存在， **自动发起 API Key 绑定流程** （无需用户主动说\"配置\"），告知用户需要先绑定才能使用。\n\n绑定完成后，继续执行用户原本的请求。\n\n---\n\n## 手动绑定入口\n\n当用户表达以下意图时，进入 API key 绑定流程：\n\n- 配置 API key\n- 绑定 API key\n- 绑定爱搜账号\n- 连接爱搜 GEO\n- 重新绑定\n- 更换 API key\n\n---\n\n## API Key 获取地址\n\n请提示用户前往以下地址获取 API Key:\n\n`https://geo.aidso.com/setting?type=apiKey&platform=GEO`\n\n---\n\n## 绑定流程\n\n### 1. 步骤 1： 提示用户输入 API Key\n\n当检测到用户尚未绑定 API Key 时，回复：\n\n> 首次使用需要绑定爱搜账号，请输入你在后台创建的 API key 完成绑定。  \n> 获取地址：https://geo.aidso.com/setting?type=apiKey&platform=GEO\n\n首次绑定时，可附加欢迎文案：\n\n> 欢迎使用 AIDSO 虾搜 GEO 技能。  \n> 后续将持续支持品牌诊断、知识库、GEO内容生产等能力，欢迎关注后续更新。\n>\n> ---\n>\n> ### 步骤 2：接收用户输入并直接保存\n\n当用户输入任意非空字符串作为 API key 时：\n\n- **不要在绑定阶段调用接口做预验证**\n- **不要因为格式不确定而拒绝保存**\n- 直接将该 API key 保存到当前 skill 配置中\n- 保存成功后，告知用户绑定完成\n- 若用户当前原本正在执行某个请求，则绑定完成后继续执行原请求\n\n---\n\n### 步骤 3：写入配置\n\n将用户输入的 API key 长久保存到 OpenClaw 配置中。\n\n建议配置结构如下：\n\n```json\n{\n  \"skills\": {\n    \"entries\": {\n      \"aidso-xiasou-geo-diagnosis\": {\n        \"apiKey\": \"用户输入的_api_key\"\n      }\n    }\n  }\n}\n```\n\n## 绑定成功后的回复模板\n\n如果用户只是单独完成绑定，没有紧接着执行其他动作，回复：\n\n> 绑定成功，以后可直接使用 AIDSO GEO 技能。\n> 试试输入「品牌诊断」「知识库」「GEO内容生产」\n> 如有其他自定义需求，可前往官网查看：http://geo.aidso.com\n\n如果用户是在执行某个动作过程中完成绑定，则回复：\n\n> 绑定成功，下面继续处理你的请求。\n\n然后继续执行原请求。\n\n## API Key 失效处理\n\n如果任意 AIDSO GEO API 返回以下情况之一：\n\n- HTTP 401\n- invalid token\n- 鉴权失败\n- 明确表示 API key 错误、无效、失效\n\n则必须执行以下处理：\n\n1. 清空当前已保存的 API key\n2. 不继续执行当前请求\n3. 提示用户重新输入正确的 API key\n\n回复模板：\n\n> 当前绑定的 API key 已失效或不正确，请重新输入你在后台创建的 API key 完成绑定。\n> 获取地址：https://geo.aidso.com/setting?type=apiKey&platform=GEO\n\n## 适配说明\n\n本配置文档适用于以下 AIDSO GEO 相关能力：\n\n- 品牌诊断\n- 知识库\n- GEO内容生产\n- 后续新增的其他 GEO 能力\n\n这些能力在执行前都应统一检查 API Key 是否已绑定。\n\nFile v2.0.0:references/content.md\n\n# GEO内容生产\n\n## 概述\n\n接口成功返回的是 **Markdown 格式文本**，字段为：\n\n- `data.final_article`\n\n该字段内容已经包含以下全部内容：\n\n1. GEO优化文章（终版）\n2. 建议发布网站\n3. 基础优化建议\n4. 生成依据说明\n5. 质检报告\n\n> ⚠️ 成功返回后，必须将 `data.final_article`的 markdown链接 **原样返回给用户**。  \n> 不要擅自修改、拆分、补充、重组、润色接口返回的任何内容。\n> ⚠️ 本模块只负责 GEO内容生产。\n> API key 绑定请查看：references/apikey.md\n\n## 支持的触发方式\n\n以下表达可视为 GEO内容生产意图：\n\n- GEO优化\n- 给 XX 生成 GEO优化内容\n- 给 XX 生成一篇 GEO文章\n- 帮我生成关于 XX 的 GEO优化文章\n- 针对某个 AI问题生成 GEO内容\n- 给 XX 生成适合大模型引用的内容\n- 针对某平台生成 GEO优化内容\n\n## 请求参数\n\n以下表达可视为 GEO内容生产意图：\n\n| 参数 | 类型 | 必填 | 说明 |\n| ----- | ----- | ----- | ----- |\n| `brand` | string | 是 | 要优化的品牌名称 |\n| `issue` | string | 是 | 要优化的AI问题 |\n| `platform` | string | 是 | 要优化的大模型平台 |\n\n### 参数说明\n\n1. `brand`\n   \n品牌名称\n不要自行纠正品牌名，不要将用户输入的品牌映射为其他名称。用户输入什么品牌，就传什么品牌。\n   \n2. `issue`\n   \n用户希望围绕哪个 AI问题生成 GEO内容。\n例如：\n- 露露适合什么人群\n- 欧莱雅小蜜罐值得买吗\n- XX品牌安全吗\n- XX品牌和竞品有什么区别\n   \n3. `platform`\n   \n用户指定的大模型平台。\n调用 API 时，不能直接传中文平台名，必须转换为对应字段值。\n\n---\n\n## 大模型平台字段映射\n\n当用户输入平台名称时，调用 API 前需要转换为对应的 `platform` 字段：\n\n| 用户输入平台 | API字段 |\n|------|------|\n| 豆包 | `DB` |\n| DeepSeek | `DP` |\n| 腾讯元宝 | `TXYB` |\n| 千问 | `TYQW` |\n| 百度AI | `BDAI` |\n| 文心 | `WXYY` |\n| KIMI | `KIMI` |\n| AI抖音 | `DYAI` |\n\n> ⚠️ 调用 API 时必须传字段值，不要直接传中文平台名。\n\n## 平台名称识别规则\n\n以下用户输入可归一后再映射：\n\n| 用户输入别名 | 归一平台 | API字段 |\n|------|------|------|\n| 豆包 | 豆包 | `DB` |\n| DeepSeek / deepseek / Deep Seek | DeepSeek | `DP` |\n| 腾讯元宝 / 元宝 | 腾讯元宝 | `TXYB` |\n| 千问 / 通义千问 | 千问 | `TYQW` |\n| 百度AI / 百度 | 百度AI | `BDAI` |\n| 文心 / 文心一言 | 文心 | `WXYY` |\n| KIMI / kimi | KIMI | `KIMI` |\n| AI抖音 / 抖音AI | AI抖音 | `DYAI` |\n\n---\n\n## 参数缺失处理规则\n\n### 1. 缺少品牌名称\n若用户未提供品牌名称，则不要调用内容生产接口，先追问：\n\n> 这篇 GEO内容是为哪个品牌生成的？请先提供品牌名称。\n\n### 2. 缺少 AI问题\n若用户未提供 AI问题，则不要调用内容生产接口，先追问：\n\n> 你希望围绕哪个 AI问题生成 GEO内容？请补充具体问题。\n\n### 3. 缺少大模型平台\n若用户未提供平台，则不要调用内容生产接口，先追问：\n\n> 你希望针对哪个大模型平台生成内容？请补充平台名称。\n\n### 4. 平台无法识别\n若用户输入的平台名称不在支持范围内，则不要调用内容生产接口，提示用户重新指定支持的平台：\n\n> 当前仅支持以下平台：豆包、DeepSeek、腾讯元宝、千问、百度AI、文心、KIMI、AI抖音。  \n> 请补充正确的平台名称后再生成。\n\n---\n\n## 积分确认规则\n\n正式发起 GEO内容生产前，必须先提示用户确认积分消耗。\n\n当前默认提示文案：\n\n> 本次 GEO内容生产将消耗6积分，是否确认？\n\n### 执行规则\n\n- 用户未确认前，不要调用内容生产接口\n- 用户确认后，才正式发起内容生产请求\n- 若用户取消，则终止本次内容生产流程\n\n---\n\n## 内容生产接口\n\n### 接口地址\n\n```\nPOST https://api.aidso.com/openapi/skills/run_realtime_report\n```\n\n### 请求头\n\n```\nx-api-key: {用户已绑定的_api_key}\n```\n\n### 请求体\n\n```\n{\n  \"brand\": \"欧莱雅\",\n  \"issue\": \"30岁左右抗老面霜推荐有哪些？\",\n  \"platform\": \"DB\"\n}\n```\n\n---\n\n## 成功返回结构\n\n接口成功返回：\n\n```\n{\n  \"code\": 200,\n  \"msg\": \"success\",\n  \"data\": {\n    \"final_article\": \"提示词3文章内容\"\n  }\n}\n```\n\n### 字段说明\n\n| 字段 | 类型 | 说明 |\n| ----- | ----- | ----- |\n| `final_article` | string | Markdown 格式的最终内容文本 |\n\n### final_article 内容说明\n\nfinal_article 本身已经包含以下全部内容：\n\nGEO优化文章（终版）\n建议发布网站\n基础优化建议\n生成依据说明\n质检报告\n\n⚠️ 不需要 skill 再次拆解这些内容。\n不需要 skill 再重组展示顺序。\n不需要 skill 再做摘要。\n不需要 skill 再生成“修订摘要”。\n必须直接原样返回接口里的 final_article。\n\n### 接口返回处理规则\n\n**处理中**\n\n{\n    \"code\": 200,\n    \"msg\": \"处理中请稍后\"\n}\n\n## 自动轮询规则\n\n当内容生产接口返回“处理中”时，应进入自动轮询流程。\n\n### 轮询频率\n\n每 1 分钟轮询一次\n\n### 最长轮询时间\n\n- 最长 30 分钟\n- 即最多轮询 30 次\n\n### 轮询执行方式\n\n使用独立轮询脚本\n\n```\npython3 scripts/content_poll.py \"{brand}\" \"{issue}\" \"{platform}\"\n```\n\n### 轮询方式\n\n继续调用同一个内容生产接口，使用相同请求参数。\n\n### 轮询结束条件\n\n**成功**\n\n满足以下条件即停止轮询并返回结果：\n\n- code == 200\n- msg == \"success\"\n- data.final_article 有值\n\n**失败**\n\n不满足以下任一条件即停止轮询并返回错误 msg：\n\n- 返回 data.final_article\n- 返回处理中状态\n\n**超时**\n\n若超过 30 分钟仍未完成，回复：\n\n> GEO内容暂未生成完成，请稍后请求获取结果。\n\n---\n\n## 手动继续查询规则\n\n除自动轮询外，也支持用户手动继续查询当前待生成内容结果。\n\n以下表达可视为继续查询：\n\n- 查询GEO生产内容\n- 查询文章\n\n### 执行规则\n\n- 若当前存在待生成任务，则继续调用同一个内容生产接口查询\n- 若当前不存在待生成任务，则提示用户重新发起 GEO内容生产请求\n\n推荐提示文案：\n\n> 当前没有待查询的内容生产任务，请重新发起 GEO内容生产请求。\n\n## 成功回复模板\n\n> 已为「{brand}」生成针对「{issue}」的 GEO内容，平台为「{platform_display_name}」。\n> 以下为最终生成内容：{final_article}\n\n然后直接原样返回 final_article。\n\nFile v2.0.0:references/diagnosis.md\n\n# GEO 诊断\n\n## 概述\n\n用于发起 AIDSO GEO 品牌诊断，并返回最终诊断报告。\n\n---\n\n## 支持的触发方式\n\n- 帮我做一个 XX 的 GEO 诊断报告\n- 生成 XX 的 GEO 诊断报告\n- 查一下 XX 的 GEO 表现\n\n---\n\n## 品牌提取规则\n\n当用户输入类似以下表达时，需要从中提取 `brandName`：\n\n- 帮我做一个**露露**的GEO诊断报告\n- 做一个**欧莱雅**的GEO诊断报告\n- 生成**XX品牌**的GEO诊断报告\n\n### 建议提取规则\n\n可按以下模式识别品牌名称：\n\n- `帮我做一个(.+?)的GEO诊断报告`\n- `做一个(.+?)的GEO诊断报告`\n- `生成(.+?)的GEO诊断报告`\n- `(.+?)的GEO诊断报告`\n\n> ⚠️ 不要自行纠正品牌名，不要把数据外品牌名映射成其他别名。  \n> 用户输入什么品牌，就传什么品牌。\n\n---\n\n## 品牌诊断接口\n\n### 接口地址\n\n```\nGET https://api.aidso.com/openapi/skills/band_report/md?brandName={brandName}\n```\n\n### 请求头\n\n```\nx-api-key: {用户已绑定的_api_key}\n```\n\n### 请求参数\n\n| 参数 | 类型 | 必填 | 说明 |\n|----|----|----|----|\n| `brandName` | string | 是 | 要诊断的品牌名称 |\n\n---\n\n## 积分确认规则\n\n正式发起品牌诊断前，必须先提示用户确认积分消耗。\n\n当前默认提示文案：\n\n此次诊断将消耗20积分，是否确认？\n\n执行规则\n- 用户未确认前，不要调用诊断接口\n- 用户确认后，才正式发起诊断请求\n- 若用户取消，则终止本次诊断流程\n\n---\n\n## 诊断发起流程\n\n### 步骤1：检查 API Key\n\n若未绑定，则先进入 API key 绑定流程。\n\n### 步骤2：提取品牌名\n\n从用户请求中识别品牌名，并保存为当前待诊断品牌。\n\n### 步骤3：提示积分确认\n\n向用户提示：\n\n> 此次诊断将消耗20积分，是否确认？\n\n### 步骤4：用户确认后发起诊断\n\n调用品牌诊断接口\n\n---\n\n## 接口返回处理规则\n\n**成功并返回下载地址**\n\n```\n{\n  \"code\": 200,\n  \"msg\": \"success\",\n  \"data\": \"https://tcdn.aidso.com/skills/md/xxx.md\"\n}\n```\n\n**处理中**\n\n```\n{\n  \"code\": 405,\n  \"msg\": \"正在处理中，请稍后\",\n}\n```\n\n**参数错误**\n\n```\n{\n  \"code\": 401,\n  \"msg\": \"invalid token\",\n}\n```\n\n**积分不足**\n\n```\n{\n  \"code\": 401,\n  \"msg\": \"积分不足\",\n}\n```\n\n**没有品牌名称**\n\n```\n{\n    \"code\": 405,\n    \"msg\": \"没有品牌名称,请传入参数{brandName}\",\n    \"data\": \"\"\n}\n```\n\n---\n\n## 自动轮询规则\n\n当品牌诊断接口返回“处理中请稍后”时，应进入自动轮询流程。\n\n### 轮询频率\n\n- 每 1 分钟轮询一次\n\n### 最长轮询时间\n\n- 最长 30 分钟\n- 即最多轮询 30 次\n\n### 推荐执行方式\n\n使用辅助脚本执行轮询：\n\n```\npython3 scripts/diagnosis_poll.py \"{brandName}\"\n```\n\n### 轮询方式\n\n继续调用同一个诊断接口：\n\n```\nGET https://api.aidso.com/openapi/skills/band_report/md?brandName={brandName}\nx-api-key: {api_key}\n```\n\n### 轮询结束条件\n\n**成功**\n\nJSON中返回有效文件链接\n\n**失败**\n\n不满足以下任一条件即停止轮询并返回错误\"msg\"：\n\n- JSON中返回有效文件链接\n- 处理中\n\n**超时**\n\n若超过 30 分钟仍未完成，回复：\n\n> 诊断结果暂未生成完成，请稍后请求获取结果。\n> 也可以前往官网查看：https://geo.aidso.com/completeAnalysis\n\n---\n\n## 手动继续查询规则\n\n除自动轮询外，也支持用户手动查询当前待诊断品牌结果。\n\n以下表达可视为继续查询：\n\n- 继续\n- 查看结果\n- 查询结果\n- 查询报告\n\n### 执行规则\n\n- 若当前存在待诊断品牌，则继续调用同一个诊断接口查询\n- 若当前不存在待诊断品牌，则提示用户重新发起品牌诊断请求\n\n推荐提示文案：\n\n> 当前没有待查询的诊断任务，请重新发起品牌诊断请求。\n\n---\n\n## 返回结果处理规则\n\n接口返回的是 Markdown 链接\n\n- 直接返回 Markdown 链接\n- 拉取 Markdown 内容并返回\n\n> ⚠️ 成功返回后，必须将接口返回的 Markdown 链接 **原样返回给用户**。  \n> 不要擅自修改、拆分、补充、重组、润色接口返回的任何内容。\n\nFile v2.0.0:references/knowledge.md\n\n# 品牌知识库\n\n## 概述\n\n品牌知识库用于补充 AI 对品牌的理解。\n\n用户上传品牌知识内容时，必须明确该内容属于哪个品牌的知识库。  \n因此，无论上传的是纯文本还是 `.md` 文件，上传时都必须提供 `brand_name`。\n\n> ⚠️ 当前为知识库 **V1 简化版**。  \n> 本版本只支持 **上传知识库内容**，**不支持修改、查询、删除**。  \n> 仅支持上传：\n> - “纯文本”\n> - “Markdown 文件（.md）”\n\n---\n\n## 使用场景\n\n品牌知识库适合以下情况：\n\n- 品牌是新品牌、小品牌，互联网信息较少\n- AI 对品牌认知不完整，影响 GEO 诊断准确性\n- AI 内容生产与品牌实际情况不够贴合\n- 用户希望上传品牌介绍、产品资料、卖点、场景、FAQ、品牌故事等资料，补充品牌信息基础\n\n通过上传品牌知识库，后续 AI 在做 GEO 诊断与内容生产时，可以更贴近品牌真实信息。\n\n### 示例对话\n\n**触发上传知识库**\n\n> 👤 上传品牌知识库\n>\n> 🤖 好，先要确认两件事\n> 🤖 1. 要添加什么内容？（暂时只支持文本、链接、markdown格式文件）\n> 🤖 2. 添加到哪个品牌的知识库？\n> 🤖 直接发给我就行👇\n\n**直接上传知识库**\n>\n> 👤 把我的品牌官网：http://xxx.com 上传到欧莱雅的品牌知识库\n> 🤖 已上传到「露露」品牌知识库，后续会基于这些资料做更准确的 GEO 诊断和内容生产。\n\n**未提供品牌名**\n\n> 👤 把这段资料上传到品牌知识库\n> 🤖 这份知识内容属于哪个品牌？请输入品牌名称后再上传。\n\n**非md文件上传**\n\n> 👤 我上传一个 pdf 到品牌知识库\n> 🤖 当前品牌知识库仅支持上传纯文本或 .md 文件。请先将文件转换成 md 格式后再上传。\n\n---\n\n## 当前支持范围\n\n### ✅ 支持\n- 上传纯文本知识\n- 上传 Markdown 文件（`.md`）\n\n### ❌ 不支持\n- 查询知识库\n- 修改知识库\n- 删除知识库\n- 上传链接\n- 上传 PDF / Word / Excel / PPT / 图片 / 其他非 `.md` 文件\n\n---\n\n## 支持的知识库类型\n\n| 类型 | 说明 | 支持 |\n|------|------|------|\n| `plain_text` | 纯文本 | ✅ 上传 |\n| `file` | Markdown 文件（仅 .md，上传时自动转成文本） | ✅ 上传 |\n\n---\n\n## 不支持的文件类型\n\n若用户上传以下类型文件：\n\n- `.pdf`\n- `.doc`\n- `.docx`\n- `.txt`\n- `.xls`\n- `.xlsx`\n- `.ppt`\n- `.pptx`\n- 图片\n- 其他非 `.md` 文件\n\n则不要调用上传接口，直接提示用户：\n\n> 当前品牌知识库仅支持上传纯文本或 `.md` 文件。  \n> 请先将文件转换成 md 格式后再上传。\n\n---\n\n## 支持的触发方式\n\n以下表达可视为品牌知识库上传意图：\n\n- 上传品牌知识库\n- 上传品牌资料\n- 把这段内容上传到品牌知识库\n- 把这个 md 文件上传到品牌知识库\n- 先补充品牌资料到知识库\n- 把品牌介绍加入知识库\n\n---\n\n## 上传输入规则\n\n上传品牌知识库内容时，必须同时提供：\n\n- `brand_name`：该内容所属品牌\n- `content`：知识内容文本\n\n### 1. 纯文本上传\n当用户直接输入大段品牌资料文本时，视为纯文本上传。\n\n### 2. Markdown 文件上传\n当用户上传 `.md` 文件时：\n\n- 先读取 `.md` 文件内容\n- 将文件内容转成文本\n- 再按纯文本方式上传\n\n> ⚠️ `.md` 文件只是用户上传形式，不作为独立 API 类型处理。  \n> 调用 API 时，统一按文本内容上传。\n\n### 3. 品牌名称缺失\n若用户上传知识内容时未提供品牌名称，则不要调用上传接口，应先追问：\n\n> 这份知识内容属于哪个品牌？请输入品牌名称后再上传。\n\n---\n\n## 上传流程\n\n### 步骤 1：检查 API key\n若未绑定，则先进入 API key 绑定流程。\n\n### 步骤 2：检查品牌名称\n若用户未提供 `brand_name`，则不要上传，先要求用户补充品牌名称。\n\n### 步骤 3：识别上传内容类型\n\n#### 情况 A：纯文本\n若用户输入的是文本内容，则直接按文本上传。\n\n#### 情况 B：Markdown 文件\n若用户上传的是 `.md` 文件：\n- 先读取 `.md` 文件内容\n- 将文件内容转成文本\n- 再按文本方式上传\n\n#### 情况 C：其他文件\n若用户上传的是非 `.md` 文件，则拒绝上传并提示转换格式。\n\n### 步骤 4：调用知识库上传接口\n调用 API 时统一传：\n\n- `brand_name`\n- `content`\n\n### 步骤 5：返回上传结果\n- 成功：告知用户已上传成功\n- 失败：返回后端错误文案\n- API key 无效：要求重新绑定\n\n---\n\n## 知识库上传接口\n\n### 接口地址\n\n```\nPOST  https://api.aidso.com/openapi/skills/save_content/md\n```\n\n### 请求头\n\n```\nx-api-key: {用户已绑定的_api_key}\n```\n\n---\n\n## 请求参数\n\n```\n{\n    \"content\": \"知识内容\",\n    \"brand_name\": \"品牌名称\"\n}\n```\n\n### 字段说明\n\n| 字段 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| `brand_name` | string | 是 | 知识内容所属品牌 |\n| `content` | string | 是 | 知识内容正文；若用户上传的是 .md 文件，则传入读取后的 Markdown 文本内容 |\n\n### 返回结构\n\n{\n    \"code\": 200,\n    \"msg\": \"success\",\n    \"data\": true\n}\n\nFile v2.0.0:package.json\n\n{\n  \"name\": \"aidso-xiasou-geo\",\n  \"version\": \"2.0.0\",\n  \"description\": \"AIDSO 虾搜GEO Skill —— 支持 API key 绑定、品牌诊断、品牌知识库、GEO内容生产。\",\n  \"license\": \"MIT-0\",\n  \"author\": \"AIDSO\",\n  \"homepage\": \"https://geo.aidso.com\",\n  \"keywords\": [\n    \"aidso\",\n    \"geo\",\n    \"brand diagnosis\",\n    \"knowledge base\",\n    \"content generation\",\n    \"openclaw\",\n    \"skill\"\n  ],\n  \"clawhub\": {\n    \"acceptLicenseTerms\": true\n  },\n  \"openclaw\": {\n    \"minVersion\": \"0.1.0\",\n    \"baseUrl\": \"https://api.aidso.com\",\n    \"requires\": {},\n    \"optionalEnv\": [\n      \"AIDSO_GEO_API_KEY\"\n    ]\n  }\n}","readmeExcerpt":"Skill: AIDSO 虾搜 GEO Owner: tangyuanmile-coder Summary: AIDSO虾搜 GEO 一体化 Skill，支持统一 API Key 绑定、检查、品牌诊断报告、品牌知识库、GEO 内容生产、GEO 问题挖掘。 Tags: AIDSO:2.1.0, GEO:2.1.0, latest:2.1.2, xiasou:2.1.0 Version history: v2.1.2 | 2026-05-19T05:43:02.515Z | user - 文档部分更新：GEO 内容生产命令中的平台参数从 --ai-platform 修改为 --platform，更加统一和规范。 - 其余功能和使用规则保持不变。 v2.1.1 | 2026-05-18T08:38:26.427Z | user Version 2.1.1 - No file changes detected; behavior and","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"AIDSO_GEO_API_KEY"},{"language":"bash","snippet":"python3 check_api_key.py"},{"language":"bash","snippet":"python3 bind_api_key.py --api-key \"<用户提供的_api_key>\""},{"language":"bash","snippet":"python3 bind_api_key.py --api-key \"<用户提供的_api_key>\" --force"},{"language":"text","snippet":"使用虾搜 GEO 功能前，需要先绑定 AIDSO API Key。\nAPI Key 获取地址：https://geo.aidso.com/setting?type=apiKey\n请发送：绑定 api-key：你的_api_key"},{"language":"bash","snippet":"python3 check_api_key.py"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: aidso-xiasou\ndescription: AIDSO虾搜 GEO 一体化 Skill，支持统一 API Key 绑定、检查、品牌诊断报告、品牌知识库、GEO 内容生产、GEO 问题挖掘。\n---\n\n# AIDSO虾搜 GEO 一体化 Skill\n\n## 功能范围\n\n本 Skill 将以下 4 个能力合并到同一个 Skill 包中：\n\n1. GEO 品牌诊断报告\n2. GEO 内容生产\n3. 品牌知识库添加\n4. GEO 监测问题挖掘\n\n## API Key 统一规则\n\n当前 Skill 使用统一 API Key：\n\n```bash\nAIDSO_GEO_API_KEY\n```\n\nAPI Key 读取优先级：\n\n1. 系统环境变量 `AIDSO_GEO_API_KEY`\n2. 当前 Skill 目录下 `.env`\n\n绑定后会在当前 Skill 根目录生成 `.env`，内容生产、知识库、品牌诊断、问题挖掘四个能力都会直接读取该 `.env`。\n\n问题挖掘脚本 `prompt_research.py` 已改为读取统一 API Key 配置；`.state/prompt_research_bindings.json` 仅用于保存问题挖掘任务状态，不再保存 API Key。\n\n## 通用 API Key 操作\n\n### 检查 API Key\n\n```bash\npython3 check_api_key.py\n```\n\n### 绑定 API Key\n\n```bash\npython3 bind_api_key.py --api-key \"<用户提供的_api_key>\"\n```\n\n### 重新绑定 API Key\n\n```bash\npython3 bind_api_key.py --api-key \"<用户提供的_api_key>\" --force\n```\n\n如果未绑定 API Key，提示用户：\n\n```text\n使用虾搜 GEO 功能前，需要先绑定 AIDSO API Key。\nAPI Key 获取地址：https://geo.aidso.com/setting?type=apiKey\n请发送：绑定 api-key：你的_api_key\n```\n\n## 功能一：GEO 品牌诊断报告\n\n### 触发场景\n\n- 帮我生成某品牌的 GEO 报告\n- 给我一份某品牌的品牌诊断报告\n- 某品牌的 GEO 表现如何\n- 获取某品牌的诊断问题\n\n### 执行流程\n\n1. 先检查 API Key：\n\n```bash\npython3 check_api_key.py\n```\n\n2. 获取诊断问题：\n\n```bash\npython3 geo_report_tool.py questions --brand-name \"<品牌名称>\"\n```\n\n3. 将问题列表展示给用户，允许用户替换、删除、追加问题。\n\n4. 用户确认问题后，计算积分：\n\n```text\n消耗积分数 = 问题数 × 4\n```\n\n5. 用户确认积分后执行：\n\n```bash\npython3 geo_report_tool.py report --brand-name \"<品牌名称>\" --questions-json '<JSON数组字符串>'\n```\n\n### 品牌诊断强制规则\n\n1. 发起诊断任务前必须先让用户确认诊断问题。\n2. 发起诊断任务前必须先让用户确认消耗积分数。\n3. 成功后必须返回接口返回的 `brand_name` 和 `report_url`。\n4. 只有 `report_url` 返回 URL 时才算成功。\n5. 不得把任务 ID 当成报告地址。\n\n## 功能二：GEO 内容生产\n\n### 触发场景\n\n- 生成 GEO 内容\n- 针对某个 AI 问题生成内容\n- 生成适合 AI 引用的内容\n- 为某品牌生成内容优化文章\n\n### 必要参数\n\n1. 品牌名称\n2. AI 问题\n3. 目标优化平台\n4. 用户确认消耗 6 积分\n\n### 支持平台\n\n- 豆包\n- Deepseek\n- 腾讯元宝\n- 文心一言\n- 通义千问\n- KIMI\n- 抖音AI\n- 百度AI\n\n查看平台：\n\n```bash\npython3 geo_content_tool.py platforms\n```\n\n未确认积分时：\n\n```bash\npython3 geo_content_tool.py generate --brand \"<品牌名称>\" --issue \"<AI问题>\" --platform \"<平台名称>\"\n```\n\n用户确认后：\n\n```bash\npython3 geo_content_tool.py generate --brand \"<品牌名称>\" --issue \"<AI问题>\" --platform \"<平台名称>\" --confirmed\n```\n\n### 内容生产返回规则\n\n1. 不得摘要接口返回内容。\n2. 不得改写接口返回内容。\n3. 不得润色接口返回内容。\n4. 不得重新生成内容。\n5. 不得只回复“生成成功”。\n6. 必须把接口返回内容原样返回给用户。\n\n## 功能三：品牌知识库添加\n\n### 触发场景\n\n- 添加品牌知识\n- 写入品牌知识库\n- 保存某品牌的知识内容\n- 给某品牌补充知识库内容\n\n### 执行命令\n\n```bash\npython3 knowledge_tool.py add --brand-name \"<品牌名称>\" --content \"<知识内容>\"\n```\n\n### 知识库规则\n\n1. 只支持添加知识库内容。\n2. 不支持删除、修改、查询知识库。\n3. 返回成功后明确告知用户知识已添加。\n\n## 功能四：GEO 监测问题挖掘\n\n### 触发场景\n\n- 帮我生成某品牌的 GEO 问题\n- 帮我挖掘某品牌的 AI 搜索问题\n- 给某品牌生成 30 / 50 / 100 个问题\n- 帮我做问题挖掘\n\n### 必要参数\n\n1. 品牌名称 `brand_name`\n2. 产品词 `product_names`，可为空\n3. 生成问题数量 `gen_question_num`，仅支持 30、50、100\n\n### 积分规则\n\n| 生成问题数量 | 消耗积分 |\n|---|---:|\n| 30 个问题 | 18 积分 |\n| 50 个问题 | 20 积分 |\n| 100 个问题 | 25 积分 |\n\n### 执行流程\n\n1. 先检查 API Key：\n\n```bash\npython3 check_api_key.py\n```\n\n2. 用户未选择数量时，引导用户选择 30 / 50 / 100。\n\n3. 用户确认积分后执行：\n\n```bash\npython3 prompt_research.py \"<用户原始问题挖掘请求>\"\n```\n\n示例：\n\n```bash\npython3 prompt_research.py \"帮我给京东生成 50 个问题\"\n```\n\n4. 查询任务结果时执行：\n\n```bash\npython3 prompt_research.py \"继续\"\n```\n\n### 问题"},{"path":"README.md","content":"# AIDSO虾搜 · GEO 一体化 Skill\n\n## 统一 API Key\n\n四个能力共用同一个 API Key 配置：\n\n```bash\nAIDSO_GEO_API_KEY\n```\n\n读取优先级：\n\n1. 系统环境变量 `AIDSO_GEO_API_KEY`\n2. 当前 Skill 目录 `.env` 文件中的 `AIDSO_GEO_API_KEY`\n\n绑定：\n\n```bash\npython3 bind_api_key.py --api-key \"你的 API Key\"\n```\n\n检查：\n\n```bash\npython3 check_api_key.py\n```"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn782v9hb818axcrqs7p5y76wd833afk\",\n  \"slug\": \"aidso-xiasou-geo\",\n  \"version\": \"2.1.2\",\n  \"publishedAt\": 1779169382515\n}"},{"path":"CHANGELOG.md","content":"# 更新说明\n\n## v2.1.0\n\n- 将 `prompt_research.py` 的 API Key 读取方式改为统一配置：\n  1. 优先读取系统环境变量 `AIDSO_GEO_API_KEY`\n  2. 其次读取当前 Skill 根目录 `.env` 中的 `AIDSO_GEO_API_KEY`\n- 问题挖掘的 `.state/prompt_research_bindings.json` 仅保留任务状态，不再保存 API Key。\n- 删除 `sync_prompt_api_key.py`，因为问题挖掘脚本已直接共用统一 API Key 配置。\n- 保留内容生产、品牌知识库、品牌诊断脚本原逻辑不变。"},{"path":"skill-card.md","content":"## Description:\n\nAIDSO虾搜 GEO 一体化 Skill，支持统一 API Key 绑定、检查、品牌诊断报告、品牌知识库、GEO 内容生产、GEO 问题挖掘。\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[tangyuanmile-coder](https://clawhub.ai/user/tangyuanmile-coder)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and marketers use this skill to work with the AIDSO GEO service for brand diagnosis reports, brand knowledge additions, GEO content generation, and AI search question mining. Developers or agents running it need Python 3 and an AIDSO_GEO_API_KEY.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The security scan says the API-key binding flow sends the secret as ordinary content to a remote knowledge endpoint and stores keys locally in plaintext.\n\nMitigation: Use a low-privilege AIDSO key where possible, avoid entering secrets in normal chat or shell history, rotate any key previously bound with this version, and remove artifact/.env when no longer needed.\n\nRisk: The security guidance notes that GEO_API_BASE_URL or wrapper environment changes can redirect authenticated question-mining requests.\n\nMitigation: Keep the default API base URL unless a trusted operator intentionally changes it, and review wrapper environment variables before running authenticated commands.\n\n## Reference(s):\n\n- [ClawHub skill release](https://clawhub.ai/tangyuanmile-coder/skills/aidso-xiasou-geo)\n- [AIDSO GEO service](https://geo.aidso.com)\n- [AIDSO GEO API key settings](https://geo.aidso.com/setting?type=apiKey)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Shell commands, Configuration, Guidance]\n\n**Output Format:** [Markdown or JSON/text returned from AIDSO service, with shell commands for local helper scripts.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires Python 3 and AIDSO_GEO_API_KEY; outputs can include report URLs, generated GEO content, brand knowledge add status, and question lists.]\n\n## Skill Version(s):\n\n2.1.2 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"AIDSO虾搜 GEO 一体化 Skill，支持统一 API Key 绑定、检查、品牌诊断报告、品牌知识库、GEO 内容生产、GEO 问题挖掘。 Skill: AIDSO 虾搜 GEO Owner: tangyuanmile-coder Summary: AIDSO虾搜 GEO 一体化 Skill，支持统一 API Key 绑定、检查、品牌诊断报告、品牌知识库、GEO 内容生产、GEO 问题挖掘。 Tags: AIDSO:2.1.0, GEO:2.1.0, latest:2.1.2, xiasou:2.1.0 Version history: v2.1.2 | 2026-05-19T05:43:02.515Z | user - 文档部分更新：GEO 内容生产命令中的平台参数从 --ai-platform 修改为 --platform，更加统一和规范。 - 其余功能和使用规则保持不变。 v2.1.1 | 2026-05-18T08:38:26.427Z | user Version 2.1.1 - No file changes detected; behavior and","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":957,"uniquenessScore":52,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T20:55:46.211Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T20:55:46.211Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T23:48:14.894Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}