6.2 KiB
6.2 KiB
BLOG-PIPELINE.md - per-article workflow for W12 & W13 (claude-blog full pipeline + kie.ai z-image)
Driven by seo-audit-2026-05-27\goals\MASTER-SEO-75.txt.
Foundation (run ONCE before any article)
/blog brand init-> BRAND.md + VOICE.md at repo root (autoloads into every subskill)./blog persona create "Equipo Odoo Expertos"-> personas/equipo-odoo-expertos.md (REPLACES every "Dr. Maria Elena Rodriguez")./blog flow sync-> FLOW framework prompts cached locally for downstream skills./blog strategy "odoo erp consulting LATAM"-> strategy doc; informs cluster + persona angles.
IMAGE GENERATION POLICY (overrides /blog image default; z-image ONLY)
Pre-flight (run ONCE in Phase 0, BEFORE any article):
powershell -File seo-audit-2026-05-27\scripts\kie-image.ps1 -Prompt "abstract data visualization, blue gradient, no text" -OutPath "seo-audit-2026-05-27\scripts\.zimage-probe.png" -Model z-image -Aspect 16:9 -Resolution 1K
If this FAILS, abort the goal with status "z-image unavailable on this kie.ai account — fix model access before proceeding". NO fallback to other models.
Per article: generate >=3 images via z-image only.
- Hero/OG (16:9, 2K) ->
images/<slug>-hero.png - Inline mid-body (16:9 or 4:3, 1K) ->
images/<slug>-fig1.png - Inline end (16:9 or 4:3, 1K) ->
images/<slug>-fig2.png
Prompt rules (HARD):
- Every prompt MUST end with: ", NO text, NO letters, NO numbers, NO logos, NO watermarks."
- Editorial illustration aesthetic, neutral palette, clean enterprise feel, no stock-photo cliches.
- Distinct subject per image (hero = topic metaphor; fig1 = mechanism/architecture motif; fig2 = outcome/comparison motif).
Insertion:
- Set
<meta property="og:image" content="https://www.odoo-expertos.com/images/<slug>-hero.png">and add<link rel="preload" as="image" href="/images/<slug>-hero.png">in <head>. - Place fig1 after the 2nd H2, fig2 after the 4th H2. Both
<img>tags need uniquealt=""descriptions derived from the surrounding H2 + body. - Add ImageObject schema for the hero (and fig1/fig2 if relevant) inside the Article JSON-LD.
Helper: powershell -File seo-audit-2026-05-27\scripts\kie-image.ps1 -Prompt "<prompt>" -OutPath "images/<slug>-<role>.png" -Model z-image -Aspect 16:9 -Resolution 2K
Per-article (run for EVERY URL in OPPORTUNITIES sec 1 and sec 2)
For each article slug like odoo-hosting/odoo-vs-sap-hosting-2026/index.html:
- Research -
/blog discourse "<topic phrase>"-> DISCOURSE.md with last-30-days sources, debates, gaps. If a Google AI / NotebookLM key is configured, also/blog notebooklm "<question>". - Flow framing -
/blog flow find "<topic phrase>"-> pick the strongest FLOW prompt for this article./blog flow optimizeto refine. - Brief -
/blog brief "<topic phrase>"-> audience, intent, angle, key entities, SERP context. - Outline -
/blog outline "<topic phrase>"-> SERP-informed H2/H3 skeleton. - Rewrite -
/blog rewrite <relative-path>using BRAND.md + VOICE.md + persona + FLOW + blog-rewrite humanized cadence. HARD CONSTRAINTS to state in the rewrite request:- Preserve <head> EXCEPT add ONE marker (W12-deep-rewrite or W13-ai-search) + the og:image/preload set by step 8.
- Preserve hreflang, canonical, OG, header/footer/nav, breadcrumb (W6), ALL D3.js <script> refs.
- Replace every "Maria Elena Rodriguez" with "Equipo Odoo Expertos" (visible byline + Article schema author + Person @id).
- W12: >=1,200 unique body words, direct-answer 60-150w opening, 4-6 question-led H2s.
- W13: deepen with 8+ FAQ Q&A, HTML comparison , per-claim source URLs.
- Fact-check -
/blog factcheck <path>-> the skill actively fetches and verifies source URLs. Must show 0 unverified numeric claims. On FAIL: drop the number or add a source via/blog discourse, re-run. - SEO check -
/blog seo-check <path>-> title length, meta, schema validity, internal links, image alts. Must pass. - Image - generate hero/OG image via the helper above; update og:image and add the preload link. Add
alt="..."to any new.
- Schema -
/blog schema <path>-> regenerate Article + FAQPage JSON-LD reflecting actual H2 questions; ImageObject for the new hero image. - GEO gate -
/blog geo <path>-> AI-citation readiness audit. Must show direct-answer-first opening, question-led H2s, FAQ schema present, sourced stats. Address top findings if any. - Quality gate -
/blog analyze <path>-> 0-100 score. Must be >=80. If <80, address top 3 Critical/High findings and re-run. - Commit -
git add <path> images/<slug>-hero.png; git commit -m "fix(<W#>): rewrite <slug> via blog pipeline (analyze=<score>, geo=<score>)". - If
/blog analyzestays <80 after 3 retries OR/blog geostays FAIL after 3 retries -> log slug + lowest categories to seo-audit-2026-05-27\BLOG-FAILURES.md and skip. Do not block the master. - If
/blog factcheckcannot source a claim after 2 retries -> remove the unsourced claim. NEVER fabricate. /blog cluster plan "<seed>"(if not already done in master Phase 2)./blog cluster execute "<seed>"-> applies internal pillar<->spoke links./blog taxonomy sync-> aligns tag/category slugs to the cluster plan./blog cannibalization .-> re-sweep. Resolve any 301 flags (e.g., the 2025/2026 mejores-proveedores collision per OPPORTUNITIES sec 5)./blog locale-audit .-> hreflang/parity/freshness across the 6 languages. Pages noindexed by W7 are expected to show parity gaps; that is fine./blog google psi https://www.odoo-expertos.com/-> CWV lab./blog google crux https://www.odoo-expertos.com/-> CWV field (if available)./blog google gsc submit-> resubmit each sitemap; "Validate Fix" on coverage issues if the skill supports./blog google ga4-> baseline organic traffic (only if creds configured)./blog audit .-> post-deploy site health. Target: 0 Critical./blog calendar-> generate forward editorial plan for the surviving thin pages so iteration is structured./blog repurpose <pillar-path>-> extend Cluster A/B/C pillars to social/email snippets (non-gating output).
Stop conditions per article
After all articles in a cluster
After all clusters
Post-deploy (after main is live on Vercel)