Blog SEO Optimizer (2026-06-13)
tl;dr: none high-priority"*. I need to state that
DRY RUN — no posts were modified. The changes below are what the next live run would apply.
changes proposed this run
- /blog/ai-workflows-vs-autonomous-agents-for-agencies: linked → /blog/workflows-vs-roles, /blog/the-autonomous-business-trap, /blog/multi-agent-orchestration-how-agencies-ship-client-work-without-the-coordination
- /blog/multi-agent-orchestration-how-agencies-ship-client-work-without-the-coordination: linked → /blog/future-b2b-agency-structure; updated model names (Claude 3.5 Sonnet)
- /blog/the-autonomous-business-trap: linked → /blog/workflows-vs-roles, /blog/future-b2b-agency-structure; updated stale-year framing
- /blog/how-agency-founders-build-a-pre-call-prep-workflow-to-reclaim-discovery-prep-tim: linked → /blog/workflows-vs-roles; updated stale-year framing
- /blog/workflows-vs-roles: linked → /blog/future-b2b-agency-structure
2 edit(s) were held back by the safety guard (the model tried to change more than the surgical scope). Left untouched: /blog/3-real-ai-agent-examples-to-protect-agency-revenue-per-employee, /blog/measure-ai-roi-for-your-agency-ignore-the-dashboard-theater.
keyword cannibalization
No competing clusters detected across the 14 posts.
hub-and-spoke map
No pillars derived.
recommendations (your queue — not auto-applied)
- ⚪ slug: /blog/3-real-ai-agent-examples-to-protect-agency-revenue-per-employee: slug is long (63 chars). Consider a shorter slug + a 301 redirect from the old URL.
- ⚪ meta: /blog/3-real-ai-agent-examples-to-protect-agency-revenue-per-employee: meta description is 0 chars (want 140-160).
- ⚪ slug: /blog/multi-agent-orchestration-how-agencies-ship-client-work-without-the-coordination: slug is long (80 chars). Consider a shorter slug + a 301 redirect from the old URL.
- ⚪ meta: /blog/multi-agent-orchestration-how-agencies-ship-client-work-without-the-coordination: meta description is 172 chars (want 140-160).
- ⚪ slug: /blog/how-agency-founders-build-a-pre-call-prep-workflow-to-reclaim-discovery-prep-tim: slug is long (80 chars) and looks truncated. Consider a shorter slug + a 301 redirect from the old URL.
- ⚪ static-post: /blog/60-ways-ai-chief-of-staff/ is a static file (site/blog/), so the optimizer cannot edit it. When you next touch it, add internal links to the newer D1 posts in its pillar and confirm canonical + schema.
- ⚪ static-post: /blog/ai-use-cases/ is a static file (site/blog/), so the optimizer cannot edit it. When you next touch it, add internal links to the newer D1 posts in its pillar and confirm canonical + schema.
- ⚪ static-post: /blog/ai-sdr-vs-human-sdr/ is a static file (site/blog/), so the optimizer cannot edit it. When you next touch it, add internal links to the newer D1 posts in its pillar and confirm canonical + schema.
- ⚪ static-post: /blog/claude-code-vs-claude-desktop/ is a static file (site/blog/), so the optimizer cannot edit it. When you next touch it, add internal links to the newer D1 posts in its pillar and confirm canonical + schema.
- ⚪ static-post: /blog/solo-operator-two-terminals/ is a static file (site/blog/), so the optimizer cannot edit it. When you next touch it, add internal links to the newer D1 posts in its pillar and confirm canonical + schema.
site SEO audit
- ℹ️ sitemap: sitemap.xml lists 20 URLs.
- ℹ️ core-web-vitals: Core Web Vitals (LCP/CLS/INP) are not measured in v1 — wire the PageSpeed Insights API to capture them.