Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsCommunityBlog
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

Back to skills

Research My Seo

ASecurity

Build the SEO foundation you need to rank. Pick the focus: keyword research that clusters terms by intent and difficulty and names the pillars worth owning, or a backlink plan that finds target sites and drafts a personalized pitch for each one. Both grounded in your positioning so you chase the right traffic.

113 stars
0 votes
0 copies
0 views
Added 9/19/2026
content-marketinggo

Security Analysis

A100/100

Scanned 9/19/2026

Install to Claude Code

$npx -y skills add gethouston/houston --skill research-my-seo --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Research My Seo?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Research My Seo
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/gethouston-research-my-seo/badge)](https://www.skillsdirectory.com/skills/gethouston-research-my-seo)

More formats (shields.io, HTML) on the badges page.

Download Zip
Files
SKILL.md
---
name: research-my-seo
description: "Build the SEO foundation you need to rank. Pick the focus: keyword research that clusters terms by intent and difficulty and names the pillars worth owning, or a backlink plan that finds target sites and drafts a personalized pitch for each one. Both grounded in your positioning so you chase the right traffic."
version: 1
category: Marketing
featured: no
image: megaphone
integrations: [semrush, ahrefs, firecrawl]
x_houston:
  created_by: houston
  skill_schema: 1
---


# Research My SEO

One skill for the two foundational SEO research jobs. `focus` param picks whether you're building keyword clusters or a backlink outreach plan. Both read your positioning first so every recommendation ladders back to your ideal customer and category.

## Parameter: `focus`

- `keywords`  -  cluster terms by intent and difficulty via Semrush / Ahrefs, flag the 3 pillars worth owning, draft cluster briefs. Living `keyword-map.md` appends each new cluster. Output: `keyword-clusters/{cluster-slug}.md` + updates `keyword-map.md`.
- `backlinks`  -  identify 15-30 target sites via SERP + backlink tool, tier by effort, draft a personalized pitch email for each one. Output: `backlink-plans/{YYYY-MM-DD}.md`.

User names focus in plain English ("find keywords for {topic}", "build a keyword map", "who should we pitch for links", "link-building plan") -> infer. Ambiguous -> ask ONE question naming both options.

## When to use

**keywords:**
- Explicit: "find keywords for {topic}", "build a keyword map", "what should we rank for", "keyword research on {topic}", "give me a cluster for {seed term}".
- Implicit: called by `write-a-post` when target keyword missing, or by `check-my-marketing` (subject=content-gap) to size gap opportunities.
- Run many times  -  one cluster per invocation. Living `keyword-map.md` appends each new cluster.

**backlinks:**
- Explicit: "find backlinks", "who should we pitch for links", "link-building plan", "backlink targets for {topic}", "link prospecting".
- Implicit: inside a launch plan when external amplification needed.
- Weekly or per-campaign cadence.

## Connections I need

I run external work through Composio. Before this skill runs I check that the categories below are linked. Missing -> I name the category, ask you to connect it from the Integrations tab, stop.

- **SEO (Semrush or Ahrefs)**  -  Required (both focuses). For `keywords`: pulls volumes, difficulty, and intent for every term. For `backlinks`: finds the target sites worth pitching and grades their authority.
- **Web scrape (Firecrawl)**  -  Required for `backlinks` (reads the target's recent posts so the pitch references real work, not generic flattery). Not needed for `keywords`.
- **Inbox (Gmail, Outlook)**  -  Optional for `backlinks` (samples your voice for the pitch emails; drafts read flat without it). Not needed for `keywords`.

If no SEO tool is connected I stop and ask you to connect Semrush or Ahrefs (or paste a seed list of terms for `keywords`).

If neither Ahrefs nor Semrush is connected for `backlinks` I stop and ask you to connect one of them.

## Information I need

I read your marketing context first. For every required field that's missing I ask ONE plain-language question (best modality: connected app > file drop > URL > paste) and wait.

- **Your positioning**  -  Required (both focuses). Why I need it: Ideal customer and category framing decide which keywords are worth ranking for (`keywords`) and which sites are relevant vs noise (`backlinks`). If missing I ask: "Want me to draft your positioning first? It's one skill, takes about five minutes."
- **Your website domain**  -  Required (both focuses). Why I need it: for `keywords` I check what you already rank for so I don't propose keywords you already own; for `backlinks` I check who already links to you so I don't pitch sites that already cover you. If missing I ask: "What's your website? Paste the URL."
- **The seed topic**  -  Required for `keywords`. Why I need it: one cluster per run, I don't want to guess. If missing I ask: "What's the seed topic or term you want a keyword cluster around?"
- **Your voice**  -  Required for `backlinks` pitch emails. If missing I ask: "Connect your sent inbox so I can match your voice, or paste two or three emails you've sent."
- **Topic or angle to pitch on**  -  Optional for `backlinks`. If missing I ask: "What angle do you want me to pitch on? If you don't have a preference I keep going with your core positioning."

## Steps
<!-- houston-workflow:v1 -->

### Shared steps (both focuses)

1. **Read positioning doc**: `context/marketing-context.md`. If missing, stop. Tell user run `set-up-my-marketing-info` first.
2. **Read config**: `config/site.json`, `config/tooling.json`.
3. **Discover tool**: `composio search keyword` (fall back `composio search seo`) for `keywords`; `composio search backlink` (fall back `composio search seo`, last resort `composio search web`) for `backlinks`. Pick first matching connected slug.

### Branch on `focus`:

#### `keywords`

4. **Check SEO tool connected.** No SEO keyword tool connected -> ask ONE question: "Connect a keyword tool in the Integrations tab (Semrush / Ahrefs / etc) or paste a seed list of terms you think matter  -  which?"
5. **Build cluster** for requested topic:
   - Expand seed into 15-40 related terms (head + long-tail).
   - Pull per-term: search volume, keyword difficulty, SERP intent (informational / commercial / navigational / transactional).
   - Group into sub-clusters by intent or sub-topic.
   - Score each term priority: `(volume / difficulty) x intent-fit x ideal-customer-fit`. Ideal-customer-fit references positioning doc.
6. **Write per-cluster detail** to `keyword-clusters/{cluster-slug}.md` atomically. Structure: cluster summary, ideal customer / positioning rationale, sub-clusters table (term / volume / difficulty / intent / priority), recommended first 3 posts to draft.
7. **Append to `keyword-map.md`** (living doc at agent root). File missing -> create with short preamble. Append new section for this cluster with link to per-cluster detail file + top 5 priority terms. Atomic write: read -> append in memory -> write `*.tmp` -> rename.
8. **Append to `outputs.json`**  -  `{ id, type: "keyword-map", title, summary, path: "keyword-clusters/{slug}.md", status: "draft", createdAt, updatedAt }`.
9. **Summarize to user**  -  name top 3 priority terms, flag best first post to draft, link both cluster detail + updated `keyword-map.md`.

#### `backlinks`

4. **Read `config/voice.md`** if exists (for pitch-email tone). If voice missing, ask ONE question: "Connect your sent inbox via Composio so I can match your voice, or paste 2-3 emails you've sent  -  which?"
5. **Build target list** (15-30 prospects). Each target:
   - Domain + specific page/author to pitch.
   - Why them: topical relevance, Domain Authority (or proxy metric), past linking behaviour to similar products, ideal customer overlap.
   - Link opportunity type: guest post / resource page / broken-link replacement / "best X" list addition / expert round-up / podcast.
6. **Tier list**: Tier 1 (high-value, high-effort), Tier 2 (medium / medium), Tier 3 (quick wins). Aim ~5 / 10 / 10.
7. **Draft per-target pitch emails.** Each target produce concise (<150 word) pitch: specific compliment tied to real post of theirs, value-exchange, soft CTA. Match voice from `config/voice.md` (if available) and positioning from shared doc.
8. **Write** to `backlink-plans/{YYYY-MM-DD}.md` atomically. Structure: Executive summary -> Tier 1 targets (table + per-target pitch) -> Tier 2 -> Tier 3 -> Outreach cadence recommendation.
9. **Append to `outputs.json`**  -  `{ id, type: "backlink-plan", title, summary, path, status: "draft", createdAt, updatedAt }`.
10. **Summarize to user**  -  count per tier, top 3 warmest targets, and path. Remind user: approval required before any pitch actually sent (skill drafts, not sends).

## What I never do

- Estimate volume/difficulty without tool result. Tool returned partial data -> mark gaps TBD.
- Fabricate SERP intent  -  read actual SERP when tool can fetch.
- Fabricate recipient's past work or publication's editorial interests. Every compliment tie to real URL.
- Mark Domain metrics tool didn't return as TBD, never invent.
- Send, post, or publish any pitch  -  founder delivers. Every outreach email is a draft you approve.

## Outputs

- `keyword-clusters/{cluster-slug}.md` (focus=keywords, per-cluster detail)
- `keyword-map.md` (focus=keywords, living document at agent root, appended each run)
- `backlink-plans/{YYYY-MM-DD}.md` (focus=backlinks)
- All append to `outputs.json` with matching `type`: `"keyword-map"` | `"backlink-plan"`.

Attribution

gethoustongethouston
View sourceMore from gethouston →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Postiz

Postiz is a tool to schedule social media and chat posts to 28+ channels X, LinkedIn, LinkedIn Page, Reddit, Instagram, Facebook Page, Threads, YouTube, Google My Business, TikTok, Pinterest, Dribbble, Discord, Slack, Kick, Twitch, Mastodon, Bluesky, Lemmy, Farcaster, Telegram, Nostr, VK, Medium, Dev.to, Hashnode, WordPress, ListMonk

21281 votes

Serp Analysis

SERP analysis techniques for intent classification, feature identification, and competitive intelligence. Use when analyzing search results for content strategy.

2831 votes

On Page Seo Auditor

This skill performs detailed on-page SEO audits to identify issues and optimization opportunities. It analyzes all on-page elements that affect search rankings and provides actionable recommendations.

1821 votes

Brand

Brand voice, visual identity, messaging frameworks, asset management, brand consistency. Activate for branded content, tone of voice, marketing assets, brand compliance, style guides.

1240080 votes

Release Announcement

Write a release announcement — changelog, blog post, in-app note, or social post — that leads with user impact, names the audience, and includes upgrade/migration steps without filler.

798220 votes
View all in content-marketing →