[blogger-20260719] jadwal-aamal-ijtimaa-ar: real .docx template + post-outcomes.json hygiene - #133
Conversation
….docx This post (published 2026-07-06, PR #117) predates the 2026-07-08 STEERING rule banning inline code-fence "templates" -- it was never brought into compliance. Converts the fenced-code-block agenda template into a real downloadable RTL .docx (scripts/gen-template-docx.py --rtl), same pattern already proven on namuthaj-mahdar-ijtimaa-ar (PR #125): wires template_download_href/label frontmatter -> tracked download card (PostHog + gtag via existing template-download.tsx, no component changes needed). Targets the DOWNLOAD-intent share of "جدول أعمال اجتماع جاهز" (confirmed 20 vol/mo, DataForSEO live pull today) that prose alone can't win, per opportunity-queue.json's own seo_winners note on template intent. Self-cannibalization check run first (live DataForSEO, 2026-07-19): the AR محضر cluster is still saturated (matches the 2026-07-13 finding); the adjacent "AI meeting transcription" AR terms (تفريغ اجتماع, تلخيص اجتماع بالذكاء الاصطناعي, etc.) have zero measurable KSA search volume; "جدول أعمال اجتماع جاهز" (20/mo) and "محاور اجتماع" (50/mo) are both too thin to clear the volume gate as net-new pages. No net-new page shipped this run -- this refresh was the best-evidenced move. Does not touch namuthaj (still cooling off from its own 2026-07-13 refresh, PR #129; next re-score 2026-07-26) and does not create a competing page. Also: post-outcomes.json data hygiene (dispatched task, growth-manager run 2026-07-19) -- deduped the knowcap-vs-read-ai-otter-fireflies entry's duplicate impressions_28d/avg_pos_28d JSON keys (leftover from PR #112's refresh diff; last-value-wins already resolved to the correct post-refresh 177/10.1, this just removes the malformed duplicate-key structure that likely tripped up at least one external entry-count tool this run) and added a dated note clarifying total_nonbrand_clicks_28d: 0 is correct as of last_verified_at (not stale) -- the one confirmed win's 28d re-score isn't due until 2026-07-26. Independently re-verified: posts array length (20) already equals summary.total_posts (20); no entries are missing. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BZyPPCQ2ErMpy6aiZ8NG8F
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BZyPPCQ2ErMpy6aiZ8NG8F
|
Warning Review limit reached
Next review available in: 59 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (2)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
…inner for رسمي/جاهز long-tails (#145) * [growth-manager/blogger][blogger-20260804] strengthen namuthaj for رسمي/جاهز long-tails Two consecutive empty blogger windows were caused by the seo worker's content-brief generator mislabeling US search volume as MENA (found 2026-07-22). This run re-verifies every محضر اجتماع family candidate live via DataForSEO with explicit Saudi Arabia/Egypt/UAE location targeting before picking anything, per Hassan's 2026-07-22 STEERING direction. Real MENA numbers (location queried alongside each): - نموذج محضر اجتماع رسمي word: SA 390 / EG 170 (clears the >=100 gate) - نموذج محضر اجتماع جاهز: SA 210 / EG 110 (clears the gate) - نموذج محضر اجتماع مجلس إدارة: SA 70 / EG 70 (under gate) - نموذج محضر اجتماع لجنة: SA 70 / EG 70 (under gate) - محضر جلسة: SA 20 / EG 40 / UAE 10 (under gate) - كيفية كتابة محضر اجتماع مجلس إدارة: 10/10/10 (under gate) - نموذج محضر اجتماع حكومي: 20/10 (under gate) - محضر اجتماع قصير وسهل: 70/40 (under gate, already known saturated 07-13) - محضر لجنة تدقيق / محضر اجتماع لجنة التدقيق: no measurable volume Cannibalization check (live serp_organic_live_advanced, KSA/ar): the only two candidates that clear the volume gate are BOTH already won by namuthaj-mahdar-ijtimaa-ar -- organic page-1 for "نموذج محضر اجتماع رسمي word" (rank_absolute 7) and "نموذج محضر اجتماع جاهز" (rank_absolute 6), just behind Canva/WHO/uqu.edu.sa authority giants, not yet #1. Every other variant fails the >=100 volume gate this pipeline enforces. No net-new page shipped -- this refresh deepens the confirmed winner instead, on demand it's already partially capturing: - New H2 "الفرق بين محضر اجتماع رسمي ونموذج جاهز للتحميل" (~150 words, exact-phrase-matches both newly-verified queries). - New FAQ sweeping the مجلس إدارة/لجنة sub-100-vol variants into the hub page instead of fragmenting authority onto weak standalone pages. Verified against PR #129's actual diff this doesn't duplicate the prior refresh (which targeted احترافي/قصير وسهل, different long-tails). Flagged, not fixed (outside content lane): app/lib/blog.ts:235 extractFaqs() requires heading "FAQ"/"الأسئلة الشائعة" for FAQPage schema; both namuthaj and jadwal use "## أسئلة شائعة" (no ال) and don't match -- FAQPage JSON-LD has likely never fired on either page. Recommend /bug-creator. Codex fact-flag pass attempted, timed out after 2 min -- manually reviewed: no new statistics/factual claims added, only standard KSA board-governance process guidance (quorum, session numbering, vote record) consistent with the page's existing voice. Odoo: n/a (content refresh, no ticket -- ticket-gate exempts content-only blog PRs per existing precedent, e.g. PR #133/#117) Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * chore(blogger): record refresh_pr URL for namuthaj-mahdar-ijtimaa-ar Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
What
jadwal-aamal-ijtimaa-ar(agenda spoke, published 2026-07-06) still used an inline fenced-code-block "template" — a standing-rule violation of the 2026-07-08 STEERING decision (templates must be a real downloadable .docx, tracked via PostHog/gtag, never inline prose). Converted to a real RTL.docxviascripts/gen-template-docx.py --rtl, same proven pattern asnamuthaj-mahdar-ijtimaa-ar(PR [publish-script-template-download] fix dropped frontmatter + add namuthaj AR template #125). No component changes needed —template-download.tsxalready handles the frontmatter fields.post-outcomes.json's one entry with duplicate JSON keys (leftover from PR [blogger-refresh] expand knowcap-vs-read-ai-otter-fireflies MENA comparison #112's refresh) and added a dated clarifying note ontotal_nonbrand_clicks_28d.Why no net-new page this run
Self-cannibalization check (live DataForSEO, today):
This refresh was the best-evidenced move available. Does not touch namuthaj (cooling off from its own 07-13 refresh, next re-score 07-26) and creates no competing page.
Verify
post-outcomes.jsonre-validated:json.loadsucceeds, posts array length (20) ==summary.total_posts(20)..docxopened and spot-checked via python-docx (30 paragraphs, correct RTL Arabic content, correct headings/bullets).next build(touchesprisma db pushagainst a live DB — skipped as inappropriate for a content-only change from this worktree). Change surface is a markdown frontmatter pair already proven working on 2 live posts + a static binary asset + a JSON data file with no build-time schema — build-break risk assessed as very low.How to test
Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_01BZyPPCQ2ErMpy6aiZ8NG8F