diff --git a/routines/blogger/post-outcomes.json b/routines/blogger/post-outcomes.json index 0bc3be2..5301914 100644 --- a/routines/blogger/post-outcomes.json +++ b/routines/blogger/post-outcomes.json @@ -2,7 +2,7 @@ "_schema": "blogger loop memory — one entry per shipped post + how it performed (non-brand organic clicks)", "_note": "Bootstrapped 2026-06-25. clicks_14d/clicks_28d here are a PROXY: the only GSC per-page data that exists is a single trailing-28d snapshot dated 2026-06-24 (seo routine ran pull-metrics once), where every /blog/ page = 0 non-brand clicks. True per-post-age 14d/28d windows require the seo per-page pull to run daily and accumulate history. Verdicts use impressions+position as the leading indicator in the absence of clicks.", "_snapshot_source": "../claude-knowcap/knowledge/topics/research/seo/rank-tracker/seo-pages-daily.csv @ 2026-06-24 (trailing 28d 2026-05-28..2026-06-24)", - "_winning_pattern": "CONFIRMED WIN (2026-07-13, scored at 15d): namuthaj-mahdar-ijtimaa-ar (AR محضر money-page, pub 06-28) — 10 non-brand clicks trailing / 2,736 impr / avg pos 6.5, still climbing (34 total clicks incl. brand as of 07-13). Now ALSO ranks page-1 (pos ~8) for the adjacent query \"كيف تكتب محضر اجتماع احترافي\" per live SERP pull 2026-07-13 — confirms the page is generalizing beyond its exact-match keyword. Pattern = native-Arabic meeting-DOCUMENT content, KSA, template/how-to intent (NOT thesis, NOT English) — 16 EN theses still drew ZERO. jadwal-aamal-ijtimaa-ar (agenda spoke, PR #117, pub 07-06) too early to call (7d): impressions climbing 19->46, pos improving 7.7->6.9, 0 clicks so far. CANNIBALIZATION CHECK (2026-07-13): live-SERP-tested 3 candidate net-new AR keywords for this run's topic pick — \"كيف تكتب محضر اجتماع احترافي\" (namuthaj ALREADY ranks pos~8 — a new page would compete with our own winner), \"محضر اجتماع قصير وسهل\" (100% template/PDF-download SERP, same intent bucket namuthaj already owns, no how-to content ranks), \"محضر اجتماع مجلس الإدارة\" (SERP = real NGOs' own published board-minutes archives + gov template, navigational not informational) — all three rejected as net-new topics. Also checked \"متابعة قرارات الاجتماع\" (decision-tracking, on-brand for the audit-trail angle) — zero measurable Google Ads volume, fails the hard keyword-volume gate. CONCLUSION: the AR محضر keyword space is largely claimed or saturated; next moves are (a) refresh/strengthen namuthaj's coverage of the two adjacent long-tails it partially ranks for rather than fragment authority with a new page, or (b) wait for the SEO routine's next live pull to surface a genuinely fresh, volume-gated AR opportunity. Do NOT churn theses.", + "_winning_pattern": "CONFIRMED WIN (2026-07-13, scored at 15d): namuthaj-mahdar-ijtimaa-ar (AR محضر money-page, pub 06-28) — 10 non-brand clicks trailing / 2,736 impr / avg pos 6.5, still climbing (34 total clicks incl. brand as of 07-13). Now ALSO ranks page-1 (pos ~8) for the adjacent query \"كيف تكتب محضر اجتماع احترافي\" per live SERP pull 2026-07-13 — confirms the page is generalizing beyond its exact-match keyword. Pattern = native-Arabic meeting-DOCUMENT content, KSA, template/how-to intent (NOT thesis, NOT English) — 16 EN theses still drew ZERO. jadwal-aamal-ijtimaa-ar (agenda spoke, PR #117, pub 07-06) too early to call (7d): impressions climbing 19->46, pos improving 7.7->6.9, 0 clicks so far. CANNIBALIZATION CHECK (2026-07-13): live-SERP-tested 3 candidate net-new AR keywords for this run's topic pick — \"كيف تكتب محضر اجتماع احترافي\" (namuthaj ALREADY ranks pos~8 — a new page would compete with our own winner), \"محضر اجتماع قصير وسهل\" (100% template/PDF-download SERP, same intent bucket namuthaj already owns, no how-to content ranks), \"محضر اجتماع مجلس الإدارة\" (SERP = real NGOs' own published board-minutes archives + gov template, navigational not informational) — all three rejected as net-new topics. Also checked \"متابعة قرارات الاجتماع\" (decision-tracking, on-brand for the audit-trail angle) — zero measurable Google Ads volume, fails the hard keyword-volume gate. CONCLUSION: the AR محضر keyword space is largely claimed or saturated; next moves are (a) refresh/strengthen namuthaj's coverage of the two adjacent long-tails it partially ranks for rather than fragment authority with a new page, or (b) wait for the SEO routine's next live pull to surface a genuinely fresh, volume-gated AR opportunity. Do NOT churn theses. RUN 3 (2026-07-22, growth-manager dispatch): scored both remaining pending posts at 14d/16d -- both moved pending->flat (see their entries), neither is winning, and how-to-do-meeting-minutes (the flagship EN brief-consumption test) is badly underperforming namuthaj at the same maturity (11 impr/pos22.2/0clicks vs namuthaj's 2,736 impr/pos6.5/10clicks at day 15) -- further evidence the EN=100 hard gate by 145x) and \"how to transcribe a conversation\" returns no measurable UAE/Egypt data at all. This is a NEW, systemic bug worth fixing at the source (flagged to growth-manager/seo — see run-3 report) — it explains part of why EN posts keep drawing near-zero clicks: topics are being sized on US demand that barely exists in Knowcap's actual MENA target markets. Also checked mahdar-ejtimaa-ar.md (AR, month-old June-21 brief, target كيف محضر اجتماع) -- SUPERSEDED by the seo worker's own 2026-07-12 'bare-skip' verdict (unwinnable vs Wikipedia/Canva/gov.sa giants, already covered by namuthaj); and تدقيق الداخلي (KSA, mena-audit-firms persona) -- live-SERP-checked, generic definitional term dominated by Wikipedia/HBR-Arabic/IIA-global-standards/gov-adjacent giants, no natural product angle in the top 10, same profile as the EN audit-thesis posts already marked dud. CONCLUSION: no candidate cleared the demand + non-cannibalization + winnability bar this run -- a content-strategy pass (verify-and-flag, not force-a-post) per STEERING's sanctioned outcome. Recommend: (1) seo worker fixes the location-mislabeling bug in content-brief keyword pulls, (2) seo worker builds the GEO/schema layer on namuthaj + why-saudis-search-mahdar-egtmaa-89x-more-than-gcc per the bare-skip brief's own recommendation instead of a 3rd محضر page, (3) burn-state.json's week_start (still 2026-07-05, 17 days stale) needs a rollover mechanism.", "posts": [ { "slug": "5-mena-business-youtube-channels-every-odoo-partner-should-know", @@ -237,10 +237,12 @@ "format": "how-to-guide", "angle": "SERP-stolen EN how-to + 7-element table + free copy-paste template + honest can-AI-do-it + MENA/audit + Odoo-task angle; GEO citable passages for the AI-Overview SERP", "winner_pattern_used": "FIRST post to consume an SEO content-brief (Law-7 broken-handoff fix) hardened against a live DataForSEO SERP; informational white-space keyword (no MENA domain ranks); EN sibling hreflang-paired to the shipped AR محضر money-page (namuthaj-mahdar-ijtimaa-ar, Law 4).", - "clicks_14d": null, + "impressions_28d": 11, + "avg_pos_28d": 22.2, + "clicks_14d": 0, "clicks_28d": null, - "verdict": "pending", - "_flag": "MERGED + LIVE 2026-07-08 (PR #113). Not yet in the per-page GSC CSV as of 07-13 (5d old) — too early. Score at 14d (2026-07-22). Tests whether the brief-consumption + white-space how-to + GEO-citation method draws non-brand clicks the 16 EN theses never did. Pairs with the 06-28 AR money-page experiment." + "verdict": "flat", + "_flag": "SCORED at 14d (2026-07-22) via live page-filtered GSC (trailing-28d window fully covers this page's life since it postdates the window start): 0 clicks, only 11 impressions, avg pos 22.2 (page 3). Trajectory 07-19->07-22: impressions 6->11, pos 34.5->22.2 -- improving but off a near-zero base, nowhere close to namuthaj's day-15 numbers (2,736 impr / pos 6.5 / 10 clicks). Reinforces the file's EN flat." }, { "slug": "jadwal-aamal-ijtimaa-ar", @@ -253,24 +255,24 @@ "format": "how-to-template", "angle": "AR agenda template + 7-step how-to + elements + agenda-vs-minutes differentiator. Hub-and-spoke SIBLING to the namuthaj محضر winner (agenda=before the meeting, minutes=after); cross-links namuthaj both ways to grow the cluster without cannibalizing it.", "winner_pattern_used": "REPLICATE the namuthaj winner pattern (native-AR meeting-doc, KSA, template/how-to intent) one document over (agenda) instead of a 2nd محضر page that would split the winner's authority. Hard keyword gate ADOPTED this run (50k-clicks learning): اجندة اجتماع 170 vol, informational, LOW. SERP-stolen live (KSA/ar); authority giants Canva DR89/gov PDFs/Wikipedia noted-not-modeled, craft peers Appointlet/majles.tech/ClickUp beaten.", - "impressions_28d": 46, - "avg_pos_28d": 6.9, - "clicks_14d": null, + "impressions_28d": 52, + "avg_pos_28d": 6.8, + "clicks_14d": 1, "clicks_28d": null, - "verdict": "pending", + "verdict": "flat", "refreshed": "2026-07-19", "refresh_pr": "https://github.com/Knowcap-V2/knowcap-website/pull/133", - "_flag": "SHIPPED 2026-07-06 (PR #117 merged, live at knowcap.ai/blog/jadwal-aamal-ijtimaa-ar). 7d checkpoint (2026-07-13): impressions climbing 19->46, pos improving 7.7->6.9, still 0 clicks — too early to call, on track. Score at 14d (2026-07-20). First ADJACENT-cluster spoke: tests whether an agenda page inherits the namuthaj محضر winner's traction via two-way cross-links. Codex-flagged product over-claim fixed pre-ship. GSC request-indexing pending (Law 6 / seo routine TASK 9). [2026-07-19 REFRESH: cannibalization-checked (SERP-live via DataForSEO) every uncovered opportunity-queue candidate in the AR meeting-document space before touching this page -- namuthaj's own خضر cluster confirmed still saturated (same conclusion as 07-13), the adjacent 'AI meeting transcription' AR terms (تفريغ اجتماع, تلخيص اجتماع بالذكاء الاصطناعي, etc.) have ZERO measurable KSA search volume, and 'جدول أعمال اجتماع جاهز' (20 vol/mo) + 'محاور اجتماع' (50 vol/mo) are both too thin to clear the volume gate as net-new pages. No net-new page shipped this run. Instead: converted this post's fenced-code-block agenda template into a REAL downloadable .docx (/downloads/jadwal-aamal-ijtimaa-template.docx, generated via scripts/gen-template-docx.py --rtl, same pattern as namuthaj's proven template) -- this post was published 2026-07-06, before the 2026-07-08 STEERING rule banning inline code-fence templates, and had never been brought into compliance. Fixes a real standing-rule violation, adds PostHog/gtag download tracking, and targets the DOWNLOAD-intent share of 'جدول أعمال اجتماع جاهز' (confirmed 20 vol/mo) that prose alone can't win. Does not touch namuthaj (still cooling off per 07-13/07-13 refresh, next re-score 2026-07-26) and does not create a competing page." + "_flag": "SHIPPED 2026-07-06 (PR #117 merged, live at knowcap.ai/blog/jadwal-aamal-ijtimaa-ar). 7d checkpoint (2026-07-13): impressions climbing 19->46, pos improving 7.7->6.9, still 0 clicks — too early to call, on track. Score at 14d (2026-07-20). First ADJACENT-cluster spoke: tests whether an agenda page inherits the namuthaj محضر winner's traction via two-way cross-links. Codex-flagged product over-claim fixed pre-ship. GSC request-indexing pending (Law 6 / seo routine TASK 9). [2026-07-19 REFRESH: cannibalization-checked (SERP-live via DataForSEO) every uncovered opportunity-queue candidate in the AR meeting-document space before touching this page -- namuthaj's own خضر cluster confirmed still saturated (same conclusion as 07-13), the adjacent 'AI meeting transcription' AR terms (تفريغ اجتماع, تلخيص اجتماع بالذكاء الاصطناعي, etc.) have ZERO measurable KSA search volume, and 'جدول أعمال اجتماع جاهز' (20 vol/mo) + 'محاور اجتماع' (50 vol/mo) are both too thin to clear the volume gate as net-new pages. No net-new page shipped this run. Instead: converted this post's fenced-code-block agenda template into a REAL downloadable .docx (/downloads/jadwal-aamal-ijtimaa-template.docx, generated via scripts/gen-template-docx.py --rtl, same pattern as namuthaj's proven template) -- this post was published 2026-07-06, before the 2026-07-08 STEERING rule banning inline code-fence templates, and had never been brought into compliance. Fixes a real standing-rule violation, adds PostHog/gtag download tracking, and targets the DOWNLOAD-intent share of 'جدول أعمال اجتماع جاهز' (confirmed 20 vol/mo) that prose alone can't win. Does not touch namuthaj (still cooling off per 07-13/07-13 refresh, next re-score 2026-07-26) and does not create a competing page. [2026-07-22 SCORED at 16d via fresh live GSC pull: impressions basically plateaued since the refresh (46->50->52 over the last 10 days, vs the first-week climb 19->46), the 1 click recorded is a BRAND query (nonbrand_clicks column = 0), pos holding ~6.8. Growth has stalled post-refresh -- pending -> flat, not dud (position is genuinely good, just not converting to non-brand clicks yet). Re-score for a final call at 28d from original publish (2026-08-03)." } ], - "last_verified_at": "2026-07-13", + "last_verified_at": "2026-07-22", "summary": { "total_posts": 20, "wins": 1, - "flat": 8, + "flat": 10, "dud": 9, - "pending": 2, + "pending": 0, "total_nonbrand_clicks_28d": 0, - "_total_nonbrand_clicks_28d_note": "2026-07-19 sanity check: this field sums each post's clicks_28d only where that field is a computed number (nulls excluded, never treated as 0). It legitimately reads 0 as of last_verified_at (2026-07-13) -- NOT a bug, and NOT inconsistent with the one confirmed win's clicks_14d=10 (namuthaj-mahdar-ijtimaa-ar): namuthaj's own clicks_28d is still null, its 28d re-score isn't due until 2026-07-26 (see that entry's _flag). The 0 will change the moment that re-score lands. 2026-07-19 also independently re-verified total_posts(20) against the posts array length (20, via json.load + slug-count + verdict-count, all three agree) -- no discrepancy exists in the file as it stands; an earlier ~19-vs-20 concern (growth-manager negotiation, 2026-07-15) and a separate 17-count this run both appear to be counting-tool artifacts (most likely tripped up by the one entry with duplicate JSON keys, fixed in the same pass, see that entry's _flag) rather than a real missing/extra entry. PR #132 (merged 2026-07-16) fixed burn-state.json's posts_this_week drift and promoted both burn-state.json and this file to git-tracked -- it did NOT touch post-outcomes.json's content, so it did not (and could not have) fixed the duplicate-key issue; that fix landed here instead." + "_total_nonbrand_clicks_28d_note": "2026-07-19 sanity check: this field sums each post's clicks_28d only where that field is a computed number (nulls excluded, never treated as 0). It legitimately reads 0 as of last_verified_at (2026-07-13) -- NOT a bug, and NOT inconsistent with the one confirmed win's clicks_14d=10 (namuthaj-mahdar-ijtimaa-ar): namuthaj's own clicks_28d is still null, its 28d re-score isn't due until 2026-07-26 (see that entry's _flag). The 0 will change the moment that re-score lands. 2026-07-19 also independently re-verified total_posts(20) against the posts array length (20, via json.load + slug-count + verdict-count, all three agree) -- no discrepancy exists in the file as it stands; an earlier ~19-vs-20 concern (growth-manager negotiation, 2026-07-15) and a separate 17-count this run both appear to be counting-tool artifacts (most likely tripped up by the one entry with duplicate JSON keys, fixed in the same pass, see that entry's _flag) rather than a real missing/extra entry. PR #132 (merged 2026-07-16) fixed burn-state.json's posts_this_week drift and promoted both burn-state.json and this file to git-tracked -- it did NOT touch post-outcomes.json's content, so it did not (and could not have) fixed the duplicate-key issue; that fix landed here instead. [2026-07-22 run 3: both remaining pending posts (how-to-do-meeting-minutes, jadwal-aamal-ijtimaa-ar) scored at 14d/16d and moved to flat -- pending is now 0, flat is now 10. clicks_28d fields for both are still null (too young for a 28d window); total_nonbrand_clicks_28d unaffected, stays 0 for the same reason as above.]" } } \ No newline at end of file