AgentStack
SKILL verified MIT Self-run

Universal Seo Blog Generator

skill-nurkamol-claude-skills-rankmath-seo-blog-generator · by nurkamol

Generate premium, SEO-optimized HTML blog posts for any business or industry with internal linking, images, and conversion-focused structure.

No reviews yet
0 installs
2 views
0.0% view→install

Install

$ agentstack add skill-nurkamol-claude-skills-rankmath-seo-blog-generator

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Universal Seo Blog Generator? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

🧠 Universal SEO Blog Generator — RankMath Pro Edition

🎯 Objective

Generate premium, SEO-optimized HTML blog posts for any company or industry, achieving 90–100 RankMath Pro scores while maintaining a natural, authoritative, conversion-focused tone.

Output must be a fully structured HTML file, ready to publish in WordPress.


⚙️ Step 1: Learn the Business (MANDATORY)

Analyze the provided website URL or content and extract:

  • Business name and primary services / products
  • Target audience (homeowners, contractors, B2B, etc.)
  • Brand tone (professional, friendly, authoritative)
  • Service locations / cities
  • Internal pages available for linking (services, contact, blog posts)
  • Phone number for CTA

> If any of the above is missing → ask the user before proceeding.


❓ Step 2: Ask Before Generating

Before writing, confirm:

  1. Number of posts to generate
  2. Topic for each post — or ask to suggest based on business
  3. Location-based? (yes / no — affects local SEO rules)
  4. Primary goal per post:
  • SEO traffic
  • Lead generation
  • Brand authority
  1. Output format — ask the user which format they need:
  • HTML (default) — clean `` markup, ready for Classic editor, MCP publishing, or manual paste
  • Gutenberg — native WordPress block markup using `` etc., paste directly into the Gutenberg editor block inserter or Code Editor view

> If the user plans to publish via pk_publish_post MCP, HTML is recommended — the plugin converts automatically. Only choose Gutenberg if the user will paste manually into the WordPress block editor.


🔑 Step 3: Focus Keyword Rules (CRITICAL — RankMath Pro)

The focus keyword is the exact phrase RankMath will test against. Every rule below must be satisfied for a 90+ score.

3.1 — Choose the Keyword Correctly

  • Use an exact phrase that matches real search queries (e.g. HERS rating Sacramento)
  • Do NOT paraphrase it in any of the required positions below
  • Do NOT reuse the same focus keyword across multiple posts

3.2 — Keyword Placement Checklist (ALL required)

| Location | Rule | |---|---| | SEO Title | Exact phrase must appear in the first 50% of the title | | Meta Description | Exact phrase must appear in the first 120 characters | | URL / Slug | Exact phrase (hyphenated) in slug. Total slug ≤ 75 chars | | First 10% of content | Exact phrase in the opening paragraph (not first sentence — within first ~100 words) | | Body content | Exact phrase used 4–5 times naturally throughout (1–1.5% density) | | At least one H2 or H3 | Exact phrase or close variation in a subheading | | At least one image alt | Exact phrase in the alt attribute of the first or most prominent image |

3.3 — Keyword Density Formula

Target uses = (word count × 0.01) to (word count × 0.015)

Examples:
  1,000 words → 10–15 uses  ← aim for lower end to stay natural
  1,200 words → 12–18 uses  ← 4–5 exact phrase + semantic variations

> ⚠️ RankMath counts exact phrase AND semantic combinations. > Use the exact phrase 4–5 times. Fill the remaining density with > semantic keywords (e.g. for HERS rating Sacramento: "home energy > rating", "Sacramento energy test", "certified HERS rater", "Title 24").


📝 Step 4: SEO Title Rules

RankMath tests four things on the title — all must pass:

  1. Exact focus keyword in first 50% of title — place keyword at the START
  2. Power word — include one emotionally engaging word (e.g. Proven, Fast, Essential, Complete, Trusted, Powerful, Smart, Hidden, Real)
  3. Positive or negative sentiment — the title must evoke emotion
  4. Number — include a specific number (e.g. 7 Ways, 5 Signs, 3 Steps)
  5. Length: ≤ 60 characters total

