Install
$ agentstack add skill-varnan-tech-opendirectory-seo-keyword-research ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo 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 Used
- ✓ 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.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
SEO Keyword Research Skill
Find trending, high-opportunity keywords BEFORE writing blog content. This skill turns generic blog topics into SEO-optimized content that ranks.
When to Use
- User asks to write a blog post or article
- User wants keyword research for a topic
- User needs a content calendar or content plan
- User wants to optimize existing content for SEO
- Any blog generation task for a tech/developer-focused audience
Core Principle
Always research keywords BEFORE generating blog content.
BAD: Write blog -> Hope it ranks -> Usually doesn't
GOOD: Research keywords -> Find breakout opportunity -> Write optimized blog -> Ranks well
Keyword Priority System
When analyzing Google Trends RELATED_QUERIES results, prioritize keywords in this order:
1. Breakout Keywords — HIGHEST priority
formatted_value: "Breakout"= 5000%+ growth- Very low competition (trend is new)
- Use as PRIMARY blog keyword
- Create content IMMEDIATELY (first-mover advantage)
2. High-Growth Keywords — VERY HIGH priority
formatted_value: "+100%"or higher- Low to moderate competition
- Use as primary or strong secondary keyword
- Create content within 2-4 weeks
3. Moderate-Growth Keywords — HIGH priority
formatted_value: "+50%"to"+99%"- Moderate competition
- Use as secondary keywords in body content
4. Long-Tail Keywords — STRATEGIC priority
- Question-based queries (how, what, why, when, where)
- Low competition, high conversion
- Use as H3 headings — target featured snippets and voice search
5. Established Keywords — MODERATE priority
- Top queries with stable interest, high competition
- Use in body content, not as primary target
SEO Research Workflow
Step 1: Keyword Discovery (1 API call — REQUIRED)
Query RELATED_QUERIES with the user's blog topic:
curl -s "https://serpapi.com/search?engine=google_trends&q=USER_TOPIC&data_type=RELATED_QUERIES&date=today+3-m&api_key=$SERPAPI_KEY"
From the response, extract:
- Breakout keywords → candidate primary keywords
- High-growth keywords (+100%) → secondary candidates
- Question-based queries → H3 headings and featured snippet targets
Select the primary keyword:
- First breakout keyword (if any)
- Else first high-growth keyword
- Else top query by score
Step 2: Content Structure (1 API call — REQUIRED)
Query RELATED_TOPICS with the same topic:
curl -s "https://serpapi.com/search?engine=google_trends&q=USER_TOPIC&data_type=RELATED_TOPICS&date=today+3-m&api_key=$SERPAPI_KEY"
Extract topic titles from rising + top results. These become your H2 section headings (pick 3-5).
Step 3: Trend Validation (1 API call — OPTIONAL)
Only if choosing between multiple candidate keywords or validating viability:
curl -s "https://serpapi.com/search?engine=google_trends&q=KEYWORD&data_type=TIMESERIES&date=today+12-m&api_key=$SERPAPI_KEY"
Compare recent 2-month average vs. earlier 2-month average. If recent > earlier, trend is rising — proceed. If declining, consider a different keyword.
Step 4: Generate Blog Outline
Build the outline using this structure:
Title: [Primary Keyword] — [Benefit/Number] [Year]
(max 60 characters, must include primary keyword)
Meta Description: (150-160 chars, primary + 1-2 secondary keywords)
# [H1 — same as or variation of title]
## Introduction (150 words)
- Primary keyword in first 100 words
- Hook with a problem or question
- Preview what they'll learn
## [H2: Related Topic 1 from Step 2]
### [H3: Long-tail question from Step 1]
Content answering the question (150-200 words)
### [H3: Another long-tail question]
Content (150-200 words)
## [H2: Related Topic 2]
### [H3: Long-tail question]
### [H3: Long-tail question]
## [H2: Related Topic 3]
### [H3: Long-tail question]
### [H3: Long-tail question]
## Conclusion (100 words)
- Summarize key points
- Primary keyword mentioned once
- Call-to-action
Target: 1500-2500 words total
Keyword Placement Rules
| Location | Rule | |----------|------| | Title | Include primary keyword, max 60 chars | | H1 | Same as title or slight variation | | H2 headings (3-5) | Use related topics, natural language | | H3 headings (8-12) | Use long-tail keywords, question format | | First paragraph | Primary keyword in first 100 words | | Body content | Primary keyword 1-2% density, secondary 0.5-1% | | Conclusion | Primary keyword once | | Meta description | Primary + 1-2 secondary, 150-160 chars |
Never keyword-stuff. Content must read naturally. Google penalizes unnatural repetition.
Quality Checklist
Before generating the blog, verify:
- [ ] Found at least 1 breakout or +100% keyword (or justified using established keyword)
- [ ] Have 3-5 H2 topics from RELATED_TOPICS
- [ ] Have long-tail keywords for H3 headings
- [ ] Primary keyword is specific enough to rank for
- [ ] Blog structure follows the outline template above
- [ ] Meta description is written (150-160 chars)
- [ ] Target length is 1500-2500 words
If no breakout or high-growth keywords exist for the topic, inform the user that SEO opportunity is limited and suggest alternative angles or related topics that do have growth.
Budget Awareness
Free tier: 250 searches/month
| Strategy | Calls/Blog | Monthly Capacity | |----------|-----------|-----------------| | Minimal (recommended) | 2 | 125 blogs | | Standard | 3 | 83 blogs | | Complete | 4 | 62 blogs |
Default to 2 calls (RELATEDQUERIES + RELATEDTOPICS). Only add TIMESERIES or GEO_MAP when specifically needed.
Common Mistakes to Avoid
- Skipping research — writing without checking trends misses breakout opportunities
- Ignoring breakout keywords — using a generic term when a breakout variant exists
- Keyword stuffing — repeating keywords unnaturally; keep density at 1-2%
- No long-tail keywords — missing featured snippet and voice search opportunities
- Generic H2 headings — always use RELATED_TOPICS data for section structure
Example Script
For a complete working example, run:
python scripts/blog_seo_research.py "your blog topic"
See [scripts/blogseoresearch.py](scripts/blogseoresearch.py) for the implementation.
References
- [references/keyword-placement-guide.md](references/keyword-placement-guide.md) — Detailed placement rules and examples
- [references/tech-blog-examples.md](references/tech-blog-examples.md) — Real-world examples for tech/developer blogs
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: Varnan-Tech
- Source: Varnan-Tech/opendirectory
- License: MIT
- Homepage: https://www.opendirectory.dev
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.