{"id":"7cd222c8-c7b6-481b-b76f-a3278f632ecf","entityType":"agent","slug":"clawhub-timerate-966-zhihu-research-page-skill","name":"一键生成知乎高质量回答网页（可自由剪裁）","canonicalUrl":"https://www.xpersona.co/agent/clawhub-timerate-966-zhihu-research-page-skill","canonicalPath":"/agent/clawhub-timerate-966-zhihu-research-page-skill","generatedAt":"2026-10-10T05:22:57.325Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-09T10:17:47.663Z","emptyReason":null},"description":"自动搜索并整合≥500次真实引用，生成知乎风格≥10万字多答主深度知识网页，支持任意比例裁剪版本输出。 Skill: 一键生成知乎高质量回答网页（可自由剪裁） Owner: timerate-966 Summary: 自动搜索并整合≥500次真实引用，生成知乎风格≥10万字多答主深度知识网页，支持任意比例裁剪版本输出。 Tags: latest:0.1.0 Version history: v0.1.0 | 2026-07-24T03:13:08.162Z | auto Version 0.1.0 — initial release of zhihu-research-page-skill: - Create high-fidelity Zhihu-style web pages with automatic, large-scale web search and multi-answer simulation. - Supports flexible output scaling (2%–100%) with detailed","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 3K downloads reported by the source. Last updated 10/9/2026.","installCommand":"clawhub skill install s170z5dfqjmsxte2sk1dsfehjh8b59c2:zhihu-research-page-skill","sourceUrl":"https://clawhub.ai/timerate-966/zhihu-research-page-skill","homepage":"https://clawhub.ai/timerate-966/skills/zhihu-research-page-skill","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/timerate-966/zhihu-research-page-skill","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/timerate-966/skills/zhihu-research-page-skill","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":70,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"自动搜索并整合≥500次真实引用，生成知乎风格≥10万字多答主深度知识网页，支持任意比例裁剪版本输出。 Skill: 一键生成知乎高质量回答网页（可自由剪裁） Owner: timerate-966 Summary: 自动搜索并整合≥500次真实引用，生成知乎风格≥10万字多答主深度知识网页，支持任意比例裁剪版本输出。"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-09T10:17:47.663Z","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-09T10:17:47.663Z","emptyReason":null},"stars":null,"forks":null,"downloads":3003,"packageName":null,"latestVersion":"0.1.0","tractionLabel":"3K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T10:17:47.663Z","emptyReason":null},"lastUpdatedAt":"2026-10-09T10:17:47.663Z","lastCrawledAt":"2026-10-09T10:17:47.663Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-10T10:17:47.663Z","lastVerifiedAt":null,"highlights":[{"version":"0.1.0","createdAt":"2026-07-24T03:13:08.162Z","changelog":"Version 0.1.0 — initial release of zhihu-research-page-skill: - Create high-fidelity Zhihu-style web pages with automatic, large-scale web search and multi-answer simulation. - Supports flexible output scaling (2%–100%) with detailed content quotas based on user input. - Produces structured workspace output with organized directories and local asset handling. - Implements a research workflow with search result accumulation, strict file management, and subagent operation. - Includes troubleshooting guidance and clear workflow/stage documentation for users.","fileCount":26,"zipByteSize":56455}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s170z5dfqjmsxte2sk1dsfehjh8b59c2:zhihu-research-page-skill","setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","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-timerate-966-zhihu-research-page-skill/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-timerate-966-zhihu-research-page-skill/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-timerate-966-zhihu-research-page-skill/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-timerate-966-zhihu-research-page-skill/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-timerate-966-zhihu-research-page-skill/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-timerate-966-zhihu-research-page-skill/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-10T05:22:57.324Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-timerate-966-zhihu-research-page-skill/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-timerate-966-zhihu-research-page-skill/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-timerate-966-zhihu-research-page-skill/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-timerate-966-zhihu-research-page-skill/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-09T10:17:47.663Z","emptyReason":null},"readme":"Skill: 一键生成知乎高质量回答网页（可自由剪裁）\n\nOwner: timerate-966\n\nSummary: 自动搜索并整合≥500次真实引用，生成知乎风格≥10万字多答主深度知识网页，支持任意比例裁剪版本输出。\n\nTags: latest:0.1.0\n\nVersion history:\n\nv0.1.0 | 2026-07-24T03:13:08.162Z | auto\n\nVersion 0.1.0 — initial release of zhihu-research-page-skill:\n\n- Create high-fidelity Zhihu-style web pages with automatic, large-scale web search and multi-answer simulation.\n- Supports flexible output scaling (2%–100%) with detailed content quotas based on user input.\n- Produces structured workspace output with organized directories and local asset handling.\n- Implements a research workflow with search result accumulation, strict file management, and subagent operation.\n- Includes troubleshooting guidance and clear workflow/stage documentation for users.\n\nArchive index:\n\nArchive v0.1.0: 26 files, 56455 bytes\n\nFiles: .claude-plugin (0b), .claude-plugin/marketplace.json (947b), .claude-plugin/skill.json (947b), .gitignore (171b), CHANGELOG.md (20246b), examples (0b), examples/advanced.md (1522b), examples/basic.md (1172b), LICENSE (1076b), README.md (4194b), references (0b), references/css-template.css (6734b), scripts (0b), scripts/assemble.py (12691b), scripts/scan_html.py (6642b), scripts/wordcount_check.py (2420b), skill-card.md (2573b), SKILL.md (48485b), templates (0b), templates/author_block.html (629b), templates/search_agent_prompt.md (1217b), templates/writing_agent_prompt.md (1495b), tests (0b), tests/test.md (1219b), TROUBLESHOOTING.md (4332b), _meta.json (144b)\n\nFile v0.1.0:SKILL.md\n\n---\nname: zhihu-research-page\nversion: \"21.0.0\"\ntitle: \"知乎研究页生成器 — 一句话生成知乎高质量回答网页\"\nauthor: \"timeRATE-966\"\ndescription: 通过大规模联网搜索自动创建知乎风格的深度知识网页，样式高度还原 zhihu.com。生成 10 个章节的多答主模拟回答页面，含 ≥10 万有效中文字和 ≥500 次真实搜索引用。支持手动裁剪为任意比例版本（如\"执行 5% 版本\"→ ≥5 千字 / ≥25 次搜索），多次执行自动创建带版本号的独立文件夹。适用于生成知识专题页、学习路径教程、产品深度百科、行业研究报告等需要系统整理某一主题知识的场景。\n**[重要]100%版本约需 100 分钟且token消耗巨大，建议先生成 2% 版本检验效果**\ntype: \"agent\"\ncategory: \"research\"\ninvocation: \"/zhihu-research-page\"\ntags:\n  - \"research\"\n  - \"content-creation\"\n  - \"web-generation\"\n  - \"chinese\"\n  - \"knowledge-base\"\ndifficulty: \"intermediate\"\nclaude_version: \">=1.0.0\"\npermissions:\n  read:\n    - \"project files\"\n    - \"web content\"\n  write:\n    - \"project files\"\n  network: \"extensive\"\nexamples:\n  - input: \"/zhihu-research-page 执行2%版本\\n主题：什么是 Harness Engineering？\"\n    output: \"自动搜索 ≥10 次，生成 3 章节知乎风网页（约 2,000 字），约 2 分钟\"\n  - input: \"/zhihu-research-page 执行100%版本\\n主题：国际象棋怎么学？\"\n    output: \"自动搜索 ≥500 次，生成 10 章节完整深度网页（≥100,000 字），约 100 分钟\"\n---\n\n<!-- VERSION:v21 | 2026-07-21 | 教程模式+自动同步+版本头 -->\n# 一句话生成知乎高质量回答网页（可自由剪裁）\n\n## 用法示例\n\n```\n/ zhihu-research-page 执行5%版本\n主题：什么是 Harness Engineering？\n\n/ zhihu-research-page 执行100%的v2版本\n主题：国际象棋怎么学？代数记谱法、西西里、西班牙主流开局这些是什么？\n\n/ zhihu-research-page 执行200%的v2版本\n主题：各种调式的流行歌曲都有什么特点，它们各有什么代表作？\n```\n\n---\n\n## Skill 版本与更新日志\n\n当前版本：**v21**（2026-07-21）\n\n> 运行时需检查此版本号：若高于上次执行记录，则从 skill 目录重新读取最新 SKILL.md 和脚本更新工作区。\n\n更新日志（每行一句，格式 `vN [yyyy-MM-dd HH:mm:ss] 内容`）：\n- v21 [2026-07-21 22:26:31] 新增教程/学习模式（提炼答主背景、面向学习目标），自动同步检查，版本头\n- v20 [2026-07-19 07:41:47] 修复 f-string 转义、emoji 崩溃(→ASCII)、TARGET_WORDS 可配、Edit→Python 追加\n- v19 [2026-07-18 22:05:01] 新增部分执行模式(N% 版本)，任意百分比等比缩放\n- v18 [2026-07-18 21:32:27] 去硬编码重构，异常手册 TROUBLESHOOTING.md，蓝阈值收紧\n- v17 [2026-07-18 21:27:14] 搜索配额感知、子代理文件验收、来源池外化、code自检前移、Win编码兼容\n- v16 [2026-07-18 21:23:54] css-template.css code 样式对齐知乎、去硬编码style块、组装自查\n- v15 [2026-07-18 16:47:18] assemble 新增 style 去重+蓝归一\n- v14 [2026-07-18 15:37:47] zh-body→zh-page 类名隔离\n- v13 [2026-07-18 15:50:15] 头像与身份解耦(已回滚)\n- v12 [2026-07-18 15:35:44] 全图片本地化 ./images/\n- v11 [2026-07-18 15:28:56] 头像本地缓存 ./images/\n- v10 [2026-07-18 13:10:27] 目录组织 ./other/ ./research_result/\n- v9  [2026-07-18 02:19:55] 答主身份与头像三级优先级+四步流程\n- v8  [2026-07-18 00:17:07] scan_html.py 预扫描+子代理权限+code标签规范\n- v7  [2026-07-17 17:31:26] search_result.md 存疑/争议+毫秒时间戳\n- v6  [2026-07-17 17:27:14] search_result.md 格式对齐真实文件\n- v5  [2026-07-16 16:24:43] assemble 注入改为 ASSEMBLE 标记，幂等剥离\n- v4  [2026-07-14 14:30:00] search_result.md 协同积累机制\n- v3  [2026-07-14 12:00:00] 诊断先于搜索，去硬编码路径\n- v2  [2026-07-14 10:00:00] Skill 目录只读约定\n- v1  [2026-07-13 22:00:00] 初始 8 阶段工作流\n\n## 概述\n\n输入一个研究主题 → 自动产出：\n- 📄 一个知乎风格的完整 HTML 单页（含顶栏/问题头/侧栏/10 章节/页脚）\n- 🔗 每章 ≥11,000 有效中文字，全页 ≥100,000 字\n- 🔍 累计 ≥500 次真实 WebSearch（7~8 个并行搜索代理）\n- 📎 242+ 条真实可点击外链（禁止编造 URL）\n- 🧪 字数核验 + 结构校验脚本\n\n该工作流基于已验证的 LILYGO T-WATCH-2020 项目实战流程提炼而成。\n\n### 工作区目录约定\n\n为避免工作区根目录散落大量中间文件，所有产出严格按以下目录存放：\n\n```\n工作区/\n├── index.html                  # 最终 HTML 骨架（唯一留在根目录的文件）\n├── CHANGELOG.md                # 更新日志（可选）\n├── images/                     # 所有图片资源（与 HTML 同目录，相对路径引用）\n│   ├── ch-01.png               # 答主头像缓存（.png/.jpg/.svg）\n│   ├── ch-02.svg               # DiceBear 头像缓存\n│   ├── diagram-03.png          # 章节插图/截图/示意图/logo\n│   └── ...\n├── other/                      # 网页草稿、脚本、中间产物\n│   ├── _draft_*.html           # 各章节 HTML 草稿\n│   ├── assemble.py             # 从 skill 复制的拼接脚本\n│   ├── scan_html.py            # 从 skill 复制的预扫描脚本\n│   ├── *.ps1 / *.py / *.json   # 其他中间脚本和配置\n│   └── index_skeleton.html     # 骨架备份（方便二次运行还原）\n└── research_result/            # 搜索结果及中间产物\n    ├── search_result.md        # 搜索结果累积文件\n    └── *.md / *.json           # 来源池清单、搜索报告等\n```\n\n**铁律**：\n- 阶段 0 第一步：`mkdir -p ./images ./other ./research_result`\n- 所有路径在命令行和代码中**显式使用 `./other/` 和 `./research_result/` 前缀**，不依赖 `cd`\n- 最终交付的 `index.html` 仍在根目录\n\n### 异常处理（TROUBLESHOOTING）\n\n**遇到异常时，必须先读取 `TROUBLESHOOTING.md`** 查找匹配方案。该文件覆盖 12 类高频异常的根因和修复步骤（配额耗尽、task-notification 不实、`<code>` 字体异常、Windows 编码崩溃、颜色归一误伤、字数失真、权限被拒等）。仅在文件中无匹配方案时，才自行分析处理。\n\n---\n\n## 工作流总览（8 阶段）\n\n```\n[0] 收集输入 → [1] 诊断问题 → [2] 创建骨架 HTML → [3] 并行搜索(500+) → [4] 规划章节(基于搜索) → [4.5] 答主身份与头像配置 → [5] 并行写章 → [6] 组装校验 → [7] 交付\n```\n\n**严禁跳过任何阶段**。搜索和撰写都通过 Subagent 委托执行，主流程不直接生成章节内容。\n\n### 子代理权限配置（重要！）\n\n使用 Agent 工具启动的 `general-purpose` 子代理在写入文件时经常遇到 Write/Bash 权限被拒。需在项目根目录的 `.claude/settings.local.json` 中显式授权：\n\n```json\n{\n  \"permissions\": {\n    \"allow\": [\n      \"Bash(python *:other/_draft_*.html *)\",\n      \"Bash(python *:other/scan_html.py *)\",\n      \"Bash(python *:other/assemble.py *)\",\n      \"Write(*:other/_draft_*.html)\",\n      \"Write(*:index.html)\",\n      \"Write(*:other/assemble.py)\",\n      \"Write(*:images/*.png)\",\n      \"Write(*:images/*.jpg)\",\n      \"Write(*:images/*.svg)\",\n      \"Bash(curl *:images/*.png *)\",\n      \"Bash(curl *:images/*.svg *)\",\n      \"Edit(*:other/_draft_*.html)\",\n      \"Edit(*:index.html)\"\n    ]\n  }\n}\n```\n\n若无此文件则创建。授予写入权限的文件类型：`_draft_*.html`（章节草稿）、`index.html`（骨架）、`assemble.py`（拼接脚本副本）。\n\n另外，如果 `.claude/settings.local.json` 中有 `additionalDirectories` 配置，确保当前工作区路径被包含在内，以便子代理能访问工作区文件。\n\n---\n\n## 📝 search_result.md 协同积累机制（核心协同规则）\n\n为保证 7 个并行搜索代理之间不重复劳动、且下游章节规划/撰写能读到一致的最新证据，**所有搜索结果统一沉淀到工作区文件 `search_result.md`**，采用「读上下文 → 搜索 → 返回即追加」闭环。\n\n### 文件位置与生命周期\n\n- 路径：**工作区**根目录 `./research_result/search_result.md`（读写，非 skill 目录）\n- 创建时机：**阶段 3 启动前**由主流程初始化（写入文件头）\n- 更新时机：**每一个搜索子代理返回后**，主流程立即把其结构化结果追加进去\n- 消费方：阶段 4（章节规划）、阶段 5（撰写代理）直接读取该文件作为「已搜索上下文」\n\n### 文件结构（实际格式，基于已验证的生产文件总结）\n\n```markdown\n# 搜索结果汇总 (search_result.md)\n\n> 本文件由主流程在每个搜索子代理回传后**自动追加**生成。\n> 记录每次回传的「已搜索次数」与「核心结果」，便于过程追溯与断点续跑。\n\n> 生成时间：{DATE}\n> 目标：累计 ≥{N} 次真实搜索\n> 累计搜索次数：{N}\n> 已覆盖子方向：{N}\n\n---\n\n## 学习路径问题诊断\n\n### 答主背景\n- 学历 / 已修课程 / 自学经验 / 欠缺 / 当前目标\n\n### 学习路径核心问题\n**核心问题**：{一句话概括}\n\n### 关键子问题\n1. ...\n2. ...\n（阶段 1 诊断产物，供下游搜索代理了解上下文）\n\n---\n\n## [{N}] {子方向名称} — 更新于 {ISO 时间戳，含毫秒}\n\n**本次搜索次数**：{N}次（WebSearch）\n\n**核心发现**：\n- 发现要点 1\n- 发现要点 2\n\n**关键数据/事实**（每条附 URL）：\n1. 数据/事实标题\n   - 来源：https://...\n2. 数据/事实标题\n   - 来源：https://...\n\n**存疑/争议**（可选，有则写）：\n- 说法 A（来源 X）与说法 B（来源 Y）不一致\n- 某数据在不同来源中有显著差异\n\n---\n```\n\n**注意**：来源直接内联在 `**关键数据/事实**` 区块下，格式为 `N. 标题\\n   - 来源：URL`。**不**单独拆「来源池」区块——来源跟着数据走，拆多了搜索代理反而容易省略。`**存疑/争议**` 为可选项，有矛盾信息时才写，服务于阶段 4 的「争议焦点」提取。\n\n### 主流程闭环（每返回一个代理执行一次，具体追加代码见阶段 3.2）\n\n1. **读上下文**：读取当前 `search_result.md`，提取「已搜索次数总计」与已覆盖子方向，作为派发下一个代理时的去重依据。\n2. **追加**：调用下方「阶段 3.2」中的主流程 Python 片段（基于 `os.getcwd()` 与全局变量 `global_search_count`），以 `a` 模式把该代理的结构化结果追加为新区块，自动累加「累计搜索次数」、刷新「最后更新」时间戳。\n3. **回读**：追加完成后再次读取 `search_result.md`，作为下一步（派发下一个搜索代理 / 进入阶段 4）的上下文输入。\n\n### 并发安全约定\n\n- 7 个搜索代理仍用 `run_in_background: true` 并行启动，但**写入 `search_result.md` 的动作只允许主流程串行执行**（代理本身不直接写该文件，只把结果回传给主流程）。\n- 主流程按代理返回顺序逐条追加，互不竞争，避免并行写文件导致内容错乱。\n- 各搜索代理在 Prompt 中被告知「启动前先读取 `search_result.md` 了解已有覆盖」，以尽量减少方向重叠。\n\n---\n\n### 🔒 Skill 目录只读约定（重要！）\n\n用户可能通过指定目录路径的方式引用本 Skill（例如 `{用户目录}/zhihu-research-page`），该目录**是只读的技能定义源**。\n\n| 目录 | 读/写 | 说明 |\n|------|-------|------|\n| `<skill_dir>/` | **只读** | 技能源码目录，包含 SKILL.md、references/、scripts/ |\n| `<skill_dir>/references/css-template.css` | 只读 | 从中读取 CSS 模板 |\n| `<skill_dir>/scripts/assemble.py` | 只读 | 从中**复制**到工作区后再编辑 CHAPTERS |\n| `{当前工作区}/` | **读写** | 所有产出物的落点：index.html、_draft_*.html、assemble.py |\n\n**铁律**：\n- ❌ 绝不修改 `<skill_dir>/` 下的任何文件\n- ✅ 所有文件创建/编辑都在当前工作区完成\n- ✅ assemble.py 从 skill 目录**复制一份**到工作区，在工作区副本上编辑 CHAPTERS 并运行\n\n---\n\n## 阶段 0：收集输入\n\n向用户确认以下信息（缺省用默认值）：\n\n| 参数 | 默认 | 说明 |\n|------|------|------|\n| 研究主题 | **从对话上下文自动提炼** | 若用户未明确指定主题，扫描当前对话中涉及的课题/项目/问题域，提炼为一句中文主题 |\n| 参考材料 | 空 | 用户提供的文档/链接/笔记，将注入所有子代理 |\n| 章节建议 | 按主题自动规划 | 用户可指定 >5 个章节标题 |\n| 输出路径 | `./index.html` | 成品 HTML 路径 |\n| 语言 | 中文 | 章节撰写语言 |\n| **部分执行比例** | 无（完整执行） | 如用户说\"仅执行 3%\"，则按比例缩减所有参数（见下方规则） |\n\n> **主题提炼规则**：若用户只说\"执行 skill\"/N%\"版本\"而未给主题，**不追问用户**，直接从当前对话上下文中提取——优先扫描最近的课题讨论、项目描述、诊断报告、打开的文件夹名、工作区 `CLAUDE.md` 中项目描述，选最突出的一个作为主题。阶段 1 开头告知用户确认即可。\n\n### 自动同步检查\n\n**每次执行前**，主流程必须：\n1. 读取 skill 源 `SKILL.md` 顶部的 `<!-- VERSION:v{N} -->` 注释，与工作区记录的版本对比\n2. 若 skill 版本更高 → 将工作区旧文件**剪切**到 `./other/_OLD/` 归档（带时间戳前缀，不覆盖历史），再从 skill 目录复制最新文件\n\n```bash\nSKILL_DIR=\"<skill_dir>\"  # 如 ~/.claude/skills/zhihu-research-page\nCURRENT=$(cat ./other/.skill_version 2>/dev/null || echo \"v0\")\nLATEST=$(grep -oP 'VERSION:\\Kv\\d+' \"$SKILL_DIR/SKILL.md\" | head -1)\nif [ \"$CURRENT\" != \"$LATEST\" ]; then\n  echo \"Skill 已更新：$CURRENT → $LATEST，正在同步...\"\n  TS=$(date +%Y%m%d_%H%M%S)\n  mkdir -p ./other/_OLD/\"${TS}\"\n  # 归档旧文件（不覆盖历史记录）\n  for f in ./other/assemble.py ./other/scan_html.py ./other/wordcount_check.py; do\n    [ -f \"$f\" ] && mv \"$f\" \"./other/_OLD/${TS}/\"\n  done\n  # 复制新文件\n  cp \"$SKILL_DIR\"/scripts/assemble.py \"$SKILL_DIR\"/scripts/scan_html.py \"$SKILL_DIR\"/scripts/wordcount_check.py ./other/ 2>/dev/null\n  echo \"$LATEST\" > ./other/.skill_version\n  echo \"旧文件已归档到 ./other/_OLD/${TS}/，新文件已就位，继续执行。\"\nfi\n```\n\n### 教程/学习模式\n\n当主题包含 **教程、教学、学习路径、学习、怎么做、入门、指南、上手、怎么用** 等关键词时，自动启用。在阶段 0 额外执行：\n\n1. **提炼答主背景**：从对话上下文提取——已修课程、编程语言掌握程度、有无相关经验、当前项目阶段、已掌握/未掌握的知识点\n2. **必要时提问**：若背景信息不足以判断入门门槛（如不确定是否会 Python、是否有 Linux 环境），发起 1~2 个简短确认问题，不追问超过 2 轮\n3. **搜索目标调整**：优先搜索面向该背景的入门教程、实战案例、新手常见误区、避坑指南，而非学术文献或高阶架构\n4. **写作目标调整**：整页结构设计为\"跟着做就能上手\"——每章含前置知识标注、操作步骤、预期结果截图描述、常见报错及解决。让答主从头看到尾就能**学会某些技能、扎实理解某些知识点、学会某些操作、会做某些事情**\n\n### 部分执行模式（N% 版本）\n\n当用户指定\"仅执行 X% / N% 版本\"时，按以下公式等比缩缩，且**主题与上一版本完全相同**。**N 可以是任意正数**（1%、30%、200%、500% 等均支持）。\n\n| 参数 | 完整版 | N% 版本（N 为任意正数） |\n|------|--------|-------------------------|\n| 工作目录 | 当前工作区 | 新建 `v{M}_{N}pct/`（与上一版本目录同级，M = 上一版本号+1） |\n| 搜索次数 | ≥500 | `max(5, floor(500 × N/100))` |\n| 每章字数 | ≥11,000 | `max(100, floor(11000 × N/100))` |\n| 全页字数 | ≥100,000 | `floor(100000 × N/100)`（无额外地板，1% 就是 1000） |\n| 章节数 | 10 | `max(3, min(30, floor(10 × N/100)))`（N%≤100% 自动缩为 3~10 章；>100% 允许扩到最多 30 章） |\n| 搜索代理数 | 3 轮串行 | N%≤100% 用 1 个；>100% 按 `min(6, floor(3 × N/100))` 代理 |\n| HTML `<title>` | 主题 | `{主题}（{N}%版本）` |\n| 知乎问题 `<h1>` | 主题 | `{主题}（{N}%版本）` |\n| 答主头像 | DiceBear（默认） | DiceBear，跳过头像搜索 |\n\n**各 N% 示例**：\n\n| N% | 搜索 | 字数/章 | 总字数 | 章节数 | 适用场景 |\n|----|------|---------|--------|--------|----------|\n| 1% | 5 | 110 | 1,000 | 3 | 极速预览 |\n| 3% | 15 | 330 | 3,000 | 3 | 快速验证 |\n| 30% | 150 | 3,300 | 30,000 | 3 | 中速草稿 |\n| 100% | 500 | 11,000 | 100,000 | 10 | 完整版 |\n| 200% | 1,000 | 22,000 | 200,000 | 20 | 深度加量 |\n| 500% | 2,500 | 55,000 | 500,000 | 30 | 超深度（注意 token/时间预算） |\n\n> **实用限制**：N%>300% 时建议分批次交付，避免单次 session token 耗尽。\n\n**铁律**：\n- 新目录 `v{N}_{percentage}pct/` 创建在与上一版本目录**同级**（如已有 `v2-学习路径/`，则创建 `v3_3pct/`）\n- 目录内按标准约定建 `images/`、`other/`、`research_result/` 子文件夹\n- HTML `<title>` 和问题 `<h1>` 必须包含\"N%版本\"字样，用户打开即知为缩略版\n- 主题、大纲结构与上一版本保持一致，仅因子量被等比例压缩\n\n---\n\n## 阶段 1：诊断问题\n\n**在搜索之前**，先对主题做结构化诊断，明确研究的范围和方向。\n\n### 1.1 拆解问题\n\n将用户的研究主题拆解为：\n- **核心问题**：1 句话概括用户真正想知道什么\n- **关键子问题**：3~5 个，覆盖不同维度（是什么、为什么、怎么办、有没有案例、要不要花钱）\n- **预期答案轮廓**：回答这个主题需要覆盖哪几类信息\n\n### 1.2 确定搜索方向\n\n基于诊断结果，规划 7 个搜索子方向（对应阶段 3 的 7 个搜索代理），每个方向一句话描述。确保搜索方向之间互不重叠、加起来覆盖诊断的所有关键子问题。\n\n### 1.3 拟定临时问题标题\n\n给出一个知乎风的问题标题草稿，用于阶段 2 的骨架 HTML。标题应：\n- 以问句形式（\"XX 是什么？\"\"为什么 XX？\"\"怎么解决 XX？\"）\n- 有吸引力、能勾起点击欲\n- 后续可根据阶段 3 的搜索结果微调\n\n### 1.4 诊断示例\n\n**主题**：排查最近几天 CPU 和磁盘占用异常升高的原因\n\n| 维度 | 内容 |\n|------|------|\n| 核心问题 | 最近几天系统 CPU 和磁盘 I/O 突然飙升的根本原因是什么？ |\n| 关键子问题 | ① 哪个进程/服务占用最高？② 是系统服务还是第三方程序？③ 是否有定时任务/计划任务触发？④ 磁盘 I/O 是随机读写还是顺序读写？⑤ 最近安装了哪些软件/更新？ |\n| 7 个搜索方向 | 系统性能监控方法、常见高 CPU 进程排查、磁盘 I/O 诊断工具、Windows 资源监视器分析、Sysinternals 工具链、杀软/索引服务资源占用、最近 Windows 更新已知性能问题 |\n| 临时标题 | 最近几天电脑风扇狂转、磁盘灯长亮？可能是这几个原因在搞鬼 |\n\n---\n\n## 阶段 2：创建骨架 HTML（index.html）\n\n### 2.1 使用 CSS 模板\n\n直接读取 `references/css-template.css` 的完整内容，嵌入 `<style>...</style>` 块。**不要修改 CSS**（它已包含完整的知乎设计 Token、顶栏、卡片、回答、侧栏及响应式规则）。\n\n### 2.2 构建 HTML 结构\n\n模板如下（`{...}` 部分根据主题替换）：\n\n```html\n<!DOCTYPE html>\n<html lang=\"zh-CN\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>知乎 · {主题的一句话问题}</title>\n<style>\n  /* 粘贴 references/css-template.css 完整内容 */\n</style>\n</head>\n<body>\n\n<header class=\"zh-header\">\n  <div class=\"zh-header__inner\">\n    <a class=\"zh-logo\" href=\"#\">知乎</a>\n    <nav class=\"zh-nav\">\n      <a href=\"#\" class=\"active\">首页</a><a href=\"#\">会员</a><a href=\"#\">发现</a><a href=\"#\">等你来答</a>\n    </nav>\n    <div class=\"zh-search\"><input class=\"zh-search__input\" placeholder=\"{根据主题填占位}\"></div>\n    <div class=\"zh-actions\"><button class=\"zh-btn--follow\" style=\"margin-left:0;padding:4px 16px;font-weight:600;\">提问</button></div>\n  </div>\n</header>\n\n<div class=\"zh-page\"><div class=\"zh-container\">\n<main class=\"zh-main\">\n\n  <div class=\"zh-card\">\n    <h1 class=\"zh-question__title\">{主题的知乎风问题标题}</h1>\n    <div class=\"zh-question__meta\"><span>被浏览 12,847 次</span><span style=\"margin-left:12px;\">关注问题 · 分享</span></div>\n    <button class=\"zh-question__follow\">关注问题</button>\n    <span style=\"font-size:14px;color:var(--text-secondary);margin-left:12px;\">5 个回答</span>\n  </div>\n\n  <!-- 预留 1~2 条引导回答（可选） -->\n\n  <!-- ASSEMBLE -->\n\n</main>\n\n<aside class=\"zh-sidebar\">\n  <div class=\"zh-card zh-sideblock\">\n    <h3>📑 本页章节</h3>\n    <ol><li>（组装时自动填充）</li></ol>\n  </div>\n</aside>\n\n</div></div>\n</body>\n</html>\n```\n\n### 2.3 CSS 注入方式\n\n从 **skill 目录**（只读）的 `references/css-template.css` 读取，写入**工作区**的 `index.html`。示例：\n```python\nimport os\nskill_dir = \"<skill_dir>\"  # 用户指定的技能目录路径\nworkspace = os.getcwd()     # 当前工作区\ncss_path = os.path.join(skill_dir, \"references\", \"css-template.css\")\ncss = open(css_path, encoding=\"utf-8\").read()\nhtml = html.replace(\"/* 粘贴 references/css-template.css 完整内容 */\", css)\n# index.html 写入工作区\nopen(os.path.join(workspace, \"index.html\"), \"w\", encoding=\"utf-8\").write(html)\n```\n**必须完整嵌入** CSS，不缩略。CSS 文件只读，不修改。\n\n---\n\n## 阶段 3：并行搜索（≥500 次真实搜索）\n\n### 3.1 启动搜索代理（配额感知，3 轮串行）\n\n**核心教训**：per-session 搜索配额是主子代理共享硬限——7 代理并行各要求 ≥72 次，总需 ≥504 次，多数代理在 20-30 次即触顶，大量 token 消耗在\"尝试→失败→请提升配额\"空转。**改为 3 轮串行**：\n\n```python\nremaining = 200           # 全局剩余配额（主子代理共享）\nagents_per_round = min(3, remaining // 72)  # 每轮最多 3 个，确保每个 ≥72 次\nif agents_per_round == 0:\n    # 剩余不足 72 次时，剩余配额集中给 1 个代理\n    agents_per_round = 1\n```\n\n**执行方式**：\n- 第 1 轮：3 个代理 × 72 次 = 216 次（如配额足够）\n- 第 2 轮：另 3 个代理（剩余配额允许���）\n- 第 3 轮：剩余代理\n- 每轮串行等待完成后再启动下一轮，避免同时触顶的 token 空转\n- 官方文档（espressif、arduino、github docs 等）优先用 `WebFetch` 抓取——不计入搜索配额\n\n**搜索代理通用 Prompt 模板**：完整模板见 `templates/search_agent_prompt.md`。\n\n使用时读入并替换 `{direction}` 占位符：\n\n```python\nprompt = open('<skill_dir>/templates/search_agent_prompt.md', encoding='utf-8').read()\nprompt = prompt.replace('{direction}', agent_direction)\n```\n\n**子代理完成验收标准（重要）**：\n- ⚠️ task-notification 元数据声明（\"搜索 85 次\"等）不可信——实际文件状态才是真相\n- ✅ 唯一验收方式：`ls` 检查指定文件已生成 + 文件大小 > 0\n- ✅ 代理必须将结构化报告**写入明确的文件路径**（如 `./research_result/report_XX.md`）作为完成凭证\n- ❌ 仅通过 SendMessage 回传文本、无文件落盘的，视为未完成\n\n### 3.2 每个代理回传即追加 ./research_result/search_result.md（重要）\n\n> **追加策略**：优先用 Python `open(path, \"a\")` 追加字符串——比 Edit 工具更稳定（Edit 在 old_string 含反引号/公式/特殊字符时匹配脆弱，易失败需重试）。仅当需要更新文件头计数器时才用 Edit 做精准替换。\n\n**核心要求**：每收到一个搜索子代理的回传，主流程必须**立即**将该代理的结构化报告追加写入工作区的 `./research_result/search_result.md`，而不是等 7 个代理全部回传后再统一处理。\n\n**首次写入（第 1 个代理回传前）**：若 `./research_result/search_result.md` 不存在，先以写入模式创建并写入文件头。文件头应包含「目标搜索次数」「累计搜索次数」「已覆盖子方向」三个实时计数器，并在文件尾预留 `---` 分隔：\n\n```python\nimport os, datetime\nws = os.getcwd()\npath = os.path.join(ws, \"research_result\", \"search_result.md\")\ntarget = 504                           # 目标总搜索次数（7 代理 × 72）\nheader = (\n    \"# 搜索结果汇总 (search_result.md)\\n\\n\"\n    \"> 本文件由主流程在每个搜索子代理回传后**自动追加**生成。\\n\"\n    \"> 记录每次回传的「已搜索次数」与「核心结果」，便于过程追溯与断点续跑。\\n\\n\"\n    f\"> 生成时间：{datetime.date.today().isoformat()}\\n\"\n    f\"> 目标：累计 ≥{target} 次真实搜索\\n\"\n    \"> 累计搜索次数：0\\n\"\n    \"> 已覆盖子方向：0\\n\\n\"\n    \"---\\n\"\n)\nopen(path, \"w\", encoding=\"utf-8\").write(header)\n```\n\n**注意**：文件头中的 `累计搜索次数` 和 `已覆盖子方向` 每次追加后需由主流程回写更新，以便断点续跑时读取当前进度。\n\n**后续每个代理回传**：以追加模式写入一个区块，并维护全局累计搜索次数 `global_search_count`（主流程内部变量，初始 0）。区块标题统一用 `## [{N}] {子方向名称} — 更新于 {ISO 时间戳}` 格式（精确到毫秒）：\n\n```python\nimport os, datetime\nws = os.getcwd()\npath = os.path.join(ws, \"research_result\", \"search_result.md\")\n\n# agent_report      = 该搜索代理回传的结构化报告字符串\n# agent_search_count = 代理自报的本方向搜索次数（从报告第 3 项解析）\n# global_search_count 已在主流程初始化\n# agent_direction   = 该代理负责的方向描述\nglobal_search_count += agent_search_count          # 累加全局计数\nbatch_no = global_search_count                     # 用累计次数做序号（断点续跑友好）\nnow_ts = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3]  # 精确到毫秒\n\nblock = (\n    f\"## [{batch_no}] {agent_direction} — 更新于 {now_ts}\\n\\n\"\n    f\"**本次搜索次数**：{agent_search_count}次（WebSearch）\\n\\n\"\n    f\"{agent_report}\\n\\n\"                         # 代理的原始结构化报告\n    \"---\\n\\n\"\n)\nwith open(path, \"a\", encoding=\"utf-8\") as f:       # 始终用 \"a\" 追加\n    f.write(block)\n\n# 追加完成后回写文件头中的累计搜索次数和已覆盖子方向（用于断点续跑读取）\ncontent = open(path, encoding=\"utf-8\").read()\ncontent = re.sub(r'> 累计搜索次数：\\d+', f'> 累计搜索次数：{global_search_count}', content)\ncontent = re.sub(r'> 已覆盖子方向：\\d+', f'> 已覆盖子方向：{batch_no}', content)\nopen(path, \"w\", encoding=\"utf-8\").write(content)\n```\n\n**文件内容约定**：\n- 顶部固定为文件头（含生成时间、目标、累计搜索次数、已覆盖子方向）\n- 阶段 1 诊断信息以 `## 学习路径问题诊断` 开头（含答主背景、核心问题、关键子问题）\n- 每个搜索代理回传一个 `## [{N}] {方向} — 更新于 {ISO 时间戳}` 区块，包含 `**本次搜索次数**`、`**核心发现**`、`**关键数据/事实**（每条附 URL）`、可选的 `**存疑/争议**`\n- 来源直接内联在 `**关键数据/事实**` 区块下，格式：`N. 标题\\n   - 来源：URL`\n- 区块间用 `---` 分隔\n- 保留代理原始结构化报告原文（不做二次加工）\n\n**用途**：该文件是搜索过程的可追溯日志，既可用于断点续跑（下次运行先读文件头的累计搜索次数），也可在阶段 4 规划章节时作为证据参考。\n\n### 3.3 汇总来源池\n\n各代理回传并写入 `./research_result/search_result.md` 后，从所有区块的 `**关键数据/事实**` 下提取 `N. ... \\n   - 来源：URL` 格式的链接，合并为一个去重清单。提取正则：`re.findall(r'- 来源：(https?://[^\\s\\n]+)', content)`。此清单将在阶段 5 传给每个撰写代理。\n\n---\n\n## 阶段 4：规划章节（基于搜索结果的证据驱动）\n\n**严禁在搜索之前猜测章节标题。** 章节规划必须基于阶段 3 的搜索发现。\n\n### 4.1 从搜索报告中提取章节主题\n\n分析阶段 3 各搜索代理的结构化报告，提取：\n- **高频主题**：多个搜索代理都提到的核心议题\n- **争议焦点**：搜索结果中存在不同说法/矛盾的话题（值得单列一章呈现多元观点）\n- **知识缺口**：搜索结果中哪些方面信息充分、哪些不足（不足的标注\"需在撰写阶段补充搜索\"）\n\n### 4.2 设计 10 个章节\n\n确保：\n- 逻辑递进（概念→原理→实践→生态/常见方案/避坑）\n- 覆盖维度全面（定义背景/技术细节/实战案例/对比选型/未来趋势/社区资源）\n- 标题简洁（≤20字）、有吸引力（知乎风）\n- **每个章节标题直接对应搜索报告中的具体发现**，不是凭空拟的\n\n### 4.3 填入 CHAPTERS\n\n将章节列表写入**工作区**的 `assemble.py` 的 `CHAPTERS` 变量（此文件是从 skill 目录的 `scripts/assemble.py` 复制到工作区的副本）。参考格式：\n```python\nCHAPTERS = [\n    (\"基于诊断命名的章节1\",   \"ch-01\",     [\"_draft_ch_01.html\"]),\n    (\"基于诊断命名的章节2\",   \"ch-02\",     [\"_draft_ch_02.html\"]),\n    # ... 其余 8 章\n]\n```\n\n### 4.4 为每章拟定子方向\n\n为每个章节写 3~5 条预期覆盖要点（传给阶段 5 的撰写代理），这些要点直接来自搜索报告中的发现。如果某章的搜索结果不足，标注\"本章需在撰写阶段补充 ≥30 次专项搜索\"。\n\n---\n\n## 阶段 4.5：答主身份与头像配置\n\n> **默认策略**：使用 DiceBear 风格化 SVG 头像（稳定、统一、零搜索成本）。仅当用户**明确要求**真实头像时才启动身份搜索——子 agent 搜索真实头像的性价比极低（消耗 ~150 次调用、~64K token、~30 分钟，常见收获仅 8 个可用头像）。\n\n### 头像选取三级优先级\n\n| 优先级 | 来源 | 判定标准 |\n|--------|------|----------|\n| 1 级 | 真实人物公开头像 | 公开可独立验证的直链（GitHub CDN `avatars.githubusercontent.com/u/<id>`、豆瓣影人页、雪球/掘金/丁香园等平台公开头像、个人官网） |\n| 2 级 | DiceBear 风格化 SVG | `https://api.dicebear.com/7.x/{bottts-neutral|avataaars|notionists}/svg?seed=<英文短语>&backgroundColor=<hex>&radius=50`，三种风格交替配合不同配色 |\n| 3 级 | 单字符占位 | `<div class=\"zh-avatar\" aria-hidden=\"true\">{首字}</div>`（仅在前两级均不可用时使用） |\n\n**铁律**：\n- ❌ 绝不编造图链（包括看似合理的 `<platform>.com/v2-...` 占位路径）\n- ❌ 身份不明的真实人物宁弃用（仅查到 ID/账号存在但查不到是谁的，不纳入）\n- ❌ 不依赖 WebFetch 测可达（企业策略/网络限制下 WebFetch 常不可靠）\n\n### 完整流程（五步）\n\n#### 步骤 1：通道探测（阶段 4.5 的第一步，只做一次）\n\n先确认本机可用的头像图链源及代理端口：\n\n```bash\n# 测 GitHub CDN（通常最可靠）\ncurl -sI --max-time 5 \"https://avatars.githubusercontent.com/u/1\" | head -3\n\n# 测 DiceBear API\ncurl -sI --max-time 5 \"https://api.dicebear.com/7.x/bottts-neutral/svg?seed=test\" | head -3\n\n# 如有企业代理，补充 -x <代理地址>\ncurl -x http://proxy:port -sI --max-time 5 \"https://avatars.githubusercontent.com/u/1\" | head -3\n```\n\n记录**实际可达的源**和端口，作为后续验证的基础。不同机器结果可能不同，不预设。\n\n#### 步骤 2：身份搜索与即验（每章独立，可并行）\n\n对每个章节的人设领域，并行派发 ≥2 个子 agent 搜索真实人物公开身份：\n\n```\n任务：搜索「{章节领域}」领域的真实公开人物，获取其公开头像 URL。\n要求：\n- 搜索该领域的知名专家/博主/贡献者（GitHub、技术博客、学术主页等）\n- 仅返回可独立验证的人物：姓名明确 + 领域身份可交叉印证\n- 头像 URL 必须是公开直链（如 GitHub avatar CDN），非需登录的平台内链\n- 身份不明者（仅知 ID 但查不到真实身份）不返回\n- 每人返回：姓名、身份简述、头像直链 URL、印证来源\n```\n\n**即验**：主流程不等待所有子 agent 回传——候选图链一到就用 `curl -sI` 亲测可达，取\"**身份交叉印证 + 图链可达**\"双重确认的锚定值。无双重印证的降级到 DiceBear。\n\n#### 步骤 2.5：缓存头像到本地 `./images/`（关键——避免外链失效）\n\n所有确认为有效（图链可达）的头像必须下载缓存到工作区 `./images/` 子目录，HTML 中引用本地路径而非外链：\n\n```bash\n# 真实头像：curl 下载并根据 Content-Type 确定扩展名\ncurl -sL -o \"./images/ch-01.tmp\" \"https://avatars.githubusercontent.com/u/20641750?v=4\"\nEXT=$(file --mime-type -b \"./images/ch-01.tmp\" | cut -d'/' -f2 | sed 's/jpeg/jpg/')\nmv \"./images/ch-01.tmp\" \"./images/ch-01.${EXT}\"\n\n# DiceBear SVG：直接保存为 .svg（远程 API 可能失效或限流）\ncurl -sL -o \"./images/ch-02.svg\" \\\n  \"https://api.dicebear.com/7.x/avataaars/svg?seed=arduino-fan&backgroundColor=f4b400&radius=50\"\n```\n\n**缓存规则**：\n- 真实头像保留原始格式（`.png` / `.jpg`），命名 `ch-<序号>.<ext>`\n- DiceBear SVG 以 `.svg` 后缀缓存\n- 缓存完成后，JSON 映射表中的 `avatar` 字段改为本地相对路径（如 `./images/ch-01.png`、`./images/ch-02.svg`）\n- 原始外链保留在 `avatar_remote` 字段供溯源\n\n#### 步骤 3：注入并统一结构（使用本地缓存路径）\n\n将每章作者块统一为以下结构，`src` 指向本地 `./images/` 缓存路径：\n\n```html\n<div class=\"zh-answer__author\">\n  <div class=\"zh-answer__author-avatar\">\n    <img src=\"./images/ch-01.png\" alt=\"{答主名}头像\" width=\"44\" height=\"44\" style=\"border-radius:50%;display:block\">\n  </div>\n  <div class=\"zh-author__meta\">\n    <div class=\"zh-author__name\">{答主名}</div>\n    <div class=\"zh-author__bio\">{一句话简介}</div>\n  </div>\n  <button class=\"zh-btn--follow\" type=\"button\">关注</button>\n</div>\n```\n\n- 头像路径由阶段 4.5 缓存后确定，**注入到章节写作代理的 Prompt 中**，代理不得自行编造\n- DiceBear 示例：`./images/ch-02.svg`\n- GitHub 真实头像示例：`./images/ch-01.png`\n\n#### 步骤 4：最终确认（Dump）\n\n注入章节后，用精确命令验证，**不依赖跨行正则**（跨行正则会被换行符截断，误判为未注入）：\n\n```bash\n# ✅ 正确的验证方式——grep -o 按行匹配\ngrep -o 'author-avatar[^<]*' ./other/_draft_*.html | head -20\n\n# 或用 Python 上下文打印\npython -c \"\nimport re\nhtml = open('./other/index_skeleton.html', encoding='utf-8').read()\n# 找每个 author-avatar 块内容\nfor m in re.finditer(r'<div class=\\\"zh-answer__author-avatar\\\">(.*?)</div>', html, re.S):\n    print(m.group(1).strip()[:100])\n\"\n```\n\n**不要**用 `[^>]*` 跨行匹配（会因换行截断匹配不到，误报\"未注入\"）。\n\n### 4.5 产出\n\n阶段 4.5 完成后，应有一个明确的 JSON 映射表传给阶段 5 写作代理：\n\n```json\n{\n  \"ch-01\": {\"name\": \"嵌入式老潘\", \"bio\": \"10年嵌入式开发经验\", \"avatar\": \"./images/ch-01.svg\", \"tier\": \"dicebear\"},\n  \"ch-02\": {\"name\": \"创客阿杰\", \"bio\": \"Arduino中文社区活跃贡献者\", \"avatar\": \"./images/ch-02.svg\", \"tier\": \"dicebear\"},\n  \"ch-03\": {\"name\": \"开源极客小凯\", \"bio\": \"智能硬件独立开发者, GitHub 5K star 项目作者\", \"avatar\": \"./images/ch-03.png\", \"avatar_remote\": \"https://avatars.githubusercontent.com/u/20641750\", \"tier\": \"real\", \"avatar_source\": \"GitHub用户头像（仅作视觉素材）\"}\n}\n```\n\n每个章节一条记录，含：\n- `name` — 答主名（与章节领域匹配）\n- `bio` — 简介，与章节领域匹配\n- `avatar` — 本地缓存路径（`./images/ch-XX.<ext>`）\n- `tier` — real / dicebear / fallback（仅指头像图源的来源等级）\n- `avatar_remote` — 真实头像原始外链（仅 `tier=real` 时存在）\n- `avatar_source` — 头像出处说明（如\"GitHub用户头像（仅作视觉素材）\"）\n\n---\n\n### 5.1 启动 10 个并行撰写代理\n\n在一条消息中批量启动 10 个 Agent（`subagent_type: \"general-purpose\"`, `run_in_background: true`）。每个代理：\n- 负责一个章节\n- 必须写入指定的 `_draft_ch_XX.html` 文件\n- 用 Python 脚本自验有效中文字 ≥11,000\n\n### 5.2 章节撰写代理 Prompt 模板\n\n完整模板见 `templates/writing_agent_prompt.md`。使用时读入并替换占位符：\n\n```python\nprompt = open('<skill_dir>/templates/writing_agent_prompt.md', encoding='utf-8').read()\nprompt = prompt.replace('{topic}', topic)\nprompt = prompt.replace('{chapter_title}', ch_title)\nprompt = prompt.replace('{chapter_points}', ch_points)\nprompt = prompt.replace('{chapter_urls}', ch_urls)\nprompt = prompt.replace('{chapter_id}', ch_id)\n```\n\n- 作者块 HTML 模板见 `templates/author_block.html`\n- 写完后运行独立验收：`python -X utf8 scripts/wordcount_check.py ./other/_draft_ch_XX.html`\n- 结果 ≥11,000 且与 agent 自述差 ≤5% 才算完成，否则扩写\n\n### 5.3 并行启动方式\n\n```python\nfor ch in chapters:\n    Agent(name=f\"writer-{ch.anchor}\", subagent_type=\"general-purpose\",\n          run_in_background=True, prompt=chapter_prompt)\n```\n\n**建议至少额外补充 30~60 次搜索在每个撰写代理中**，用于核实所引用的具体数据点。\n\n---\n\n## 阶段 6：组装与核验\n\n### 6.1 准备脚本（复制到工作区）\n\n从 skill 目录（只读）复制两个脚本到工作区：\n\n```bash\ncp <skill_dir>/scripts/scan_html.py ./other/scan_html.py\ncp <skill_dir>/scripts/assemble.py ./other/assemble.py\n```\n\n编辑工作区副本的 `assemble.py`：将阶段 4 规划的章节列表填入 `CHAPTERS` 变量。`scan_html.py` 无需编辑——它自动扫描所有 `_draft_*.html`。\n\n### 6.2 预扫描 HTML — <code> 标签完整性检查（assembler 兜底，问题消灭在草稿阶段更高效）\n\n**在运行 assemble.py 之前**，必须先运行预扫描：\n\n```bash\n# Windows 注意：必须设置编码，否则 emoji 输出崩溃\npython -X utf8 ./other/scan_html.py\n# 或 set PYTHONIOENCODING=utf-8 && python ./other/scan_html.py\n```\n\n> **Windows 编码警告**：`scan_html.py` 使用 emoji（⚠️✅）输出，Windows 控制台默认 cp936 编码会导致 `UnicodeEncodeError`。必须加 `-X utf8` 标志或设 `PYTHONIOENCODING=utf-8`，否则脚本在 Windows 上首次运行即崩溃。\n\n脚本自动检测三类高频 `<code>` 标签问题（子代理生成内容的最大翻车点）：\n\n| 问题类型 | 检测项 | 后果 |\n|----------|--------|------|\n| A. 开闭不匹配 | `<code>` 开启与 `</code>` 闭合数量不一致 | 后续全文变等宽字体 |\n| B. 块级标签嵌套 | `<code>...</code>` 内出现 `<p>`/`<table>`/`<h3>`/`<blockquote>` 等 | `font-family: monospace` 泄漏到正文 |\n| C. 异常闭合 | 闭合标签含中文字符（如 `</strong文>`、`</code。>`） | 标签不闭合，浏览器行为不可预期 |\n| D. 交叉嵌套 | `<code>` 与 `<strong>` 开闭顺序交叉 | 字体继承链断裂 |\n\n若发现问题，按报告逐文件修复（常见修复：把 `<code>` 内的块级标签移到外面，补上缺失的 `</code>`，修正错位的 `</strong>`）。修复后重跑 `scan_html.py` 确认清零，再进入 6.3。\n\n> **排查优先级（重要）**：当用户引用本 skill 要求\"修复网页结构问题\"或\"字体异常/全是等宽字\"时，**优先排查 `<code>` 标签完整性**，而非修改 CSS。99% 的字体泄漏和结构异常来自 `<code>` 标签封闭不当，`css-template.css` 本身已验证无误。\n\n### 6.3 运行 assemble.py\n\n```bash\npython ./other/assemble.py\n```\n\n脚本会依次：\n1. 补 h2/h3 样式（若缺失）\n2. 剥离旧章节（幂等），注入锚点 id\n3. 一次性将全部章节替换骨架的 `<!-- ASSEMBLE -->` 占位标记\n4. **去重 `<style>` 块**：内容相同的只保留首次出现\n5. **统一硬编码主题蓝**：蓝系 hex → `var(--zhihu-blue)`，非蓝系保留\n6. 自动更新回答数\n7. 重建侧栏（纯章节导航）\n8. **自动自查**（5 项，不通过立即终止）：\n   - ① `:root` 中 `--zhihu-blue` 定义数（须为 1）及 `var()` 用法数\n   - ② 检测残留硬编码蓝系 hex（非 `:root` 行）\n   - ③ 重复 `<style>` 块检测\n   - ④ `.zh-answer__body code` 样式一致性校验\n   - ⑤ `.zh-body` 类名出现次数（须为 0）\n9. 写入成品 HTML\n10. 打印每章及总计有效中文字数\n\n> **CSS 类名隔离**：页面级包裹层已改名为 `zh-page`（v14 前叫 `zh-body`）。同名类在不同层级复用会导致模板强调色泄漏——assemble.py 的去重（步骤 4）和颜色归一（步骤 5）已内置防护。章节草稿内覆盖样式建议用更具体的选���器链（如 `#ch-01 .zh-body h2`）。\n\n### 6.4 幂等性注意事项\n\n`assemble.py` 首次运行后会**消费**骨架中的 `<!-- ASSEMBLE -->` 占位标记。如果需要在同一次会话中重跑（如补完章节后再次拼接），需先手工恢复占位符：\n\n```bash\n# 用 sed/Python 把已注入的章节替换回占位标记\npython -c \"\nimport re\nhtml = open('./other/index_skeleton.html', encoding='utf-8').read()\n# 找 </main> 的位置，在它前面还原占位符\nhtml = re.sub(r'(\\s*)(</main>)', r'\\n  <!-- ASSEMBLE -->\\n\\2', html, count=1)\nopen('./other/index_skeleton.html', 'w', encoding='utf-8').write(html)\n\"\n```\n\n或更简单的方式：在最初写骨架时保存一份原始副本 `index_skeleton.html`，每次重跑前还原。\n\n### 6.5 判断达标\n\n若 `总计 < 100,000`：\n- 找出最薄弱的 2~3 章（有效字最少的）\n- 返回阶段 5，用独立 Agent 聚焦扩写补足\n- 重跑 scan_html.py → assemble.py 直至达标\n\n若 `总计 ≥ 100,000`：进入阶段 7。\n\n> **N% 模式注意**：运行 `assemble.py` 前先编辑 `TARGET_WORDS = floor(100000 × N/100)`，避免 N% 版本误报\"还差 97801 字\"。Windows 运行统一使用 `PYTHONIOENCODING=utf-8 python ./other/assemble.py`，防止 emoji 输出在 GBK 控制台崩溃。\n\n---\n\n## 阶段 7：交付与收尾\n\n### 7.1 结构校验\n\n确认成品 HTML 中：\n- 含 `zh-header`、`zh-sidebar`、`zh-main`、`</main>` 等关键结构\n- `<article>` 数与回答数匹配\n- 章节锚点 id 与侧栏导航 href 一致\n- `<code>` 标签开闭数量匹配（可用 `grep -c '<code' ./other/_draft_*.html` 和 `grep -c '</code>' ./other/_draft_*.html` 快速核对）\n- 无 `<code>...</code>` 内嵌套块级标签（若阶段 6.2 scan_html.py 已通过则无需重检）\n- 每章作者块含 `zh-answer__author-avatar` 且有非空 `src`（用 `grep -o 'author-avatar[^<]*' ./other/_draft_*.html` 逐行确认，不依赖跨行正则）\n\n### 7.2 链接抽检\n\n用 WebFetch 对 2~3 条最关键的官方/核心链接做可达性验证，确保不是死链。\n\n### 7.3 交付\n\n运行 `present_files` 把成品 HTML 交付用户，并通报：\n- 全页有效中文字数\n- 各章字数分布\n- 搜索总次数\n- 外链总数\n- 链接抽检结果\n\n### 7.4 工作记忆\n\n使用模型的 Memory 机制，将任务完成记录追加到当前工作区的 `.workbuddy/memory/YYYY-MM-DD.md`。不要硬编码绝对路径。\n\n---\n\n## 质量规则（贯穿全局）\n\n| 规则 | 标准 |\n|------|------|\n| 有效中文字数口径 | 去 `<script>`/`<style>`/所有 HTML 标签后的汉字（`\\u4e00-\\u9fff`）+ 中文标点（`\\u3000-\\u303f`、`\\uff00-\\uffef`），英文代码和英文链接文本不计 |\n| 链接真实性 | 禁止编造任何 URL，每个链接必须来自真实搜索或已核验来源池 |\n| 搜索次数 | 阶段 3 总搜索 ≥500 次；阶段 5 每章再补 30~60 次用于核实 |\n| 每章字数 | 每章 ≥11,000 有效中文，全页 ≥100,000 |\n| 风格一致 | 所有章节必须用知乎回答体，含作者块 + 操作条 |\n| 诚实性 | 不同版本/来源的矛盾信息如实标注，不隐瞒不谈化 |\n| 结构完整性 | 拼接后 HTML 含顶栏/问题头/侧栏/页脚，不丢 CSS class |\n| <code> 标签 | 每章 `<code>` 开闭数量必须匹配，`<code>` 内不得嵌套块级标签；严禁 `<code>` 与 `<strong>` 交叉嵌套 |\n| 头像真实性 | 禁止编造头像图链；真实人物身份须交叉印证（≥2 独立来源）；图链须经 curl 亲测可达；不足时诚实降级 DiceBear |\n| 作者块统一 | 所有章节作者块使用同一 HTML 结构（`zh-answer__author-avatar > img`），禁止变体；头像 URL 由阶段 4.5 统一配置 |\n| 图片路径 | 网页中所有 `<img>` 的 `src` 必须指向本地 `./images/` 相对路径（如 `./images/ch-01.png`），禁止外链图片 |\n| CSS 类名隔离 | 页面级包裹层使用 `zh-page`（非 `zh-body`），章节正文容器使用 `zh-answer__body`；避免同名类在不同层级复用；多个 `<style>` 块合并去重 |\n| 组装前扫描 | 运行 `assemble.py` 前必须先跑 `scan_html.py`，问题清零后方可拼接 |\n\n---\n\n## 报错与降级\n\n| 异常 | 处理 |\n|------|------|\n| 某搜索代理返回 <50 条来源 | 要求该代理补充，或补派一个额外搜索代理 |\n| 某章节有效字 <11,000 | 要求该撰写代理扩写，或补派一个\"扩写代理\"追加内容到同文件 |\n| assemble.py 提示某文件缺失 | 检查文件名映射，更新 CHAPTERS 候补列表 |\n| 组装后全页 <100,000 | 找出最弱 3 章，每章补 ≥(缺口÷3+2000) 字 |\n| 撰写代理报错（无来源/编造 URL） | 在对应章节末尾追加警告标记，必要时重写该章 |\n| scan_html.py 报 <code> 问题 | 逐文件手工修复后重跑 scan_html.py 确认清零，再进入 assemble.py |\n| 组装后页面字体异常/全是等宽字 | **优先排查 <code> 标签完整性**（而非修改 CSS），运行 scan_html.py；常见根因是 <code> 内嵌套了块级标签 |\n| assemble.py 二次运行无效 | `<!-- ASSEMBLE -->` 首次运行后被消费，需手工还原占位符（见 6.4）或从 `index_skeleton.html` 还原骨架 |\n| 子代理 Write/Bash 权限被拒 | 检查 `.claude/settings.local.json` 中 permissions.allow 是否包含 Write/Edit/Bash 对 `_draft_*.html` 的授权（见阶段 6 前置说明） |\n| 头像图链全不可达（通道探测失败） | 降级到 DiceBear 风格化 SVG，标注\"本轮头像因网络限制使用 DiceBear 替代\" |\n| 真实人物身份无法交叉印证 | 降级到 DiceBear，标注原因（如\"GitHub 用户 X 身份无法确认，以 DiceBear 替代\"） |\n| 组装后 author-avatar 缺失 | 用 `grep -o 'author-avatar[^<]*' ./other/_draft_*.html` 逐行确认（不依赖跨行正则），缺失的章节回阶段 4.5 补配头像 |\n| 搜索代理集体触顶（主配额耗尽） | 减少并发数至 `floor(剩余配额/72)`，优先 WebFetch 抓取官网文档（不计入搜索配额） |\n| scan_html.py 在 Windows 上报 UnicodeEncodeError | 加 `-X utf8` 标志运行：`python -X utf8 ./other/scan_html.py`；或 `set PYTHONIOENCODING=utf-8` |\n| 撰写代理 `<code>` 自检不通过 | 代理在草稿完成后立即修复 `<code>` 开闭/嵌套问题；问题消灭在草稿内，避免 assemble 阶段重跑多轮 |\n\n---\n\n## 资源文件\n\n- `references/css-template.css` — 知乎风格 CSS（直接嵌入 `<style>`）\n- `scripts/assemble.py` — 通用拼接与字数核验脚本（使用前编辑 CHAPTERS）\n- `scripts/scan_html.py` — HTML `<code>` 标签预扫描脚本（assembly 前兜底）\n- `scripts/wordcount_check.py` — 独立字数核验 + `<code>` 完整性检查（每章写完后运行）\n- `templates/writing_agent_prompt.md` — 章节撰写代理 Prompt 模板\n- `templates/search_agent_prompt.md` — 搜索代理 Prompt 模板\n- `templates/author_block.html` — 统一作者块 HTML 模板\n- `TROUBLESHOOTING.md` — 12 类高频异常及处理方法（遇到异常先读此文件）\n\nFile v0.1.0:README.md\n\n# 一句话生成知乎高质量回答网页（可自由剪裁）\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n[![SKILL.md](https://img.shields.io/badge/SKILL.md-v21-blue)](SKILL.md)\n\n> 通过大规模联网搜索自动创建知乎风格的深度知识网页，样式高度还原 zhihu.com。生成 10 个章节的多答主模拟回答页面，含 ≥10 万有效中文字和 ≥500 次真实搜索引用。支持手动裁剪为任意比例版本，多次执行自动创建带版本号的独立文件夹。\n\n---\n\n## 快速开始\n\n```\n# npx安装\nnpx skills add https://github.com/timeRATE-966/zhihu-research-page-skill\n```\n\n## 用例\n\n```\n/zhihu-research-page 执行2%版本\n主题：什么是 Harness Engineering？\n\n/zhihu-research-page 执行100%的v2版本\n主题：国际象棋怎么学？代数记谱法、西西里、西班牙主流开局这些是什么？\n\n/zhihu-research-page 执行200%的v2版本\n主题：各种调式的流行歌曲都有什么特点，它们各有什么代表作？\n```\n\n> ⚠️ **重要**：100% 版本约需 100 分钟且 token 消耗巨大，强烈建议先生成 2% 版本检验效果。\n\n## 核心特性\n\n| 特性                     | 说明                                                                |\n| ------------------------ | ------------------------------------------------------------------- |\n| **大规模搜索驱动** | 默认 ≥500 次真实 WebSearch，所有事实附可点击来源链接               |\n| **知乎风格还原**   | CSS 高度还原 zhihu.com 设计，含顶栏/侧栏/问题头/答主块/操作条       |\n| **10 章多答主**    | 每章独立答主身份与头像，模拟真实知乎多视角回答                      |\n| **自由剪裁**       | 支持任意 N% 版本（1% ~ 500%），等比缩减字数/搜索/章节数             |\n| **版本管理**       | 多次执行自动创建`v{N}_{pct}pct/` 独立文件夹，主题保持一致         |\n| **教程模式**       | 自动识别学习/教程类主题，提炼答主背景，写作目标面向\"跟着做就能上手\" |\n| **自动自查**       | 组装阶段自动检测`<code>` 标签、CSS 颜色泄漏、字数达标等 5 项      |\n\n## 剪裁比例参考\n\n| 比例 | 搜索次数 | 总字数    | 章节数 | 耗时      | 适用         |\n| ---- | -------- | --------- | ------ | --------- | ------------ |\n| 2%   | ≥10     | ≥2,000   | 3      | ~2 分钟   | 极速检验效果 |\n| 5%   | ≥25     | ≥5,000   | 3      | ~5 分钟   | 快速验证     |\n| 30%  | ≥150    | ≥30,000  | 3      | ~30 分钟  | 中速草稿     |\n| 100% | ≥500    | ≥100,000 | 10     | ~100 分钟 | 完整版       |\n| 200% | ≥1,000  | ≥200,000 | 20     | ~200 分钟 | 深度加量     |\n\n## 安装\n\n### npx安装\n\n```\nnpx skills add https://github.com/timeRATE-966/zhihu-research-page-skill\n```\n\n### 手动安装\n\n```bash\ngit clone https://github.com/timeRATE-966/zhihu-research-page-skill.git\ncp -r zhihu-research-page-skill ~/.claude/skills/zhihu-research-page\n```\n\n### 项目级安装\n\n```bash\ncp -r zhihu-research-page-skill .claude/skills/zhihu-research-page\n```\n\n## 文件结构\n\n```\nzhihu-research-page/\n├── SKILL.md                          # 核心 Skill 定义\n├── README.md                         # 本文件\n├── LICENSE                           # MIT\n├── TROUBLESHOOTING.md                # 12 类高频异常及处理\n├── templates/\n│   ├── writing_agent_prompt.md       # 章节撰写代理 Prompt\n│   ├── search_agent_prompt.md        # 搜索代理 Prompt\n│   └── author_block.html             # 统一答主块模板\n├── scripts/\n│   ├── assemble.py                   # 拼接与自查脚本\n│   ├── scan_html.py                  # HTML <code> 标签预扫描\n│   └── wordcount_check.py            # 独立字数核验\n└── references/\n    └── css-template.css              # 知乎风格 CSS 模板\n```\n\n## 触发词\n\n生成知乎风网页、知识专题页、深度研究网页、产品百科页、知乎风研究报告、学习路径、教程页面、怎么做、入门指南\n\n## License\n\nMIT\n\nFile v0.1.0:_meta.json\n\n{\n  \"ownerId\": \"kn79kkasgkcqtr9ecpeyt0r1f98b50h4\",\n  \"slug\": \"zhihu-research-page-skill\",\n  \"version\": \"0.1.0\",\n  \"publishedAt\": 1784862788162\n}\n\nFile v0.1.0:CHANGELOG.md\n\n# zhihu-research-page Skill 更新日志\n\n---\n\n## v20 — 2026-07-19（v2_1pct 实战日志 4 项修复）\n\n### 修复 1（阻断性）：assemble.py f-string 转义引号 → SyntaxError\n- autocheck 第④项 `f'{prop}:{val.replace(\\\" \\\", \\\"\\\")}'` → 拆为 `val_compact = val.replace(' ', '')` + `f'{prop}:{val_compact}'`\n- 所有 ✓/❌ emoji 替换为 ASCII `[PASS]`/`[FAIL]`（#2 Windows GBK 崩溃）\n\n### 修复 2：Windows GBK emoji 崩溃\n- `print(\"... ✓\")` → `print(\"... [PASS]\")`，全部 37 处 emoji 替换为 ASCII\n\n### 修复 3：N% 模式误报\"还差 97801 字\"\n- `assemble.py` 新增 `TARGET_WORDS = 100000`（可配置变量）\n- 字数达标判断从硬编码 `100000` 改为 `TARGET_WORDS`\n- SKILL.md Phase 6.5 新增 N% 模式提示\n\n### 修复 4：Edit 工具含反引号匹配失败\n- SKILL.md Phase 3.2 前新增「追加策略」框：优先 Python `open(path, \"a\")`，Edit 仅用于文件头计数器\n\n### 其他\n- SKILL.md Phase 6.5 新增 Windows 运行 `PYTHONIOENCODING=utf-8` 提示\n\n---\n\n## v19 — 2026-07-18（新增「部分执行模式」—— N% 版本）\n\n### 新增\n- **Phase 0「部分执行模式」**：当用户说\"仅执行 3%/N%\"时，按等比缩放：\n  - 搜索次数 `max(15, floor(500 × N%))`、字数 `max(3000, floor(100000 × N%))`\n  - 章节数 `min(10, max(3, floor(10 × N%)))`、搜索代理 1 个、跳过头像搜索\n  - 工作目录 `v{N}_{percentage}pct/`（与上一版本同级，如 `v3_3pct/`）\n  - HTML `<title>` 和问题 `<h1>` 必须包含\"N%版本\"字样\n  - 主题、大纲结构与上一版本保持一致，仅因子量等比压缩\n\n### 同步\n- 4 个位置全部同步，`.skill` 34,049 bytes\n\n---\n\n## v18 — 2026-07-18（去硬编码重构 + 异常手册 + 蓝阈值修复）\n\n### 新增文件（5 个）\n- **`TROUBLESHOOTING.md`** — 12 类高频异常根因+修复方案（配额/通知/字体/编码/阈值/字数/权限等）\n- **`scripts/wordcount_check.py`** — 独立字数核验 + `<code>` 完整性检查脚本（每章写完后强制运行）\n- **`templates/writing_agent_prompt.md`** — 章节撰写代理 Prompt 模板（替代 SKILL.md 内嵌 ~90 行）\n- **`templates/search_agent_prompt.md`** — 搜索代理 Prompt 模板（替代 SKILL.md 内嵌 ~25 行）\n- **`templates/author_block.html`** — 统一作者块 HTML 模板\n\n### 去硬编码\n- SKILL.md Phase 3.1：搜索代理 prompt → `templates/search_agent_prompt.md`\n- SKILL.md Phase 5.2：章节撰写 prompt + Python 自检脚本 → `templates/writing_agent_prompt.md` + `scripts/wordcount_check.py`\n- SKILL.md 字数自检脚本另存为独立可调用文件\n\n### 修复（用户反馈问题 5）\n- **蓝阈值收紧**：`b > 0x80 & b > max(r,g)*0.8` → `b > 0xC0 & b > max(r,g)*1.2`，避免 `#f8f8fa` 误替换为 `var(--zhihu-blue)`\n- **autocheck 字典兼容**：`padding` 比较改用压缩格式 `cs.replace(' ', '')`，兼容 CSS 压缩后无空格写法\n\n### 新增规则\n- **TROUBLESHOOTING 优先**：SKILL.md 顶部新增「异常处理」节，要求遇到异常先读 TROUBLESHOOTING.md\n- **资源文件**更新为 8 项（含 3 模板 + TROUBLESHOOTING）\n\n---\n\n## v17 — 2026-07-18（7 项实战教训——配额/验收/去重/前移/编码/头像/引用）\n\n### 1. 搜索代理配额感知（问题 1）\n- 7 并行各 72 次 → **3 轮串行**，每轮 `min(3, floor(剩余配额/72))` 个代理\n- 官网文档优先 WebFetch（不计入搜索配额），避免\"尝试→失败→请提升配额\"空转\n\n### 2. 子代理验收标准（问题 2）\n- **仅以文件落盘为完成凭证**：`ls` + 文件大小 > 0\n- task-notification 元数据声明不可信（\"搜索 85 次\"可能实际仅 20 次）\n- 代理必须写入明确路径文件（如 `./research_result/report_XX.md`）\n\n### 3. 来源池外部化（问题 3）\n- 完整来源池写入 `./research_result/source_pool.md`\n- 撰写 agent prompt 仅传 **3-5 条专属 URL** + 引用路径，不再全文注入 50+ URL\n\n### 4. `<code>` 自检前移（问题 4）\n- **写作 agent 自检脚本增加 `<code>` 完整性检查**（开闭计数 + 块级嵌套），问题消灭在草稿内\n- assemble 阶段 scan_html.py 变为兜底验证\n\n### 5. Windows 编码兼容（问题 5）\n- `scan_html.py` 新增 `sys.stdout.reconfigure(encoding='utf-8')`（Windows 自动触发）\n- SKILL.md Phase 6.2 增加 `python -X utf8` / `PYTHONIOENCODING=utf-8` 说明\n\n### 6. 头像默认 DiceBear（问题 6）\n- Phase 4.5 默认策略改为 DiceBear SVG（零搜索成本）\n- 仅用户明确要求时才启动子 agent 搜索真实头像\n\n### 7. 报错与降级新增 3 条\n- 搜索代理集体触顶、scan_html.py Windows 编码崩溃、`<code>` 自检不通过\n\n---\n\n## v16 — 2026-07-18（三类系统性 CSS 根治：模板规范 + 去硬编码 + 自动自查）\n\n### 一、css-template.css 规范修复\n- **`<code>` 样式对齐知乎官方**：color `#191b1f`（正文色，非粉 #d63384）、background `#f8f8fa`、padding `3px 4px`、margin `0 2px`、font-family 知乎专用等宽栈（Menlo/Monaco/Consolas…）、font-size `0.9em`、word-break/line-height 规范\n- `.zh-body` → `.zh-page`（v14 已完成，本次确认彻底消除同名类混用）\n\n### 二、SKILL.md Phase 5.2 去硬编码 `<style>` 块\n- **写作代理 Prompt 新增铁律**：\"严禁内嵌 `<style>` 块——骨架已通过 css-template.css 提供全部样式\"\n- 避免 10 个章节草稿各带一套完整 `<style>` 导致 cascade 冗余和颜色冲突\n\n### 三、assemble.py 新增自动自查步骤（11 步中的第 9 步）\n在写回磁盘前运行 5 项检查，**不通过直接 `sys.exit(1)` 终止**：\n1. `:root` 中 `--zhihu-blue` 定义数（须为 1）+ `var()` 用法数\n2. 检测残留硬编码蓝系 hex（非 `:root` 行）\n3. 重复 `<style>` 块报告（\"块 X 与块 Y 相同\"）\n4. `.zh-answer__body code` 样式与模板一致性校验\n5. `.zh-body` 类名出现次数（须为 0）\n\n### 修改\n- assemble.py 步骤重新编号：…8→侧栏, **9→自查**, 10→写回, 11→统计\n- SKILL.md Phase 6.3 步骤列表从 9 步更新为 10 步\n\n---\n\n## v15 — 2026-07-18（assemble.py 新增 `<style>` 去重 + 主题蓝归一）\n\n### 新增（assemble.py 两个后处理步骤）\n- **步骤 5 — 去重 `<style>` 块**：10 个章节草稿各带卡片模板，相同模板产生完全重复的 `<style>` 块——遍历所有块，内容相同的只保留首次出现，其余移除。打印 `[去重] 移除了 N 个重复的 <style> 块`\n- **步骤 6 — 统一硬编码主题蓝**：扫描去重后的 `<style>` 块，将蓝系 hex（`#0084ff`、`#0066ff`、`#175199` 等，判定规则：蓝通道 >0x80 且 >max(R,G)×0.8）替换为 `var(--zhihu-blue)`。非蓝系（橙 `#ff7a45`、灰 `#333` 等）保留，`:root` 变量定义行不触碰。打印替换数量\n\n### 修改\n- `assemble.py` 步骤重新编号：2→2, 3→3, 4→4, **5→去重**, **6→归一**, 7→7, 8→8, 9→9, 10→10\n- SKILL.md Phase 6.3 步骤列表从 7 步更新为 9 步（含新增的两个后处理）\n- CSS 类名隔离注释精简（去重和归一已内置在 assemble.py 中，不再需要手动建议）\n\n---\n\n## v14 — 2026-07-18（回滚 v13 身份限制 + 修复 CSS 类名冲突 `zh-body`→`zh-page`）\n\n### 修改 1：回滚 v13 身份限制性语言\n- 删除 Phase 4.5 的\"核心原则（解耦）\"块\n- 恢复 Tier 1 表格为原始\"真实人物公开头像\"（去掉\"仅作视觉素材、不冒用身份\"）\n- 铁律中删除\"答主名绝不冒用真实人物身份\"\n- JSON 字段描述从\"虚构\"恢复为\"与章节领域匹配\"\n- 质量规则从\"头像与身份\"恢复为\"头像真实性\"\n- **头像三级优先级（真实图源 → DiceBear → 单字符）完全不变**\n\n### 修改 2：CSS 类名冲突修复\n- **根因**：页面级包裹层 `<div class=\"zh-body\">` 和卡片模板章节正文容器 `.zh-body` 同名，`<style>` 标签全局生效无作用域隔离，导致模板强调色通过 `.zh-body h2 { border-left: #ff7a45 }` 泄漏到所有章节\n- **修复**：`css-template.css` 中 `.zh-body` → `.zh-page`，与卡片容器彻底隔离；SKILL.md 骨架模板同步更新\n- **新增 CSS 规范**：\n  - Phase 6.3 后追加\"CSS 类名隔离与样式合并\"注意事项\n  - 章节草稿内覆盖样式建议用更具体的选��器链（如 `#ch-01 .zh-body h2`）\n  - 多个 `<style>` 块重复选择器的 cascade 覆盖风险提示\n- **质量规则新增**：CSS 类名隔离 + `<style>` 块合并去重\n\n---\n\n## v13 — 2026-07-18（解耦头像图源与答主身份——不冒用真人身份）\n\n### 修改\n- **Phase 4.5 新增「核心原则」**：头像图源和答主身份必须解耦——头像可借真实人物公开图源（GitHub CDN 等）作视觉素材，但答主名和简介必须虚构\n- **铁律新增**：\"答主名和简介绝不冒用真实人物身份\"\n- **JSON 映射示例**：`ch-03` 从 `\"name\":\"稚晖君\"` 改为 `\"name\":\"开源极客小凯\"`，保留 `avatar_remote` 标注头像出处\n- **字段调整**：新增 `avatar_source`（头像出处说明），移除 `verified_sources`（不再需要交叉印证真实人物身份，因为答主本来就是虚构的）\n- **质量规则**：`头像真实性` → `头像与身份`，增加\"答主名必须虚构\"规则\n\n### 不变\n- 头像三级优先级（真实图源 → DiceBear → 单字符）完全保留\n- 头像缓存到 `./images/` 的流程不变\n- curl 亲测可达、身份交叉印证等验证规则仍适用于**图源可靠性**（不代表答主身份）\n\n---\n\n## v12 — 2026-07-18（全部图片本地化——`./images/` 适用范围扩大）\n\n### 修改\n- **`./images/` 从「仅头像」扩展为「所有图片资源」**：截图、示意图、logo 等全部进 `./images/`\n- **目录约定**更新：`images/` 目录描述增加\"章节插图/截图/示意图/logo\"\n- **Phase 5.2 写作规范**新增一行：章节内所有 `<img>` 必须用 `./images/` 本地路径，禁止外链\n- **质量规则表**：新增「图片路径」规则——所有 `<img src>` 必须指向 `./images/`\n\n---\n\n## v11 — 2026-07-18（头像本地缓存——`./images/` 子目录）\n\n### 新增\n- **头像图片本地缓存**：通过 `curl` 验证的真实头像和 DiceBear SVG 均下载到 `./images/` 子目录\n- **新增步骤 2.5「缓存头像到本地」**：Phase 4.5 流程从四步扩展为五步\n- **目录约定新增 `./images/`**\n\n### 修改\n- **作者块 `img src` 改为本地相对路径**（`./images/ch-01.png`），避免外链失效\n- **JSON 映射表**：`avatar` 改为本地路径，真实人物保留 `avatar_remote` 供溯源\n- **权限配置**新增 Write/Bash 对 `images/*` 的授权\n\n---\n\n## v10 — 2026-07-18（工作区目录组织——`./other/` + `./research_result/`）\n\n### 新增\n- **工作区目录约定**：根目录不再散落大量中间文件，严格按两目录组织：\n  - `./other/` — 网页草稿（`_draft_*.html`）、复制脚本（`assemble.py`、`scan_html.py`）、所有中间产物（`.ps1`、`.py`、备份 `index_skeleton.html`）\n  - `./research_result/` — 搜索结果累积（`search_result.md`）、来源池清单、搜索报告\n- 阶段 0 第一步新增：`mkdir -p ./other ./research_result`\n- 最终交付的 `index.html` 仍留在根目录\n\n### 修改\n- **SKILL.md 全局路径更新**（65+ 处引用）：\n  - `./search_result.md` → `./research_result/search_result.md`\n  - `./_draft_*.html` → `./other/_draft_*.html`\n  - `./assemble.py` → `./other/assemble.py`\n  - `./scan_html.py` → `./other/scan_html.py`\n- **权限配置**（`.claude/settings.local.json`）路径同步更新\n- **`scan_html.py`**：glob 模式增加 `./other/` 优先查找 + 根目录兜底\n- **`assemble.py`**：新增 `DRAFT_DIR = \"./other\"`，`pick_file()` 优先在 `./other/` 中查找草稿\n- Phase 6.4 骨架备份改为 `./other/index_skeleton.html`\n- grep 验证命令中的路径同步更新\n\n### 同步\n- 4 个位置全部同步（SKILL.md + scan_html.py + assemble.py）\n- `.skill` ZIP 重打包（23,497 bytes）\n\n---\n\n## v9 — 2026-07-18（答主身份与头像配置——三级优先级 + 四步流程）\n\n### 新增\n- **新增阶段 4.5「答主身份与头像配置」**：夹在章节规划（阶段 4）和并行撰写（阶段 5）之间\n- **三级头像优先级**：\n  - 1 级：真实人物公开头像直链（GitHub CDN、豆瓣影人、雪球/掘金/丁香园、个人官网），身份须交叉印证\n  - 2 级：DiceBear 风格化 SVG（三种风格交替配合不同配色区分答主）\n  - 3 级：单字符兜底（前两级均不可用时）\n- **四步完整流程**：\n  1. **通道探测**：`curl` 测 GitHub CDN / DiceBear API 可达性（含代理 `-x` 支持），不同机器结果不同不预设\n  2. **身份搜索与即验**：并行子 agent 搜索真实人物，候选图链一到立刻 `curl` 亲测可达，双重印证\n  3. **注入并统一结构**：所有作者块收敛为 `zh-answer__author-avatar > img` 单模板，避免 10 个 agent 4 种变体\n  4. **Dump 最终确认**：`grep -o 'author-avatar[^<]*'` 逐行确认，不依赖跨行正则\n- **答主映射表**：4.5 产出 JSON（name / bio / avatar / tier / verified_sources），直接传给写作代理 Prompt\n\n### 修改\n- **Phase 5.2 作者块模板**：从 `<div class=\"zh-avatar\">` 单字符兜底改为统一的 `<div class=\"zh-answer__author-avatar\"><img src=...>` 结构\n- **工作流总览**：8 阶段 → 9 阶段（插入 4.5）\n- **Phase 7.1 结构校验**：新增作者块 `author-avatar` 非空 `src` 检查\n- **质量规则表**：新增「头像真实性」和「作者块统一」两条\n- **报错与降级表**：新增 3 条（头像链不可达、身份无法印证、组装后 avatar 缺失）\n- **铁律**：绝不编造图链、身份不明的真实人物宁弃用、不依赖 WebFetch 测可达\n\n### 关键设计决策\n- 头像图链 **不用 WebFetch 验证**——企业策略/网络限制下 WebFetch 常不可靠，改用 `curl`\n- 跨行 HTML 验证 **不用 `[^>]*` 正则**——换行截断误报，统一用 `grep -o` 或 Python `re.S` 上下文打印\n- JSON 映射表驱动：阶段 4.5 一次性确定所有答案主头像，写作代理只填入不编造\n\n---\n\n## v8 — 2026-07-18（组装前预扫描 + 子代理权限 + `<code>` 标签规范）\n\n### 新增\n- **`scripts/scan_html.py`**：HTML 章节草稿预扫描脚本，在 `assemble.py` 之前运行，检测 4 类 `<code>` 标签问题：\n  - A. `<code>` 开闭数量不匹配\n  - B. 块级标签（`<p>`/`<table>`/`<h3>`/`<blockquote>` 等）嵌套在 `<code>` 内\n  - C. 含中文字符的异常闭合标签（`</strong文>`、`</code。>`）\n  - D. `<code>` 与 `<strong>` 交叉嵌套\n- **子代理权限配置**：文档化 `.claude/settings.local.json` 显式授权 Write/Edit/Bash 的方案\n- Phase 5 撰写代理 prompt 新增 `<code>` 标签规范 4 条（实战最高频翻车点）\n\n### 修改\n- **Phase 6 重组**为 5 步：6.1 准备脚本 → 6.2 预扫描（新增）→ 6.3 运行 assemble.py → 6.4 幂等性说明（新增）→ 6.5 判断达标\n- Phase 7.1 结构校验：增加 `<code>` 标签快检项\n- 质量规则表新增两条：`<code>` 标签完整性 + 组装前扫描\n- 报错与降级表新增 5 条：scan_html.py 报错、字体异常排查、assemble.py 二次运行、权限被拒\n- 资源文件列表新增 `scripts/scan_html.py`\n- **排查优先级**：字体/结构异常 → 先查 `<code>` 标签完整性，不改 CSS\n\n---\n\n## v7 — 2026-07-17（存疑/争议 + 毫秒时间戳）\n\n### 修改\n- **`**存疑/争议**` 模块回归**：作为可选项写在 `**关键数据/事实**` 之后，服务于阶段 4 的「争议焦点」提取\n- **区块时间戳精确到毫秒**：从 `更新于 2026-07-17` 改为 `更新于 2026-07-17 17:31:26.123`\n  - 代码从 `datetime.date.today().isoformat()` 改为 `datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3]`\n\n---\n\n## v6 — 2026-07-17（`search_result.md` 格式对齐真实文件）\n\n### 修改\n- **`search_result.md` 格式对齐**：基于 T-WATCH-2020-learn-v2 实际生产的 2609 行文件提炼\n- **文件头**新增「目标」和「累计搜索次数」两个实时计数器（断点续跑友好）\n- **来源格式简化**：砍掉独立「来源池」区块，来源直接内联在 `**关键数据/事实**` 下\n  - 格式：`N. 标题\\n   - 来源：URL`\n- **区块标题**从 `第 N 批回传 · 方向：XXX` 改为 `[N] 方向 — 更新于 时间戳`\n  - 用累计搜索次数做序号（非代理返回顺序）\n- **写入代码增加文件头回写**：每次追加后更新「累计搜索次数」和「已覆盖子方向」\n- 阶段 1 诊断信息以 `## 学习路径问题诊断` 形式纳入文件\n- Phase 3.3 来源提取改用正则 `re.findall(r'- 来源：(https?://[^\\s\\n]+)', content)`\n\n---\n\n## v5 — 2026-07-16（`assemble.py` 注入机制修复）\n\n### 问题\n`assemble.py` 用 `replace('</main>', 内容)` 做章节注入——骨架占位注释若含 `</main>`（如 `<!-- 注入到 </main> -->`），所有章节被塞进 HTML 注释，浏览器不渲染。\n\n### 修改\n- **注入点改为独立占位标记** `<!-- ASSEMBLE -->`（不含 `</main>` 字符），脚本做一次 `replace` 替换，不再逐章往 `</main>` 前追加\n- **运行前幂等剥离旧章节**：`re.sub(r'<article[^>]*id=\"ch-\\d+\"[^>]*>.*?</article>', '', html, flags=re.S)` — 属性顺序无关，重复运行不累积\n- **锚点 id 注入改用宽松正则**：`re.sub(r'(<article[^>]*?)(>)', ...)` — 不依赖原草稿 class/id 属性顺序\n- **回答数统计改用宽松匹配**：`findall(r'<article[^>]*id=\"ch-\\d+\"[^>]*>', html)` — 避免属性顺序导致漏算\n- 缺失 `<!-- ASSEMBLE -->` 时脚本报错退出（`sys.exit(1)`），不再静默失败\n- SKILL.md Phase 2 骨架模板同步更新，`</main>` 前增加 `<!-- ASSEMBLE -->`\n\n---\n\n## v4 — 2026-07-14（`search_result.md` 协同积累机制）\n\n### 新增\n- **`search_result.md` 追加机制**：每收到一个搜索子代理回传，主流程立即将结构化报告追加写入工作区 `./search_result.md`\n  - 首次 `w` 模式创建文件头\n  - 后续 `a` 模式逐批追加，维护 `global_search_count`\n  - 序号格式 `第 N 批回传 · 方向：XXX`\n- 并发安全约定：7 代理并行启动，**写入串行执行**（代理只回传，主流程逐一追加）\n\n### 修改\n- Phase 3 搜索代理 Prompt 新增「本方向搜索次数」+「回传要求」段落\n- 原「汇总来源池」从 3.2 顺延为 3.3\n\n---\n\n## v3 — 2026-07-14（诊断先于搜索 + 去硬编码）\n\n### 修改\n- **工作流重排序**：diagnose → search → plan chapters（证据驱动，不搜完不拟标题）\n- **阶段 1「诊断问题」成为强制步骤**：拆解核心问题 → 确定 7 个搜索方向 → 拟定临时标题\n- **所有路径去掉硬编码**，改用 `os.getcwd()` 和相对描述\n- Memory 部分改用相对路径描述：「当前工作区的 `.workbuddy/memory/`」\n\n---\n\n## v2 — 2026-07-14（Skill 目录只读约定）\n\n### 新增\n- **Skill 目录只读约定**：用户通过目录路径引用时（如 `{用户目录}/zhihu-research-page`），该目录只读\n  - 所有文件创建/编辑在工作区完成\n  - `assemble.py` 从 skill 目录**复制**到工作区后再编辑 CHAPTERS\n- 增强型工作流说明：CSS 注入方式、脚本复制方式、工作区落点\n\n---\n\n## v1 — 2026-07-13（初始版本）\n\n### 新增\n- **8 阶段工作流**：收集输入 → 诊断 → 骨架 → 并行搜索(500+) → 规划章节 → 并行写章 → 组装 → 交付\n- **知乎风 CSS 模板** (`references/css-template.css`)：含知乎设计 Token、顶栏、卡片、回答、侧栏、响应式规则\n- **通用拼接脚本** (`scripts/assemble.py`)：章节注入、锚点 id、回答数更新、侧栏重建、字数核验\n- **字数口径**：有效中文 = 汉字（`\\u4e00-\\u9fff`）+ 中文标点（`\\u3000-\\u303f`、`\\uff00-\\uffef`），去 `<script>`/`<style>`/标签\n- 基于 LILYGO T-WATCH-2020 项目实战流程提炼（114,630 有效中文、242 条外链、2000+ 搜索）\n\n> 格式：Markdown 源文件，存放于工作区 `zhihu-research-page-skill/CHANGELOG.md`\n\nFile v0.1.0:examples/advanced.md\n\n# 高级用法示例\n\n## 示例 1：深度加量 200% 版本\n\n```\n/zhihu-research-page 执行200%的v2版本\n主题：各种调式的流行歌曲都有什么特点，它们各有什么代表作？\n```\n\n**输出**：\n- 自动搜索 ≥1,000 次\n- 生成 20 章节超深度网页（≥200,000 字）\n- 耗时约 200 分钟\n- 注意：token/时间预算远超常规\n\n## 示例 2：教程模式（自动启用）\n\n```\n/zhihu-research-page 执行50%版本\n主题：Python 入门指南 - 从零基础到能写爬虫\n```\n\n**输出**：\n- 自动识别\"入门指南\"关键词，启用教程模式\n- 每章含前置知识标注、动手操作步骤\n- 预期结果截图描述、常见报错及解决方案\n- 面向零基础，跟着做就能上手\n\n## 示例 3：多版本迭代\n\n```\n/zhihu-research-page 执行2%版本\n主题：机器学习入门\n\n# 检验效果后，在同一目录下继续：\n/zhihu-research-page 执行100%版本\n主题：机器学习入门\n```\n\n**输出**：\n- 2% 版本在 `v2_2pct/` 目录\n- 100% 版本在 `v3_100pct/` 目录（版本号自动递增）\n- 两版本主题相同，比例不同\n\n## 示例 4：特定领域深度研究\n\n```\n/zhihu-research-page 执行100%版本\n主题：2025年AI芯片产业格局：NVIDIA、AMD、Intel、华为昇腾、寒武纪各有什么优势？\n```\n\n**输出**：\n- 10 章节深度对比分析\n- 涵盖技术参数、市场份额、生态建设、定价策略\n- 所有数据附可点击来源链接\n- 争议点如实标注（如不同机构市场份额数据差异）\n\nFile v0.1.0:examples/basic.md\n\n# 基础用法示例\n\n## 示例 1：生成 2% 极速预览版\n\n```\n/zhihu-research-page 执行2%版本\n主题：什么是 Harness Engineering？\n```\n\n**输出**：\n- 自动搜索 ≥10 次\n- 生成 3 章节知乎风 HTML（约 2,000 字）\n- 目录：`v{N}_2pct/index.html`\n- 耗时约 2 分钟\n\n## 示例 2：生成 5% 快速验证版\n\n```\n/zhihu-research-page 执行5%版本\n主题：React Hooks 入门指南\n```\n\n**输出**：\n- 自动搜索 ≥25 次\n- 生成 3 章节（约 5,000 字）\n- 适合快速浏览内容框架\n\n## 示例 3：生成 100% 完整版\n\n```\n/zhihu-research-page 执行100%版本\n主题：国际象棋怎么学？代数记谱法、西西里、西班牙主流开局这些是什么？\n```\n\n**输出**：\n- 自动搜索 ≥500 次，7+ 搜索代理并行\n- 生成 10 章节完整深度网页（≥100,000 字）\n- 每章独立答主身份和 DiceBear 头像\n- 含侧栏导航、操作条、页脚\n- 耗时约 100 分钟\n\n## 示例 4：从当前上下文自动提炼主题\n\n```\n/zhihu-research-page 执行30%版本\n```\n\n**输出**：\n- 自动从对话历史中提取研究主题\n- 生成 3 章节中速草稿（约 30,000 字）\n- 耗时约 30 分钟\n\nFile v0.1.0:skill-card.md\n\n## Description:\n\nThis skill helps agents generate Chinese Zhihu-style research webpages by running large-scale web research, organizing cited findings, drafting multi-author sections, assembling local HTML, and validating structure and word count.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[timerate-966](https://clawhub.ai/user/timerate-966)\n\n### License/Terms of Use:\n\nMIT\n\n## Use Case:\n\nExternal users and developers use this skill to create Chinese knowledge-topic pages, learning-path tutorials, product encyclopedias, and industry research reports as local Zhihu-style HTML pages.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The workflow can be high-cost and network-heavy.\n\nMitigation: Start with a small percentage run, provide a specific topic, and review planned search terms before full execution.\n\nRisk: External searches may expose private workspace context if the topic or references include sensitive material.\n\nMitigation: Use sanitized prompts and avoid running the skill in sensitive repositories or with confidential project context.\n\nRisk: The skill may ask to expand local agent permissions.\n\nMitigation: Review any .claude/settings.local.json changes and allow only the file writes needed for the intended run.\n\nRisk: Generated HTML may contain content that should not be opened or shared without review.\n\nMitigation: Inspect generated HTML and cited sources before opening, publishing, or sharing the output.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/timerate-966/skills/zhihu-research-page-skill)\n- [Server-resolved GitHub source repository](https://github.com/timeRATE-966/zhihu-research-page-skill)\n- [Zhihu style CSS template](references/css-template.css)\n- [Troubleshooting guide](TROUBLESHOOTING.md)\n\n## Skill Output:\n\n**Output Type(s):** [Files, Markdown, Code, Shell commands, Configuration instructions, Guidance]\n\n**Output Format:** [Local HTML page with Markdown research notes, supporting assets, and validation output]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Supports scaled runs from small preview percentages to full network-heavy generation.]\n\n## Skill Version(s):\n\n0.1.0 (source: ClawHub release metadata; source skill frontmatter reports 21.0.0)\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 v0.1.0:templates/search_agent_prompt.md\n\n你是一个专业信息调研员。对以下子方向进行搜索与整理。\n\n子方向：{direction}\n搜索要求：\n- 执行至少 72 次真实 WebSearch（或配额用完前的最大值），覆盖学术论文、官方文档、行业报告、技术博客、论坛讨论、新闻资讯\n- 每次搜索用不同的关键词或针对不同角度\n- 时间范围优先最近 2 年，历史性对比数据不受限\n- 官方文档优先用 WebFetch 抓取（不计入搜索配额）\n\n输出格式（结构化报告）：\n1. 该子方向的核心发现（300~500 字）\n2. 关键数据与事实列表（每条直接附来源 URL）\n   格式：N. 标题\\n   - 来源：URL\n3. 存疑信息标注（可选）——哪些说法不一致/有争议\n4. 本方向搜索次数：明确报告实际执行的 WebSearch 次数（应 ≥72）\n\n来源直接内联在\"关键数据/事实\"下，无需单独拆\"来源池\"区块。\n\n回传要求：\n- 必须将结构化报告写入明确文件路径（如 ./research_result/report_XX.md）\n- 仅文件落盘 + 文件大小 > 0 才算完成\n- task-notification 元数据声明不可信\n\n禁止行为：\n- 编造 URL 或论文标题\n- 只搜 2-3 次就返回\n- 无来源的事实性陈述\n\nFile v0.1.0:templates/writing_agent_prompt.md\n\n{topic}\n{chapter_title}\n{chapter_points}\n{chapter_urls}\n\n./other/_draft_ch_{chapter_id}.html\n\n文件有效中文字数必须 ≥11,000。写完后运行独立验收脚本：\npython scripts/wordcount_check.py ./other/_draft_ch_{chapter_id}.html\n结果 ≥11,000 且与自述差 ≤5% 才算完成，否则扩写。\n\n只写一个 <article class=\"zh-card zh-answer\"> 片段，不要写 <html>/<head>/<body>。\n严禁内嵌 <style> 块——骨架已通过 css-template.css 提供全部样式。\n结构：作者块 + <div class=\"zh-answer__body\"> + 操作条。\n\n作者块（统一模板，头像 URL 由阶段 4.5 配置，直接填入，不自行编造）：\n见 templates/author_block.html\n\n章节内所有图片引用本地 ./images/ 路径：<img src=\"./images/xxx.png\" alt=\"说明\">。禁止外链。\n\n正文用 <h3> 大节、<h4> 小节、<p> 段落、<table> 对比表。\n<blockquote> 引用重点。文末附操作条（赞/评论/喜欢/收藏/分享）。\n\n<code> 标签规范：代码块用 <pre><code>，不单独 <code> 包裹多行。\n不与 <strong> 混用。不在 <code> 内嵌套块级标签（<p>/<table>/<h3>）。\n\n写作风格：知乎回答体，口语化、大量生活类比、少堆术语。\n目标读者：零专业基础初学者。每节先给生活类比再展开技术细节。\n\n链接规则：只用已核验来源池中的 URL 或知名官网根域名。\n严禁编造任何 URL。宁可不加链接也不要编。\n存疑信息标注\"以官方最新资料为准\"。\n\nFile v0.1.0:tests/test.md\n\n# 测试：zhihu-research-page\n\n## 测试 1：2% 极速版本\nInput: /zhihu-research-page 执行2%版本\n主题：什么是 Docker？\nExpected behavior:\n  - 自动搜索 ≥10 次\n  - 生成 3 章节 HTML，约 2,000 字\n  - HTML 含 zh-header、zh-sidebar、zh-main 结构\n  - 所有 <code> 标签开闭匹配\n  - 约 2 分钟完成\n\n## 测试 2：完整版本\nInput: /zhihu-research-page 执行100%版本\n主题：Python 装饰器原理与应用\nExpected behavior:\n  - 自动搜索 ≥500 次\n  - 生成 10 章节 HTML，每章 ≥11,000 字，总计 ≥100,000 字\n  - 每章含独立答主身份和头像（DiceBear）\n  - 侧栏导航与章节锚点一致\n  - 无编造 URL，所有链接可验证\n\n## 测试 3：教程/学习模式\nInput: /zhihu-research-page 执行30%版本\n主题：新手怎么学 Git？\nExpected behavior:\n  - 自动识别\"学习\"关键词，启用教程模式\n  - 每章含前置知识标注、操作步骤、常见报错\n  - 写作风格面向零基础读者\n\n## 测试 4：空输入处理\nInput: /zhihu-research-page\nExpected behavior:\n  - 从当前对话上下文自动提炼研究主题\n  - 不追问用户（按阶段 0 的铁律执行）\n  - 若上下文也无主题，才询问用户\n\nFile v0.1.0:TROUBLESHOOTING.md\n\n# 常见异常与处理方法 (TROUBLESHOOTING.md)\n\n> **使用规则**：遇到异常时，主流程/子代理**必须先读取本文件**查找匹配的方案。\n> 若本文件中无匹配方案，才自行分析处理。\n\n---\n\n## 1. 搜索代理配额耗尽\n**现象**：搜索代理报\"搜索配额不足\"、\"请提升配额\"\n**根因**：per-session 搜索配额主子代理共享硬限，多个代理并行时集体触顶\n**方案**：\n- 减少并发数至 `max(1, floor(剩余配额 / 72))`\n- 优先用 WebFetch 抓取官方文档（不计入搜索配额）\n- 剩余配额不足 72 时集中给 1 个代理\n\n---\n\n## 2. task-notification 元数据不实\n**现象**：代理通知\"搜索 85 次\"，但实际文件仅 20 条来源\n**根因**：task-notification 声明由代理自述，未经独立核验\n**方案**：\n- 仅以 `ls` + 文件大小 > 0 作为完成凭证\n- 忽略所有元数据声明（\"搜索 N 次\"、\"覆盖 M 个方向\"等）\n- 代理必须写入明确路径文件才算完成\n\n---\n\n## 3. `<code>` 标签导致字体异常\n**现象**：全页等宽字体、正文颜色异常、块级标签样式泄漏\n**根因**：`<code>` 开闭不匹配、`<code>` 内嵌套 `<p>`/`<table>` 等块级标签、`</code>` 写成 `</strong>`\n**方案**：\n- 运行 `python -X utf8 scripts/wordcount_check.py` 检查 `<code>` 完整性\n- 问题消灭在草稿阶段，不要在 assemble 后才修\n\n---\n\n## 4. Windows 控制台 emoji 崩溃\n**现象**：`UnicodeEncodeError: 'gbk' codec can't encode character '⚠'`\n**根因**：Python 脚本含 emoji 输出（⚠️✅❌），Windows 默认 cp936 编码\n**方案**：\n- 所有 Python 脚本调用加 `-X utf8` 标志：`python -X utf8 scripts/xxx.py`\n- 或设环境变量：`set PYTHONIOENCODING=utf-8`\n- 已内置 `sys.stdout.reconfigure(encoding='utf-8')` 的脚本不需要\n\n---\n\n## 5. assemble.py 颜色归一误伤\n**现象**：`.zh-answer__body code` 的 `background:#f8f8fa` 被替换成 `var(--zhihu-blue)`\n**根因**：`is_blue()` 阈值 `b>0x80 and b>max(r,g)*0.8` 过宽，把浅蓝灰 #f8f8fa 也识别为蓝色系\n**方案**：\n- 阈值已收紧为 `b>0xC0 and b>max(r,g)*1.2`（v18）\n- 如仍误伤，在对应 CSS 行加注释 `/* keep-hex */` 排除\n\n---\n\n## 6. autocheck 字典匹配失败\n**现象**：autocheck 报\"④ .zh-answer__body code 缺少 padding:3px 4px\"\n**根因**：CSS 压缩或格式化后 `padding:3px 4px` 可能变成 `padding:3px4px`（无空格）\n**方案**：\n- autocheck 已改用压缩格式匹配（v18），忽略空格差异\n\n---\n\n## 7. 子代理 Write/Bash 权限被拒\n**现象**：agent 报 `Permission denied` 写入 `_draft_*.html`\n**方案**：\n- 检查 `.claude/settings.local.json` 的 `permissions.allow` 中是否包含 `Write(*:other/_draft_*.html)` 和 `Bash(python *:other/_draft_*.html *)`\n- 确认 `additionalDirectories` 包含当前工作区路径\n\n---\n\n## 8. assemble.py 二次运行无效\n**现象**：重跑 assemble.py 后页面无变化\n**根因**：首次运行消费了 `<!-- ASSEMBLE -->` 标记\n**方案**：\n- 从 `./other/index_skeleton.html` 还原骨架\n- 或在运行前手动恢复标记：`sed -i 's|</main>|\\n  <!-- ASSEMBLE -->\\n</main>|' index.html`\n\n---\n\n## 9. 头像图链全不可达\n**现象**：curl 测试所有真实头像源都 timeout 或 403\n**方案**：\n- 降级到 DiceBear SVG 头像（已内置为默认策略）\n- 标注\"本轮头像因网络限制使用 DiceBear 替代\"\n\n---\n\n## 10. 章节字数 agent 自述严重失真\n**现象**：agent 自报 12,215 字，独立脚本实测仅 9,140 字（差 25%）\n**根因**：agent 把 HTML 属性内中文或数字链接计入字数\n**方案**：\n- 每章写完后必须运行 **独立** 脚本 `python scripts/wordcount_check.py <文件路径>` 验收\n- 结果 ≥11,000 且与 agent 自述差 ≤5%，否则扩写后重新验收\n\n---\n\n## 11. 来源池 token 浪费\n**现象**：每个撰写 agent 收到完整 50+ URL 来源池，8 个 agent 重复消耗 ~16K token\n**方案**：\n- 完整来源池写入 `./research_result/source_pool.md`\n- agent prompt 仅传 3-5 条专属 URL + 文件引用路径\n\n---\n\n## 12. scan_html.py 在 Windows 无响应\n**现象**：双击或直接 `python scan_html.py` 无输出或闪退\n**方案**：\n- 必须加 `-X utf8`：`python -X utf8 scripts/scan_html.py`\n- 或设 `PYTHONIOENCODING=utf-8`\n\nFile v0.1.0:.claude-plugin/marketplace.json\n\n{\n  \"name\": \"zhihu-research-page\",\n  \"version\": \"v21\",\n  \"description\": \"通过大规模联网搜索自动创建知乎风格的深度知识网页。生成 10 章节多答主模拟回答，含 ≥10 万字和 ≥500 次搜索引用。支持任意比例裁剪（1%-500%）。\",\n  \"author\": \"zhihu-research-page\",\n  \"license\": \"MIT\",\n  \"skills\": [\n    {\n      \"name\": \"zhihu-research-page\",\n      \"description\": \"通过大规模联网搜索自动创建知乎风格的深度知识网页，样式高度还原 zhihu.com。生成 10 个章节的多答主模拟回答页面，含 ≥10 万有效中文字和 ≥500 次真实搜索引用。支持手动裁剪为任意比例版本。适用于生成知识专题页、学习路径教程、产品深度百科、行业研究报告等场景。\",\n      \"path\": \".\"\n    }\n  ],\n  \"tags\": [\"content-creation\", \"research\", \"web-generation\", \"chinese\", \"knowledge-base\"],\n  \"platforms\": [\"claude-code\", \"claude-ai\"]\n}","readmeExcerpt":"Skill: 一键生成知乎高质量回答网页（可自由剪裁） Owner: timerate-966 Summary: 自动搜索并整合≥500次真实引用，生成知乎风格≥10万字多答主深度知识网页，支持任意比例裁剪版本输出。 Tags: latest:0.1.0 Version history: v0.1.0 | 2026-07-24T03:13:08.162Z | auto Version 0.1.0 — initial release of zhihu-research-page-skill: - Create high-fidelity Zhihu-style web pages with automatic, large-scale web search and multi-answer simulation. - Supports flexible output scaling (2%–100%) with detailed ","codeSnippets":[],"executableExamples":[{"language":"text","snippet":"/ zhihu-research-page 执行5%版本\n主题：什么是 Harness Engineering？\n\n/ zhihu-research-page 执行100%的v2版本\n主题：国际象棋怎么学？代数记谱法、西西里、西班牙主流开局这些是什么？\n\n/ zhihu-research-page 执行200%的v2版本\n主题：各种调式的流行歌曲都有什么特点，它们各有什么代表作？"},{"language":"text","snippet":"工作区/\n├── index.html                  # 最终 HTML 骨架（唯一留在根目录的文件）\n├── CHANGELOG.md                # 更新日志（可选）\n├── images/                     # 所有图片资源（与 HTML 同目录，相对路径引用）\n│   ├── ch-01.png               # 答主头像缓存（.png/.jpg/.svg）\n│   ├── ch-02.svg               # DiceBear 头像缓存\n│   ├── diagram-03.png          # 章节插图/截图/示意图/logo\n│   └── ...\n├── other/                      # 网页草稿、脚本、中间产物\n│   ├── _draft_*.html           # 各章节 HTML 草稿\n│   ├── assemble.py             # 从 skill 复制的拼接脚本\n│   ├── scan_html.py            # 从 skill 复制的预扫描脚本\n│   ├── *.ps1 / *.py / *.json   # 其他中间脚本和配置\n│   └── index_skeleton.html     # 骨架备份（方便二次运行还原）\n└── research_result/            # 搜索结果及中间产物\n    ├── search_result.md        # 搜索结果累积文件\n    └── *.md / *.json           # 来源池清单、搜索报告等"},{"language":"text","snippet":"[0] 收集输入 → [1] 诊断问题 → [2] 创建骨架 HTML → [3] 并行搜索(500+) → [4] 规划章节(基于搜索) → [4.5] 答主身份与头像配置 → [5] 并行写章 → [6] 组装校验 → [7] 交付"},{"language":"json","snippet":"{\n  \"permissions\": {\n    \"allow\": [\n      \"Bash(python *:other/_draft_*.html *)\",\n      \"Bash(python *:other/scan_html.py *)\",\n      \"Bash(python *:other/assemble.py *)\",\n      \"Write(*:other/_draft_*.html)\",\n      \"Write(*:index.html)\",\n      \"Write(*:other/assemble.py)\",\n      \"Write(*:images/*.png)\",\n      \"Write(*:images/*.jpg)\",\n      \"Write(*:images/*.svg)\",\n      \"Bash(curl *:images/*.png *)\",\n      \"Bash(curl *:images/*.svg *)\",\n      \"Edit(*:other/_draft_*.html)\",\n      \"Edit(*:index.html)\"\n    ]\n  }\n}"},{"language":"markdown","snippet":"# 搜索结果汇总 (search_result.md)\n\n> 本文件由主流程在每个搜索子代理回传后**自动追加**生成。\n> 记录每次回传的「已搜索次数」与「核心结果」，便于过程追溯与断点续跑。\n\n> 生成时间：{DATE}\n> 目标：累计 ≥{N} 次真实搜索\n> 累计搜索次数：{N}\n> 已覆盖子方向：{N}\n\n---\n\n## 学习路径问题诊断\n\n### 答主背景\n- 学历 / 已修课程 / 自学经验 / 欠缺 / 当前目标\n\n### 学习路径核心问题\n**核心问题**：{一句话概括}\n\n### 关键子问题\n1. ...\n2. ...\n（阶段 1 诊断产物，供下游搜索代理了解上下文）\n\n---\n\n## [{N}] {子方向名称} — 更新于 {ISO 时间戳，含毫秒}\n\n**本次搜索次数**：{N}次（WebSearch）\n\n**核心发现**：\n- 发现要点 1\n- 发现要点 2\n\n**关键数据/事实**（每条附 URL）：\n1. 数据/事实标题\n   - 来源：https://...\n2. 数据/事实标题\n   - 来源：https://...\n\n**存疑/争议**（可选，有则写）：\n- 说法 A（来源 X）与说法 B（来源 Y）不一致\n- 某数据在不同来源中有显著差异\n\n---"},{"language":"bash","snippet":"SKILL_DIR=\"<skill_dir>\"  # 如 ~/.claude/skills/zhihu-research-page\nCURRENT=$(cat ./other/.skill_version 2>/dev/null || echo \"v0\")\nLATEST=$(grep -oP 'VERSION:\\Kv\\d+' \"$SKILL_DIR/SKILL.md\" | head -1)\nif [ \"$CURRENT\" != \"$LATEST\" ]; then\n  echo \"Skill 已更新：$CURRENT → $LATEST，正在同步...\"\n  TS=$(date +%Y%m%d_%H%M%S)\n  mkdir -p ./other/_OLD/\"${TS}\"\n  # 归档旧文件（不覆盖历史记录）\n  for f in ./other/assemble.py ./other/scan_html.py ./other/wordcount_check.py; do\n    [ -f \"$f\" ] && mv \"$f\" \"./other/_OLD/${TS}/\"\n  done\n  # 复制新文件\n  cp \"$SKILL_DIR\"/scripts/assemble.py \"$SKILL_DIR\"/scripts/scan_html.py \"$SKILL_DIR\"/scripts/wordcount_check.py ./other/ 2>/dev/null\n  echo \"$LATEST\" > ./other/.skill_version\n  echo \"旧文件已归档到 ./other/_OLD/${TS}/，新文件已就位，继续执行。\"\nfi"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: zhihu-research-page\nversion: \"21.0.0\"\ntitle: \"知乎研究页生成器 — 一句话生成知乎高质量回答网页\"\nauthor: \"timeRATE-966\"\ndescription: 通过大规模联网搜索自动创建知乎风格的深度知识网页，样式高度还原 zhihu.com。生成 10 个章节的多答主模拟回答页面，含 ≥10 万有效中文字和 ≥500 次真实搜索引用。支持手动裁剪为任意比例版本（如\"执行 5% 版本\"→ ≥5 千字 / ≥25 次搜索），多次执行自动创建带版本号的独立文件夹。适用于生成知识专题页、学习路径教程、产品深度百科、行业研究报告等需要系统整理某一主题知识的场景。\n**[重要]100%版本约需 100 分钟且token消耗巨大，建议先生成 2% 版本检验效果**\ntype: \"agent\"\ncategory: \"research\"\ninvocation: \"/zhihu-research-page\"\ntags:\n  - \"research\"\n  - \"content-creation\"\n  - \"web-generation\"\n  - \"chinese\"\n  - \"knowledge-base\"\ndifficulty: \"intermediate\"\nclaude_version: \">=1.0.0\"\npermissions:\n  read:\n    - \"project files\"\n    - \"web content\"\n  write:\n    - \"project files\"\n  network: \"extensive\"\nexamples:\n  - input: \"/zhihu-research-page 执行2%版本\\n主题：什么是 Harness Engineering？\"\n    output: \"自动搜索 ≥10 次，生成 3 章节知乎风网页（约 2,000 字），约 2 分钟\"\n  - input: \"/zhihu-research-page 执行100%版本\\n主题：国际象棋怎么学？\"\n    output: \"自动搜索 ≥500 次，生成 10 章节完整深度网页（≥100,000 字），约 100 分钟\"\n---\n\n<!-- VERSION:v21 | 2026-07-21 | 教程模式+自动同步+版本头 -->\n# 一句话生成知乎高质量回答网页（可自由剪裁）\n\n## 用法示例\n\n```\n/ zhihu-research-page 执行5%版本\n主题：什么是 Harness Engineering？\n\n/ zhihu-research-page 执行100%的v2版本\n主题：国际象棋怎么学？代数记谱法、西西里、西班牙主流开局这些是什么？\n\n/ zhihu-research-page 执行200%的v2版本\n主题：各种调式的流行歌曲都有什么特点，它们各有什么代表作？\n```\n\n---\n\n## Skill 版本与更新日志\n\n当前版本：**v21**（2026-07-21）\n\n> 运行时需检查此版本号：若高于上次执行记录，则从 skill 目录重新读取最新 SKILL.md 和脚本更新工作区。\n\n更新日志（每行一句，格式 `vN [yyyy-MM-dd HH:mm:ss] 内容`）：\n- v21 [2026-07-21 22:26:31] 新增教程/学习模式（提炼答主背景、面向学习目标），自动同步检查，版本头\n- v20 [2026-07-19 07:41:47] 修复 f-string 转义、emoji 崩溃(→ASCII)、TARGET_WORDS 可配、Edit→Python 追加\n- v19 [2026-07-18 22:05:01] 新增部分执行模式(N% 版本)，任意百分比等比缩放\n- v18 [2026-07-18 21:32:27] 去硬编码重构，异常手册 TROUBLESHOOTING.md，蓝阈值收紧\n- v17 [2026-07-18 21:27:14] 搜索配额感知、子代理文件验收、来源池外化、code自检前移、Win编码兼容\n- v16 [2026-07-18 21:23:54] css-template.css code 样式对齐知乎、去硬编码style块、组装自查\n- v15 [2026-07-18 16:47:18] assemble 新增 style 去重+蓝归一\n- v14 [2026-07-18 15:37:47] zh-body→zh-page 类名隔离\n- v13 [2026-07-18 15:50:15] 头像与身份解耦(已回滚)\n- v12 [2026-07-18 15:35:44] 全图片本地化 ./images/\n- v11 [2026-07-18 15:28:56] 头像本地缓存 ./images/\n- v10 [2026-07-18 13:10:27] 目录组织 ./other/ ./research_result/\n- v9  [2026-07-18 02:19:55] 答主身份与头像三级优先级+四步流程\n- v8  [2026-07-18 00:17:07] scan_html.py 预扫描+子代理权限+code标签规范\n- v7  [2026-07-17 17:31:26] search_result.md 存疑/争议+毫秒时间戳\n- v6  [2026-07-17 17:27:14] search_result.md 格式对齐真实文件\n- v5  [2026-07-16 16:24:43] assemble 注入改为 ASSEMBLE 标记，幂等剥离\n- v4  [2026-07-14 14:30:00] search_result.md 协同积累机制\n- v3  [2026-07-14 12:00:00] 诊断先于搜索，去硬编码路径\n- v2  [2026-07-14 10:00:00] Skill 目录只读约定\n- v1  [2026-07-13 22:00:00] 初始 8 阶段工作流\n\n## 概述\n\n输入一个研究主题 → 自动产出：\n- 📄 一个知乎风格的完整 HTML 单页（含顶栏/问题头/侧栏/10 章节/页脚）\n- 🔗 每章 ≥11,000 有效中文字，全页 ≥100,000 字\n- 🔍 累计 ≥500 次真实 WebSearch（7~8 个并行搜索代理）\n- 📎 242+ 条真实可点击外链（禁止编造 URL）\n- 🧪 字数核验 + 结构校验脚本\n\n该工作流基于已验证的 LILYGO T-WATCH-2020 项目实战流程提炼而成。\n\n### 工作区目录约定\n\n为避免工作区根目录散落大量中间文件，所有产出严格按以下目录存放：\n\n```\n工作区/\n├── index.html                  # 最终 HTML 骨架（唯一留在根目录的文件）\n├── CHANGELOG.md                # 更新日志（可选）\n├── images/                     # 所有图片资源"},{"path":"README.md","content":"# 一句话生成知乎高质量回答网页（可自由剪裁）\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n[![SKILL.md](https://img.shields.io/badge/SKILL.md-v21-blue)](SKILL.md)\n\n> 通过大规模联网搜索自动创建知乎风格的深度知识网页，样式高度还原 zhihu.com。生成 10 个章节的多答主模拟回答页面，含 ≥10 万有效中文字和 ≥500 次真实搜索引用。支持手动裁剪为任意比例版本，多次执行自动创建带版本号的独立文件夹。\n\n---\n\n## 快速开始\n\n```\n# npx安装\nnpx skills add https://github.com/timeRATE-966/zhihu-research-page-skill\n```\n\n## 用例\n\n```\n/zhihu-research-page 执行2%版本\n主题：什么是 Harness Engineering？\n\n/zhihu-research-page 执行100%的v2版本\n主题：国际象棋怎么学？代数记谱法、西西里、西班牙主流开局这些是什么？\n\n/zhihu-research-page 执行200%的v2版本\n主题：各种调式的流行歌曲都有什么特点，它们各有什么代表作？\n```\n\n> ⚠️ **重要**：100% 版本约需 100 分钟且 token 消耗巨大，强烈建议先生成 2% 版本检验效果。\n\n## 核心特性\n\n| 特性                     | 说明                                                                |\n| ------------------------ | ------------------------------------------------------------------- |\n| **大规模搜索驱动** | 默认 ≥500 次真实 WebSearch，所有事实附可点击来源链接               |\n| **知乎风格还原**   | CSS 高度还原 zhihu.com 设计，含顶栏/侧栏/问题头/答主块/操作条       |\n| **10 章多答主**    | 每章独立答主身份与头像，模拟真实知乎多视角回答                      |\n| **自由剪裁**       | 支持任意 N% 版本（1% ~ 500%），等比缩减字数/搜索/章节数             |\n| **版本管理**       | 多次执行自动创建`v{N}_{pct}pct/` 独立文件夹，主题保持一致         |\n| **教程模式**       | 自动识别学习/教程类主题，提炼答主背景，写作目标面向\"跟着做就能上手\" |\n| **自动自查**       | 组装阶段自动检测`<code>` 标签、CSS 颜色泄漏、字数达标等 5 项      |\n\n## 剪裁比例参考\n\n| 比例 | 搜索次数 | 总字数    | 章节数 | 耗时      | 适用         |\n| ---- | -------- | --------- | ------ | --------- | ------------ |\n| 2%   | ≥10     | ≥2,000   | 3      | ~2 分钟   | 极速检验效果 |\n| 5%   | ≥25     | ≥5,000   | 3      | ~5 分钟   | 快速验证     |\n| 30%  | ≥150    | ≥30,000  | 3      | ~30 分钟  | 中速草稿     |\n| 100% | ≥500    | ≥100,000 | 10     | ~100 分钟 | 完整版       |\n| 200% | ≥1,000  | ≥200,000 | 20     | ~200 分钟 | 深度加量     |\n\n## 安装\n\n### npx安装\n\n```\nnpx skills add https://github.com/timeRATE-966/zhihu-research-page-skill\n```\n\n### 手动安装\n\n```bash\ngit clone https://github.com/timeRATE-966/zhihu-research-page-skill.git\ncp -r zhihu-research-page-skill ~/.claude/skills/zhihu-research-page\n```\n\n### 项目级安装\n\n```bash\ncp -r zhihu-research-page-skill .claude/skills/zhihu-research-page\n```\n\n## 文件结构\n\n```\nzhihu-research-page/\n├── SKILL.md                          # 核心 Skill 定义\n├── README.md                         # 本文件\n├── LICENSE                           # MIT\n├── TROUBLESHOOTING.md                # 12 类高频异常及处理\n├── templates/\n│   ├── writing_agent_prompt.md       # 章节撰写代理 Prompt\n│   ├── search_agent_prompt.md        # 搜索代理 Prompt\n│   └── author_block.html             # 统一答主块模板\n├── scripts/\n│   ├── assemble.py                   # 拼接与自查脚本\n│   ├── scan_html.py                  # HTML <code> 标签预扫描\n│   └── wordcount_check.py            # 独立字数核验\n└── references/\n    └── css-template.css              # 知乎风格 CSS 模板\n```\n\n## 触发词\n\n生成知乎风网页、知识专题页、深度研究网页、产品百科页、知乎风研究报告、学习路径、教程页面、怎么做、入门指南\n\n## License\n\nMIT"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn79kkasgkcqtr9ecpeyt0r1f98b50h4\",\n  \"slug\": \"zhihu-research-page-skill\",\n  \"version\": \"0.1.0\",\n  \"publishedAt\": 1784862788162\n}"},{"path":"CHANGELOG.md","content":"# zhihu-research-page Skill 更新日志\n\n---\n\n## v20 — 2026-07-19（v2_1pct 实战日志 4 项修复）\n\n### 修复 1（阻断性）：assemble.py f-string 转义引号 → SyntaxError\n- autocheck 第④项 `f'{prop}:{val.replace(\\\" \\\", \\\"\\\")}'` → 拆为 `val_compact = val.replace(' ', '')` + `f'{prop}:{val_compact}'`\n- 所有 ✓/❌ emoji 替换为 ASCII `[PASS]`/`[FAIL]`（#2 Windows GBK 崩溃）\n\n### 修复 2：Windows GBK emoji 崩溃\n- `print(\"... ✓\")` → `print(\"... [PASS]\")`，全部 37 处 emoji 替换为 ASCII\n\n### 修复 3：N% 模式误报\"还差 97801 字\"\n- `assemble.py` 新增 `TARGET_WORDS = 100000`（可配置变量）\n- 字数达标判断从硬编码 `100000` 改为 `TARGET_WORDS`\n- SKILL.md Phase 6.5 新增 N% 模式提示\n\n### 修复 4：Edit 工具含反引号匹配失败\n- SKILL.md Phase 3.2 前新增「追加策略」框：优先 Python `open(path, \"a\")`，Edit 仅用于文件头计数器\n\n### 其他\n- SKILL.md Phase 6.5 新增 Windows 运行 `PYTHONIOENCODING=utf-8` 提示\n\n---\n\n## v19 — 2026-07-18（新增「部分执行模式」—— N% 版本）\n\n### 新增\n- **Phase 0「部分执行模式」**：当用户说\"仅执行 3%/N%\"时，按等比缩放：\n  - 搜索次数 `max(15, floor(500 × N%))`、字数 `max(3000, floor(100000 × N%))`\n  - 章节数 `min(10, max(3, floor(10 × N%)))`、搜索代理 1 个、跳过头像搜索\n  - 工作目录 `v{N}_{percentage}pct/`（与上一版本同级，如 `v3_3pct/`）\n  - HTML `<title>` 和问题 `<h1>` 必须包含\"N%版本\"字样\n  - 主题、大纲结构与上一版本保持一致，仅因子量等比压缩\n\n### 同步\n- 4 个位置全部同步，`.skill` 34,049 bytes\n\n---\n\n## v18 — 2026-07-18（去硬编码重构 + 异常手册 + 蓝阈值修复）\n\n### 新增文件（5 个）\n- **`TROUBLESHOOTING.md`** — 12 类高频异常根因+修复方案（配额/通知/字体/编码/阈值/字数/权限等）\n- **`scripts/wordcount_check.py`** — 独立字数核验 + `<code>` 完整性检查脚本（每章写完后强制运行）\n- **`templates/writing_agent_prompt.md`** — 章节撰写代理 Prompt 模板（替代 SKILL.md 内嵌 ~90 行）\n- **`templates/search_agent_prompt.md`** — 搜索代理 Prompt 模板（替代 SKILL.md 内嵌 ~25 行）\n- **`templates/author_block.html`** — 统一作者块 HTML 模板\n\n### 去硬编码\n- SKILL.md Phase 3.1：搜索代理 prompt → `templates/search_agent_prompt.md`\n- SKILL.md Phase 5.2：章节撰写 prompt + Python 自检脚本 → `templates/writing_agent_prompt.md` + `scripts/wordcount_check.py`\n- SKILL.md 字数自检脚本另存为独立可调用文件\n\n### 修复（用户反馈问题 5）\n- **蓝阈值收紧**：`b > 0x80 & b > max(r,g)*0.8` → `b > 0xC0 & b > max(r,g)*1.2`，避免 `#f8f8fa` 误替换为 `var(--zhihu-blue)`\n- **autocheck 字典兼容**：`padding` 比较改用压缩格式 `cs.replace(' ', '')`，兼容 CSS 压缩后无空格写法\n\n### 新增规则\n- **TROUBLESHOOTING 优先**：SKILL.md 顶部新增「异常处理」节，要求遇到异常先读 TROUBLESHOOTING.md\n- **资源文件**更新为 8 项（含 3 模板 + TROUBLESHOOTING）\n\n---\n\n## v17 — 2026-07-18（7 项实战教训——配额/验收/去重/前移/编码/头像/引用）\n\n### 1. 搜索代理配额感知（问题 1）\n- 7 并行各 72 次 → **3 轮串行**，每轮 `min(3, floor(剩余配额/72))` 个代理\n- 官网文档优先 WebFetch（不计入搜索配额），避免\"尝试→失败→请提升配额\"空转\n\n### 2. 子代理验收标准（问题 2）\n- **仅以文件落盘为完成凭证**：`ls` + 文件大小 > 0\n- task-notification 元数据声明不可信（\"搜索 85 次\"可能实际仅 20 次）\n- 代理必须写入明确路径文件（如 `./research_result/report_XX.md`）\n\n### 3. 来源池外部化（问题 3）\n- 完整来源池写入 `./research_result/source_pool.md`\n- 撰写 agent prompt 仅传 **3-5 条专属 URL** + 引用路径，不再全文注入 50+ URL\n\n### 4. `<code>` 自检前移（问题 4）\n- **写作 agent 自检脚本增加 `<code>` 完整性检查**（开闭计数 + 块级嵌套），问题消灭在草稿内\n- assemble 阶段 scan_html.py 变为兜底验证\n\n### 5. Windows 编码兼容（问题 5）\n- `scan_html.py` 新增 `sys.stdout.reconfigure(encoding='utf-8')`（Windows 自动触发）\n- SKILL.md Phase 6.2 增加 `python -X utf8` / `PYTHONIOENCODING=utf-8` 说明\n\n### 6. 头像默认 DiceBear（问题 6）\n- Phase 4.5 默认策略改为 DiceBear SVG（零搜索成本）\n- 仅用户明确要求时才启动子 agent 搜索真实头像\n\n### 7. 报错与降级新增 3 条\n- "},{"path":"examples/advanced.md","content":"# 高级用法示例\n\n## 示例 1：深度加量 200% 版本\n\n```\n/zhihu-research-page 执行200%的v2版本\n主题：各种调式的流行歌曲都有什么特点，它们各有什么代表作？\n```\n\n**输出**：\n- 自动搜索 ≥1,000 次\n- 生成 20 章节超深度网页（≥200,000 字）\n- 耗时约 200 分钟\n- 注意：token/时间预算远超常规\n\n## 示例 2：教程模式（自动启用）\n\n```\n/zhihu-research-page 执行50%版本\n主题：Python 入门指南 - 从零基础到能写爬虫\n```\n\n**输出**：\n- 自动识别\"入门指南\"关键词，启用教程模式\n- 每章含前置知识标注、动手操作步骤\n- 预期结果截图描述、常见报错及解决方案\n- 面向零基础，跟着做就能上手\n\n## 示例 3：多版本迭代\n\n```\n/zhihu-research-page 执行2%版本\n主题：机器学习入门\n\n# 检验效果后，在同一目录下继续：\n/zhihu-research-page 执行100%版本\n主题：机器学习入门\n```\n\n**输出**：\n- 2% 版本在 `v2_2pct/` 目录\n- 100% 版本在 `v3_100pct/` 目录（版本号自动递增）\n- 两版本主题相同，比例不同\n\n## 示例 4：特定领域深度研究\n\n```\n/zhihu-research-page 执行100%版本\n主题：2025年AI芯片产业格局：NVIDIA、AMD、Intel、华为昇腾、寒武纪各有什么优势？\n```\n\n**输出**：\n- 10 章节深度对比分析\n- 涵盖技术参数、市场份额、生态建设、定价策略\n- 所有数据附可点击来源链接\n- 争议点如实标注（如不同机构市场份额数据差异）"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"自动搜索并整合≥500次真实引用，生成知乎风格≥10万字多答主深度知识网页，支持任意比例裁剪版本输出。 Skill: 一键生成知乎高质量回答网页（可自由剪裁） Owner: timerate-966 Summary: 自动搜索并整合≥500次真实引用，生成知乎风格≥10万字多答主深度知识网页，支持任意比例裁剪版本输出。 Tags: latest:0.1.0 Version history: v0.1.0 | 2026-07-24T03:13:08.162Z | auto Version 0.1.0 — initial release of zhihu-research-page-skill: - Create high-fidelity Zhihu-style web pages with automatic, large-scale web search and multi-answer simulation. - Supports flexible output scaling (2%–100%) with detailed","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":847,"uniquenessScore":54,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-09T10:17:47.663Z","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-09T10:17:47.663Z","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-10T05:22:57.325Z","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"}]}}}