Title Formula:

[Focus Keyword]: [Number] [Power Word] [Benefit/Outcome]

Examples:

✅ HERS Rating Sacramento: 7 Proven Ways to Cut Energy Costs       (57 chars)
✅ Duct Testing Roseville: 5 Essential Facts Every Homeowner Needs  (59 chars)
✅ Leaky Ducts Rio Linda: How to Stop Hidden Energy Waste Fast      (58 chars)

❌ 7 Ways a HERS Rating Cuts Sacramento Energy Costs               (keyword not at start)
❌ Title 24 Compliance in Sacramento: A Homeowner's Guide to HERS  (too long, keyword buried)

📄 Step 5: Meta Description Rules

  1. Exact focus keyword in first 120 characters — place it naturally near the beginning
  2. Total length: 120–160 characters
  3. Conversion-focused — answer "what's in it for me?"
  4. Include a subtle CTA or benefit hook

Formula:

[Focus keyword] [benefit statement] — [differentiator or urgency hook].

Example:

✅ HERS rating Sacramento homeowners trust reveals hidden energy waste,
   lowers cooling costs, and gives you a clear upgrade plan — same-day results.
   (143 chars — keyword in chars 1–23 ✅)

❌ Sacramento energy bills keep climbing. Discover how a HERS rating identifies
   hidden waste...
   (keyword not in first 120 chars ❌)

🔗 Step 6: Linking Rules

Internal Links

  • Minimum 2–3 internal links per post
  • Link to: Services page, Contact page, relevant blog posts
  • Use natural anchor text — never "click here" or bare URLs
  • No target="_blank" on any link

External Links (MANDATORY — RankMath Additional SEO test)

  • Minimum 1 external dofollow link to an authoritative source

(e.g. California Energy Commission, Energy Star, RESNET, government sites)

  • Do NOT add rel="nofollow" or rel="noopener noreferrer" — this will fail

the RankMath "Linking to External Content with a Followed Link" test

  • Place the external link naturally within the body, not in the CTA

> ⚠️ v1.0 BUG: Adding target="_blank" automatically adds rel="noopener noreferrer" > in many WordPress themes — which makes the link nofollow. Use plain `` only.


🖼️ Step 7: Image Rules

  • Use 4 images minimum (RankMath scores: 1 image = partial, 4+ images = 100%)
  • Source from: Pexels, Unsplash, or Pixabay (free commercial use)
  • Use live image URLs — no placeholders
  • Add loading="lazy" to all images except the hero (first) image

Alt Text Rules (MANDATORY):

  • IMG 1 (hero): Must contain the exact focus keyword
  • IMG 2–4: Use descriptive, semantic alt text related to topic
  • Keep alt text under 125 characters

HTML Format:


🧾 Step 8: Output Format

Format Choice (set in Step 2, question 5)

If HTML → use the `` structure below (default). If Gutenberg → replace every HTML tag with its native block equivalent (see Gutenberg Block Map below).


Metadata Comment Block (top of file):

Full HTML Structure:


  [Title — contains focus keyword]

  [Opening paragraph — exact focus keyword within first 100 words,
     NOT as the very first word of the sentence]

  

  
    In This Article
    
      Section 1 Title
      Section 2 Title
      
    
  

  [Section — include focus keyword or variation here]
  [Content — short paragraphs, max 120 words each]

  

  Section 2
  [Content]

  

  

  Schedule / Contact
  [Final paragraph — use focus keyword one last time]

  

  
    Call or text us today at
    (XXX) XXX-XXXX
    to [action relevant to post topic].
  

Gutenberg Block Map (use when format = Gutenberg)

Wrap each element in its native block comment. Example:


[Title]

[Opening paragraph]

  

...

[Section heading]

[item]

Full tag → block mapping:

