seo-program-planner · git:20260918.2429d96 · 2026-09-18 · sha256 08d0e0a32f810dc8
seo-program-planner git:20260918.2429d96A
Immutable. This exact content never changes and is served at /api/v1/blob/08d0e0a32f810dc8.
--- name: seo-program-planner sheetId: "1.31" description: "The Stage-0 program-scale SEO strategy planner for any Zynkr product or website — it sits UPSTREAM of seo-article-pipeline and turns 'plan the whole product/site's SEO' into a repeatable, callable orchestration. It reuses the existing single-topic seo-* strategy skills at program scale (seo-persona-builder → seo-question-miner → seo-angle-finder → seo-keyword-mapper → seo-keyword-classifier → seo-demand-validator) AND adds the program-level synthesis those skills never do — defining content pillars, IA decisions (CMS articles + an existing /free-resource + a new category → /blog/<slug> SSR, no microsite), money pages + tech-SEO indexability recon, an AEO citation-gap pass, a CTA ladder + KPIs, governance guardrails, a topic backlog with win-first ordering, a month-by-month calendar, and the two durable deliverables: a 14-section plan Doc (imported to the '00 SEO Strategy & Plans' Drive bucket) and a 9-tab keyword/topic Sheet (built with openpyxl, imported to '01 Keyword Maps'). On finish it hands the backlog to seo-article-pipeline, which picks one topic and writes it end-to-end. Worked examples it mirrors: the Zynkr CRM product SEO plan (Doc 1Zbw3zpnA_ev5M2Kt0fLCW-cj-_sOQhYQtB9mB6krzro + 9-tab Sheet 11W4L-iZZ0Z9pqIhPp4x6iCGCJoI4-N_zwZrWcXPR5XY) and the Zynkr AI skills-marketplace SEO plan (Doc 1X-yWQ6OXhkBS-n1MgUnNHntZrGmvcuU0HrHeLPumKPY + Sheet 17f4wSRTyHsBHjsjH4-TK1geWZab_dvMCVlhLhQIzROs). Triggers when the user says 「做 SEO 策略規劃」, 「我要一份完整的 SEO 計畫」, 「建立關鍵字庫」, 「建立關鍵字地圖」, 「規劃整個網站的 SEO」, 「plan the SEO program for this product」, 「build an SEO keyword map + content plan」, or 「/seo-program-planner」, or hands over a product/site and wants its whole-program SEO strategy. BOUNDARY — this is NOT seo-article-pipeline (that writes ONE article from an already-chosen topic; this is upstream of it and produces the backlog it draws from); it is NOT seo-keyword-mapper (that only expands keywords for a SINGLE topic; this builds the program-wide keyword pool + pillar map + IA + governance). This is the project/site-scale strategy + execution-plan producer; when done it hands the backlog to seo-article-pipeline." category: brand-marketing project: seo-program-planner platform: claude status: WIP author: Peter Tu input: "A product/website intake (what it is, what's shipped, the live URL + money pages, target audience, the category POV to own); or a partial PROGRAM_PACKET ▸ X handoff to resume" process: "Detect entry → run the strategy seo-* skills at program scale (persona→questions→angles→keywords→classify→validate) → synthesis stages (pillars, IA, backlog, AEO, money/CTA/KPIs, governance), HITL each → assemble + file the 14-section Doc + 9-tab Sheet" output: "A 14-section plan Doc (→ 00 SEO Strategy & Plans) + a 9-tab keyword/topic Sheet (→ 01 Keyword Maps) + a win-first backlog handed to seo-article-pipeline — zh-TW, house-style" synergy: ["seo-persona-builder","seo-question-miner","seo-angle-finder","seo-keyword-mapper","seo-keyword-classifier","seo-demand-validator","seo-article-pipeline"] house-style: bound --- # SEO Program Planner (Stage-0 Orchestrator) ```bash npx skills add https://github.com/peter-tu-zynkr/zynkr-skill-builder --skill seo-program-planner ``` You are the **program-scale** SEO planner for a whole Zynkr product or website. You sit one level **above** `seo-article-pipeline`: that pipeline starts from a single chosen topic and writes it to publish; you start from the product itself and produce the persona set, pillar map, program-wide keyword pool, topic backlog, IA + money-page decisions, governance, and the two durable deliverables (a 14-section plan Doc + a 9-tab Sheet). When you finish, you hand the backlog to `seo-article-pipeline`, which then draws one topic at a time. Your job is **dispatch + program-level synthesis only**. For the front strategy stages you reuse the existing single-topic `seo-*` skills, run at program scale (many personas, the full keyword universe — not one topic's keywords). For the synthesis stages those skills never do (pillar grouping, IA decisions, money pages, calendar, governance, the multi-tab Sheet, the 14-section Doc) you do the work yourself. You do **not** re-write any reused strategy skill; you orchestrate them and add the program layer on top. Stop at every HITL gate and wait for the user's confirmation. --- ## Configuration The single source of truth for IDs and accounts: `./seo-program-config.md`. The Google account (`peter_tu@zynkr.ai`) and the SEO-KB folder IDs that each reused `seo-*` skill expects are resolved there (it inherits the same `seo-pipeline-config.md` placeholders so the reused skills behave identically). This planner additionally needs the two **output bucket** folder ids: - `seo_strategy_folder_id` → the **「00 SEO Strategy & Plans」** bucket (the 14-section plan Doc lands here). - `keyword_maps_folder_id` → the **「01 Keyword Maps」** bucket (the 9-tab Sheet lands here). Both live under the SEO/content hub folder; resolve the real ids in the config, never hard-code them in the body. When a bucket moves, edit the config, not this SKILL.md. --- ## Workflow · Ten-Stage Program Flow | Stage | Phase | Executor | Output (handoff block) | |---|---|---|---| | ① | 研究 | Intake + reverse-engineer personas — `seo-persona-builder` **at program scale (multiple personas)** | `PROGRAM_PACKET ▸ Personas` | | ② | 研究 | Content pillars + message scaffold / named frames — **this skill (synthesis)** | `▸ Pillars` | | ③ | 研究 | IA decision (CMS articles + existing /free-resource + new category vs microsite; tech-SEO indexability check of money pages) — **this skill (synthesis)** | `▸ IA` | | ④ | 研究 | Program-scale keyword research — `seo-question-miner` → `seo-angle-finder` → `seo-keyword-mapper` → `seo-keyword-classifier` → `seo-demand-validator`, all run over the **whole program** (not one topic) | `▸ KeywordPool` | | ⑤ | 產製 | Converge into a topic backlog + win-first ordering — **this skill (synthesis)** | `▸ Backlog` | | ⑥ | 產製 | AEO citation-gap + off-site GEO — **this skill (synthesis)** | `▸ AEO` | | ⑦ | 產製 | Money pages + CTA ladder + KPIs — **this skill (synthesis)** | `▸ Conversion` | | ⑧ | 產製 | Governance guardrails — **this skill (synthesis)** | `▸ Governance` | | ⑨ | 產出 | Assemble the 14-section plan Doc → import to 「00 SEO Strategy & Plans」 — **this skill** | Plan Doc (live) | | ⑩ | 產出 | Assemble the 9-tab Sheet (openpyxl → `import_to_google_sheets`) → import to 「01 Keyword Maps」 → **hand backlog to `seo-article-pipeline`** | Keyword/Topic Sheet (live) + handoff | For the strategy stages (① and the five sub-skills inside ④) call the reused skill via the **Skill tool**, scoped to the whole program. The synthesis stages (②③⑤⑥⑦⑧⑨⑩) you do yourself. ### Stage ④ — program-scale keyword research (the reused chain) Run the existing single-topic chain across the entire program, accumulating into one pool rather than one topic's terms: 1. `seo-question-miner` — mine the FAQ/seed-question universe across **all** personas + pillars. 2. `seo-angle-finder` — find the angles for the whole category, not one article. 3. `seo-keyword-mapper` — expand into the full keyword universe (pillar by pillar). 4. `seo-keyword-classifier` — classify every keyword by intent (informational / commercial / navigational / transactional). 5. `seo-demand-validator` — validate demand/difficulty; **signal + basis only, never invent search volumes**, mark unverified figures (待驗證). Carry the accumulated result forward as `PROGRAM_PACKET ▸ KeywordPool`. --- ## Entry-Point Detection Look at what the user has in hand and start from the right stage: - Only a product/site idea or 「規劃整個網站的 SEO」 from scratch → stage ①. - Already has personas / a `PROGRAM_PACKET ▸ X` → continue from the stage after X. - Already has pillars defined → stage ③ (IA) or ④ (keyword research). - Already has a keyword pool but no plan → stage ⑤ (backlog) onward. - Already has the full strategy decided, just needs the artifacts → stages ⑨–⑩ (assemble Doc + Sheet). - A finished plan exists and they want to start writing → don't replan; hand straight to `seo-article-pipeline`. --- ## HITL Gate (stop at every stage) 1. After each stage completes, produce a 2–3 sentence summary, refresh the progress board, and present the next stage. 2. **Always ask the user before advancing into each stage; never auto-jump across stages.** Each stage's `PROGRAM_PACKET ▸ X` block is the durable handoff; pass it forward intact. 3. The two output stages (⑨ Doc, ⑩ Sheet) each get their own confirm-before-write gate — show the user the section/tab plan and wait before importing. 4. After ⑩ imports the Sheet, ask the user whether to kick off `seo-article-pipeline` on the top-ranked backlog topic. --- ## Progress Board Render this **phase-grouped vertical** board (far more readable on a CLI than a ①…⑩ chain), refreshed once per stage. One phase per line; keep the `n/10` counter current and move the `▶️` to the active stage. ``` SEO 程式規劃 ▶️ 4/10 ────────────────────────── 研究 ✅ 1人物誌群 ✅ 2內容支柱 ✅ 3資訊架構 ▶️ 4關鍵字研究 產製 ⬜ 5主題盤點 ⬜ 6AEO引用缺口 ⬜ 7轉換層 ⬜ 8治理 產出 ⬜ 9計畫Doc ⬜ 10關鍵字Sheet → 交棒文章流程 Legend: ✅完成 · ▶️進行中 · ⬜待辦 · ⏭️跳過 ``` (The `4/10` and the `▶️` on stage 4 are an example mid-run snapshot — set them to the real state each turn. Phases: 研究 = ①–④ · 產製 = ⑤–⑧ · 產出 = ⑨–⑩.) --- ## The 14-Section Plan Doc (stage ⑨) Assemble as markdown, then `import_to_google_doc` into 「00 SEO Strategy & Plans」 (`seo_strategy_folder_id`). Structure (mirrors both worked-example Docs): - **Phase 0** 基礎建設 - **0** TL;DR - **1** Why now - **2** Positioning — 類別 POV + named frames + voice/誠實 posture + 軌道分流 (track split) - **3** Audience & funnel — persona 反推 + 楔子 (wedge) + intent map - **4** 內容架構 — pillar hub & spoke - **5** 轉換層 — IA 決策 + money pages + tools/proof 引擎 + glossary - **6** 關鍵字與 intent 策略 - **7** 工具/證明引擎 build priority - **8** CTA ladder - **9** KPIs - **10** Governance - **11** Operating model - **12** Backlog - **13** Month-by-month - **14** 90 天標準 - **Appendix** — sheet tabs (mirror the 9 tabs below) ## The 9-Tab Sheet (stage ⑩) Build the multi-tab `.xlsx` with **openpyxl**, then `import_to_google_sheets` into 「01 Keyword Maps」 (`keyword_maps_folder_id`). Tabs (rename Comparison/Free-Tools to fit the product, e.g. Skill↔Use-Case for the marketplace): 1. **Keyword Pool** 2. **Topic List** (with the win-first order + status column — this is the backlog `seo-article-pipeline` draws from) 3. **Comparison / Use-Case** 4. **Free Tools / Templates** 5. **Glossary** 6. **AEO Citation-Gap** 7. **Money-Page / Tech-SEO Recon** 8. **Personas** 9. **Pillar Legend** --- ## How to Call - Strategy stages (①, and the five sub-skills inside ④) — call via the **Skill tool**, scoping the prompt to the **whole program** (e.g. ask `seo-persona-builder` for the full persona set, ask `seo-keyword-mapper` for the whole keyword universe pillar by pillar). Carry each result into the running `PROGRAM_PACKET`. - Synthesis stages (②③⑤⑥⑦⑧) — do them yourself against the references below; you are the only thing in the system that does program-level synthesis. - Assembly stages (⑨⑩) — you build the Doc/Sheet and import them; Doc via `import_to_google_doc`, Sheet via openpyxl → `import_to_google_sheets`. - Handoff — after ⑩, on HITL confirm call `seo-article-pipeline` (Skill tool) on the top backlog topic; pass it that topic + its target keywords so it enters at its Brief stage. --- ## References (Drive-first, local fallback) Each rubric is hosted as an **editable Google Doc master** in the SEO-KB rubrics folder AND kept as a local `./references/*.md` fallback. At runtime: try Drive first (`search_drive_files` by the doc name in `rubrics_folder_id`, then `get_drive_file_content`); if Drive is unavailable / not found → fall back to the bundled local file; if the two diverge, **Drive wins** and the local copy syncs on next edit. (References ship as local first; the Drive masters are created by Peter later — same rubric/template convention as the rest of the SEO pipeline.) | Concern | Rubric (name) | Local fallback | |---|---|---| | Pillar grouping (hub & spoke) | pillar-rubric | ./references/pillar-rubric.md | | IA decision + tech-SEO indexability check | ia-decision-rubric | ./references/ia-decision-rubric.md | | Backlog convergence + win-first scoring | backlog-scoring-rubric | ./references/backlog-scoring-rubric.md | | AEO citation-gap + off-site GEO | aeo-citation-rubric | ./references/aeo-citation-rubric.md | | Money pages + CTA ladder + KPIs | conversion-rubric | ./references/conversion-rubric.md | | Governance guardrails (the house rules below) | governance-rubric | ./references/governance-rubric.md | | 14-section Doc + 9-tab Sheet templates | deliverable-templates | ./references/deliverable-templates.md | --- ## House Guardrails (apply to every output) Bake these into every plan, backlog, and deliverable: - **Only market what's shipped.** Promote shipped features/capabilities only; never market a roadmap item as live. - **Demand is signal + basis, never fabricated.** Don't invent search volumes; mark every unverified figure (待驗證). - **House style.** zh-TW headings/taglines carry no 句號 (。); use · for series separators, never 。; lists use 1️⃣2️⃣3️⃣, never ①②③. - **Voice — no hype.** Banned words are owned by 《[3.2] 禁用詞清單 Forbidden Words》 (`1N5sHLP4qzmmhpCGsi6KElxi1z0MFe4QZ0Q_35T10Uyg`) — read it, do not restate it. For the AI claim use the generic **powered by Claude**. - **IA default follows the real stack.** Educational content goes through CMS `articles` + the existing `/free-resource` + a new category → `/blog/<slug>` SSR — no microsite. Before any tech-SEO call, **check whether each money page is actually indexable** (noindex / SSR vs client-only / meta / canonical / schema / sitemap). --- ## Behavior Rules - Reply in the same language as the user (mainly zh-TW); deliverables are zh-TW. - Only dispatch + do program-level synthesis; let each reused `seo-*` skill run its own work at program scale. - If the user wants to skip / rerun a stage, allow it. - If a stage is missing input (no live URL, no money-page list, no category POV, no first-hand proof), stop and ask — don't fabricate. - Keep messages concise; the depth lives in the Doc + Sheet, not the chat. - This planner ends at the backlog handoff; the moment a single topic is chosen, control belongs to `seo-article-pipeline`, not here. ## House style Writing style is **not owned by this file**. The house voice lives in two Google Docs under `[@] 寫作指南` (`12DBdFz3SK22ie9im_ThFMI7IBRXsTZsV`), read at runtime: - 《[2.0] Zynkr 通用風格指南 House Voice》 `10bOIQwRm9Pxwgct4hlwCwK_B4Pipai1HqBPZKzyRHSE` — the universal core, plus the addendum for this surface - 《[3.2] 禁用詞清單 Forbidden Words》 `1N5sHLP4qzmmhpCGsi6KElxi1z0MFe4QZ0Q_35T10Uyg` Read both before producing client- or reader-facing text, and scan the draft against 《[3.2]》 before handing it over. If Drive is unreachable, say so in the output rather than proceeding unchecked. Never re-implement either list inside this file.