Agency OS Skill Library

SEO and GEO Optimised Blog Posts

Writes one blog post with mandatory keyword research, competitor analysis, schema markup, image prompts and a quality score.

Content First result: 1 to 2 hours, including a pause while you approve the keyword blog-writer
Back to all skills

What it does

Produces one publish-ready blog post optimised for two audiences at once: Google Search and AI search engines. You get the full article plus the SEO metadata around it: URL slug, title tag, meta description, 2 to 3 headline alternatives, a full H1 to H4 hierarchy, an FAQ section, JSON-LD schema for Article and FAQ, hero and section image prompts, and internal link suggestions. Keyword research runs first and is never skipped, even when you supply the keyword yourself. The draft is then rewritten in full before you see it.

Say this to start

This skill has no button. You start it by saying what you want. Any of these will do it:

/write-blog
> write blog
> blog post
> SEO article
> write the blog from my content plan, topic 3

When to reach for it

When NOT to use it

If you actually wantUse this instead
keyword or SERP research on its own with no article attachedkeyword-research
hundreds of template-driven pages generated from a data setprogrammatic-seo
the editorial calendar and channel plan the posts sit insidecontent-system-architect
cutting a finished post down into social posts and captionscontent-repurposer
short-form persuasion assets such as ads, emails or sales pageslegendary-copywriters

Before you start

What you needWhy
A topic, a broad idea, a keyword, or a reference to a line in your content planphase 1 accepts any of these, but it will not start with nothingRequired
Brand context from Build 1 (Brand DNA), or the answers by handwithout a workspace it asks for business name, website, target audience, brand voice and credentials before writing, and E-E-A-T signals come from those credentialsRequired
You available at the keyword stepphase 2 presents a scored keyword table and stops. It waits for you to pick the target keyword before it writes anythingRequired
A DataForSEO MCP connectionthis is the live source for search volume, keyword difficulty, intent classification and SERP data. Without it the delegated keyword-research skill drops to its manual workflow (Google Autocomplete, People Also Ask, manual SERP inspection, Search Console if you have it) and every volume and difficulty figure comes back tagged [ESTIMATED]. The post still gets written, but you are choosing a keyword on estimates rather than dataOptional
Live web search or a Perplexity connectionphase 3 analyses the top 5 ranking articles for gaps and outdated claims, and the post needs one sourced statistic per 150 to 200 words. Without live search that competitor pass and the sourcing both degrade, and more claims land as [UNVERIFIED]Optional
verified-claims.md with consent-tagged proofyour own results, testimonials and client numbers only make it into the post if they are registered with consent; otherwise they are genericised or flaggedOptional
A GoHighLevel MCP connectiononly needed if you want it to publish straight to a GHL blog. Otherwise it saves local files and you pasteOptional

How it runs

  1. Phase 1: topic inputYou give it a topic, a rough idea, a keyword you want to target, or a pointer into your content plan. Any form works. If you supply a keyword it still runs the research, because the data either validates your choice or improves it.
  2. Phase 2: keyword researchHands off to the keyword-research skill in opportunity scoring mode, asking for volume, difficulty, intent and SERP features. It comes back with a table of the primary keyword and related terms, each with a target, alternative or skip recommendation, plus 3 to 5 supporting LSI keywords. This phase is non-negotiable and never skipped.
  3. You pick the keywordThe skill stops here and waits. It recommends one and explains why, but nothing is written until you confirm.
  4. Phase 3: competitor researchAnalyses the top 5 ranking articles for the chosen keyword: heading structures, word counts per section, what they miss, outdated stats, and which structural elements they use. This is where the angle you can win on gets identified.
  5. Angle selectionRuns the seven angle lenses and four gates so the post leads with a non-consensus take rather than restating what already ranks.
  6. Phase 4: write the postProduces the SEO metadata, the full article, the FAQ with schema-ready answers, the JSON-LD, the image prompts, the internal link suggestions, and the GEO layer: a direct answer in the first 40 to 60 words and self-contained key passages sized for AI citation.
  7. Phase 4B: mandatory rewriteIt re-reads the whole draft and rewrites it, not edits it. Cuts filler, tightens to active voice, fixes flow, checks voice against your profile, verifies every stat still has a source, and rewrites the opening two paragraphs if they would not hold you. You never see the first draft.
  8. Phase 5: quality gate and publishScores the post through the critique skill and checks word count against intent, statistic density, source coverage, heading hierarchy, voice match and hallucinations. Anything failing is fixed before delivery. Then it asks where to publish: local file, GoHighLevel blog, a custom site directory, or just output.

What you get

Honest limits

Read this before you rely on it

Where people go wrong

The mistakeDo this instead
Supplying a keyword and expecting it to skip straight to writingPhase 2 always runs. Treat it as validation: the data either confirms your keyword or hands you a better one you had not considered.
Walking away after giving the topicIt stops and waits for you to choose the keyword. Leaving it hanging is the most common way a run stalls.
Publishing with [UNVERIFIED] tags still in the copyEvery tag is a claim the skill could not source. Verify it, replace it with something you can source, or cut it.
Repeating the keyword to look more optimisedKeyword stuffing measurably reduces AI visibility. Let the LSI keywords carry the topical coverage instead.
Dropping the schema markup because it looks like developer workPaste the JSON-LD in. It is a copy and paste job and it is a direct input into whether AI search engines cite the piece.
Worth knowing

The GEO layer is the part most people skip and it is the cheapest win here. Put the direct answer in the first 40 to 60 words, and keep each key passage self-contained at roughly 134 to 167 words with its own stat and source, so an AI engine can lift and cite that block without needing the rest of the article.