diff --git a/routines/blogger/AGENT.md b/routines/blogger/AGENT.md index 7d23e8c..db5cdc8 100644 --- a/routines/blogger/AGENT.md +++ b/routines/blogger/AGENT.md @@ -41,7 +41,7 @@ hit a quota. VISION `…/strategy/vision.md`, POSITIONING `…/strategy/POSITIONING.md`; shipped slugs; queue row's volume+comp). 5. **Steal the SERP / inherit the brief (Law 1 — MANDATORY gate).** Look for the matching SEO brief at - `../claude-knowcap/knowledge/topics/research/seo/content-briefs/.md`. **If it exists, it + `../claude-knowcap/marketing/digital-employees/seo/state/content-briefs/.md`. **If it exists, it IS the SERP steal** — write TO it (it carries intent, the H2 outline that beats top-10, PAA questions, target word count, the citable-passage callouts). If NO brief exists, pull the live top-3 yourself via `serp_organic_live_advanced` (keyword's market: AR→KSA/Egypt+Arabic, EN→Egypt/UAE+English); extract the diff --git a/routines/blogger/ROUTINE.md b/routines/blogger/ROUTINE.md index e22546a..01b2f5a 100644 --- a/routines/blogger/ROUTINE.md +++ b/routines/blogger/ROUTINE.md @@ -45,7 +45,7 @@ After each shipped draft PR: `total_posts++`, `posts_this_week++`. Reset `posts_ - Arabic-demand keyword → lang=ar, dir=rtl, slug `-ar` suffix, EN hreflang pair noted - English-demand keyword → lang=en, dir=ltr 4. STEAL THE SERP (Law 1 — mandatory): - - brief exists at ../claude-knowcap/knowledge/topics/research/seo/content-briefs/.md? + - brief exists at ../claude-knowcap/marketing/digital-employees/seo/state/content-briefs/.md? → inherit it (it carries intent, the beat-top-10 H2 outline, PAA, word-count target, GEO passages) - else pull live top-3 via serp_organic_live_advanced (keyword's market) → derive structure - neither obtainable → REFUSE (no invented essays) @@ -90,7 +90,7 @@ Each run reads `cursor`, picks `personas[cursor]`, then advances `cursor = (curs 5. **Run `node routines/blogger/scripts/seo-pull.mjs`** (live SEO engine). Pulls DataForSEO Google-Ads keyword demand for MENA (KSA + Egypt + UAE) in EN + AR, expands persona seeds into real related keywords with **search volume + competition**, filters to Knowcap ICP intent, ranks by `volume × competition-weight`, dedups against shipped posts, and writes `routines/blogger/opportunity-queue.json` + a digest. **`target_keyword` = the persona's top fresh (uncovered) opportunity** from the queue **by score — EN or AR** (Arabic is in play; Law 4). Auth: DataForSEO creds in `~/.claude/secrets/blogger.md`. 6. DataForSEO volume + competition from step 5 is the demand signal. Record the chosen keyword's `search_volume` + `competition` in frontmatter. 6a. **Classify intent + pick language (Laws 2 & 4):** navigational/tool → skip the keyword, take the next; commercial → money-page mode (Law 3); informational → continue. Arabic-demand keyword → `lang: ar`, `dir: rtl`, `-ar` slug. -6b. **Steal the SERP (Law 1 — mandatory):** read the matching brief at `../claude-knowcap/knowledge/topics/research/seo/content-briefs/.md` if present (inherit its outline/PAA/word-count/GEO callouts); else pull live top-3 via `serp_organic_live_advanced` in the keyword's market. No brief + no SERP → REFUSE. +6b. **Steal the SERP (Law 1 — mandatory):** read the matching brief at `../claude-knowcap/marketing/digital-employees/seo/state/content-briefs/.md` if present (inherit its outline/PAA/word-count/GEO callouts); else pull live top-3 via `serp_organic_live_advanced` in the keyword's market. No brief + no SERP → REFUSE. 7. **Try `case-study` mode:** - Query Knowcap MCP `mcp__knowcap__list_sources` → Demo org, persona project - For each source, `mcp__knowcap__list_memories` filtered to source via `metadata.source_id`