| HTML | Gutenberg block | |---|---| | ` | wp:heading {"level":1} | | | wp:heading {"level":2} | | | wp:heading {"level":N} | | | wp:paragraph | | | wp:list | | | wp:list {"ordered":true} | | (standalone) | wp:image wrapped in | | | wp:quote | | | wp:code | | | wp:separator | | , | wp:html` |

> ⚠️ Do NOT use Gutenberg format when publishing via pk_publish_post — the MCP plugin handles HTML-to-blocks conversion automatically.


📋 SEO Summary Block (ALWAYS output this in chat after generating content)

After delivering the HTML or Gutenberg content, always output the following block as plain text in the chat — so the user can copy SEO fields directly into RankMath without opening the file:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📋 SEO SUMMARY — paste into RankMath
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Focus Keyword:      [exact phrase]
Secondary Keywords: [kw1], [kw2], [kw3], [kw4]
SEO Title:          [title ≤60 chars — keyword in first 50%]
Meta Description:   [120–160 chars — exact keyword in first 120 chars]
Slug:               [focus-keyword-hyphenated]
Categories:         [Primary Category], [Location Category], General
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

This block is always shown — regardless of HTML or Gutenberg format, regardless of whether publishing via MCP or manually.


✍️ Step 9: Content Rules

Length

  • Minimum: 1,000 words (RankMath 40% score at 1,000–1,500 words)
  • Target: 1,500–2,000 words (RankMath 60% score)
  • Best: 2,500+ words (RankMath 100% score on content length test)
  • Balance: longer = better score, but content must remain valuable — no padding

Keyword Density (EXACT rules)

  • Exact focus phrase: 4–5 times
  • Semantic / secondary keywords: fill body naturally
  • Combined density target: 1.0–1.5%
  • Never exceed 2.5% — RankMath will flag keyword stuffing

Paragraph Rules (RankMath Content Readability test)

  • Maximum 120 words per paragraph — RankMath flags longer paragraphs
  • Aim for 3–5 sentences per paragraph
  • Use bullet lists to break up dense information

Structure Requirements

  • H1: Contains focus keyword (usually same as SEO title)
  • H2 sections: 5–8 sections minimum
  • H3 subsections: Use for numbered lists or sub-topics within H2s
  • Table of Contents: Required — use `` with anchor links
  • Focus keyword in at least one H2 or H3

Tone & Language

  • Authoritative but accessible
  • Industry-specific terminology (shows expertise to Google)
  • Conversion-focused — address the reader's pain points directly
  • No filler phrases ("In today's world...", "In conclusion...")
  • No passive voice heavy sections

📍 Step 10: Local SEO Rules (when location-based)

  • Use city/region name naturally throughout — 3–5 times in the body
  • Include city in: H1 or first H2, at least one image alt, meta description
  • Mention surrounding service areas in the CTA section
  • Do NOT repeat the city name in every sentence — Google penalizes spammy local SEO

☎️ Step 11: CTA Rules

  • Every post must end with a CTA section
  • Use the real, extracted phone number
  • Format: (XXX) XXX-XXXX
  • CTA should be specific to the post topic (not generic "call us today")
  • Include the business's service area in the CTA paragraph

Example:


  Call or text us today at
  (916) 289-1211
  to schedule your same-day HERS duct test in Roseville.

✅ Step 12: Pre-Publish Self-Check

Before outputting the final HTML, verify every item:

Basic SEO

  • [ ] Exact focus keyword in SEO title, in first 50% of title
  • [ ] Exact focus keyword in meta description, within first 120 chars
  • [ ] Exact focus keyword in slug
  • [ ] Exact focus keyword within first 10% of content body
  • [ ] Exact focus keyword in body 4–5 times (1–1.5% density)
  • [ ] Exact focus keyword NOT used in another post (uniqueness)

Additional SEO

  • [ ] Exact focus keyword in at least one H2 or H3
  • [ ] Exact focus keyword in at least one image alt attribute
  • [ ] Keyword density 1.0–1.5% (not below, not above 2.5%)
  • [ ] Slug is ≤ 75 characters total
  • [ ] At least 1 external dofollow link (NO rel="nofollow", NO rel="noopener noreferrer")
  • [ ] At least 2–3 internal links with natural anchors
  • [ ] No target="_blank" on any link

Title Readability

  • [ ] Focus keyword in first 50% of SEO title
  • [ ] At least 1 power word in title
  • [ ] Title has positive OR negative sentiment
  • [ ] Title contains a number
  • [ ] Title ≤ 60 characters

Content Readability

  • [ ] Table of Contents present (`` with anchor links)
  • [ ] No paragraph exceeds 120 words
  • [ ] At least 4 images with live URLs
  • [ ] loading="eager" on hero image, loading="lazy" on all others
  • [ ] `` wrapper present
  • [ ] Image Reference Block in metadata comment is complete and matches all `` tags in the HTML

CTA

  • [ ] Real phone number in `` at end of post
  • [ ] CTA is specific to post topic and location

🏆 RankMath Score Targets

| Section | Target | Key Requirements | |---|---|---| | Basic SEO | ✅ All green | Keyword in title (first 50%), meta desc (first 120 chars), URL, first 10% of content, body 4–5× | | Additional SEO | ✅ All green | Keyword in H2/H3, image alt, density 1–1.5%, external dofollow link, internal links | | Title Readability | ✅ All green | Keyword at start, power word, sentiment, number, ≤60 chars | | Content Readability | ✅ All green | ToC, short paragraphs, 4+ images | | Overall Score | 90–100 / 100 | All sections passing |


🚀 Step 13: Publishing via PixelKraft SEO Pro MCP

When publishing with pk_publish_post, note:

Native Gutenberg Blocks (automatic)

The plugin automatically converts the HTML output to native Gutenberg blocks before saving. You do NOT need to change the HTML structure — keep the ` wrapper and ` in place. The server strips them and maps each element:

| HTML tag | Gutenberg block | |---|---| | `, | wp:heading | | | wp:paragraph | | | wp:list | | | wp:list (ordered) | | | wp:image | | | wp:quote | | | wp:code | | | wp:separator | | , , etc. | wp:html` |

Categories by Name

Pass category names as strings — no need to look up IDs first:

categories: ["HERS Compliance", "Roseville", "Title 24"]

New categories are created automatically if they don't exist.

Full pkpublishpost Call

pk_publish_post(
  title:      "[SEO Title from metadata block]",
  content:    "[full HTML article output]",
  keyword:    "[focus keyword]",
  meta_title: "[SEO Title ≤60 chars]",
  meta_desc:  "[meta description 120–160 chars]",
  slug:       "[slug from metadata block]",
  categories: ["[Primary Category]", "[Location Category]"],
  status:     "publish"   ← or "draft" for review
)

📋 Quick Reference Card

TITLE:        [Keyword]: [Number] [Power Word] [Benefit] — ≤60 chars, keyword first
META:         [Exact keyword] in char 1–120, total 120–160 chars
SLUG:         exact-keyword-hyphenated (≤75 chars total URL)
INTRO:        Exact keyword within first 100 words, not first word of sentence
BODY:         4–5 exact uses + semantic variations = 1–1.5% density
H2/H3:        At least 1 subheading contains exact keyword or close variation
IMG ALT:      IMG 1 must contain exact keyword
LINKS:        2–3 internal (natural anchors) + 1 external dofollow (no rel attributes)
PARAGRAPHS:   ≤120 words each
TOC:          Required —  with anchor links
IMAGES:       4 minimum, live URLs, loading="eager" on hero only
IMG REF:      List ALL images (URL + alt) in metadata comment block for easy manual replacement
FORMAT:       Ask user — HTML (default) or Gutenberg block markup
SEO SUMMARY:  Always output keyword / secondary keywords / title / meta / slug / categories in chat after generating
CTA:          Real tel: link, specific to post topic + location

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.