Skip to content

Commit 03ec8df

Browse files
AgriciDanielclaude
andcommitted
feat: v1.8.0 - Firecrawl extension, backlink analysis, Excel export
New features: - Firecrawl extension: full-site crawling, site mapping, JS rendering via MCP - Backlink analysis skill: profile overview, toxic links, competitor gap, disavow - Excel export: --format xlsx option in google_report.py with styled workbooks - Ecosystem cross-links: AI Marketing Claude added as companion tool Changes: - Sub-skill count: 18 -> 19 (seo-backlinks) - Extension count: 2 -> 3 (firecrawl) - Orchestrator routes: /seo backlinks, /seo firecrawl - requirements.txt: added openpyxl>=3.1.0 - Installer version tags bumped to v1.8.0 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent d91eb83 commit 03ec8df

18 files changed

Lines changed: 1177 additions & 15 deletions

File tree

.claude-plugin/plugin.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "claude-seo",
3-
"version": "1.7.1",
3+
"version": "1.8.0",
44
"description": "Comprehensive SEO analysis skill for Claude Code. Covers technical SEO, content quality (E-E-A-T), schema markup, image optimization, sitemap architecture, AI search optimization (GEO), local SEO (GBP, citations, reviews, map pack), maps intelligence, and strategic planning across all industries.",
55
"author": {
66
"name": "AgriciDaniel",

CHANGELOG.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,33 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [1.8.0] - 2026-03-30
9+
10+
### Added
11+
- **Firecrawl extension**: Full-site crawling, scraping, and site mapping via Firecrawl MCP (`extensions/firecrawl/`)
12+
- 4 commands: crawl, map, scrape, search
13+
- JS rendering support for SPA/CSR sites (addresses #11)
14+
- Cross-skill integration with audit, technical, sitemap, and content skills
15+
- Self-contained install/uninstall scripts (Bash + PowerShell)
16+
- **Backlink analysis skill**: `skills/seo-backlinks/SKILL.md` with `/seo backlinks` command
17+
- 7-section analysis: profile overview, anchor text, referring domain quality, toxic links, top pages, competitor gap, new/lost links
18+
- Backlink health score (0-100) with weighted factors
19+
- Disavow recommendations with export format
20+
- Requires DataForSEO extension for live data
21+
- **Backlink quality reference**: `skills/seo/references/backlink-quality.md` with 30 toxic link patterns, anchor text benchmarks by industry
22+
- **Excel export**: `--format xlsx` option in `scripts/google_report.py`
23+
- Sheets: Summary, Queries, Pages, Indexation (conditional on data available)
24+
- Navy header styling matching PDF palette, auto-column-width, frozen headers, auto-filter
25+
- New format options: `xlsx`, `all` (pdf+html+xlsx)
26+
- **Ecosystem cross-links**: AI Marketing Claude added to README and CLAUDE.md ecosystem sections
27+
28+
### Changed
29+
- Sub-skill count: 18 -> 19 (added seo-backlinks)
30+
- Extension count: 2 -> 3 (added Firecrawl)
31+
- Orchestrator routing table updated with `/seo backlinks` and `/seo firecrawl` commands
32+
- Audit orchestration: Firecrawl `map` used for URL discovery when available
33+
- `requirements.txt`: added `openpyxl>=3.1.0` for Excel export
34+
835
## [1.7.1] - 2026-03-30
936

1037
### Fixed

CLAUDE.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,10 +142,11 @@ claude-seo/
142142
Part of the Claude Code skill family:
143143
- [Claude Banana](https://github.com/AgriciDaniel/banana-claude) -- standalone image gen (bundled as extension here)
144144
- [Claude Blog](https://github.com/AgriciDaniel/claude-blog) -- companion blog engine, consumes SEO findings
145+
- [AI Marketing Claude](https://github.com/zubair-trabzada/ai-marketing-claude) -- community marketing suite (copy, emails, ads, funnels, CRO)
145146

146147
## Key Principles
147148

148149
1. **Progressive Disclosure**: Metadata always loaded, instructions on activation, resources on demand
149150
2. **Industry Detection**: Auto-detect SaaS, e-commerce, local, publisher, agency
150151
3. **Parallel Execution**: Full audits spawn up to 11 subagents simultaneously
151-
4. **Extension System**: DataForSEO MCP for live data, Banana MCP for AI image generation
152+
4. **Extension System**: DataForSEO MCP for live data, Firecrawl MCP for site crawling, Banana MCP for AI image generation

README.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -320,12 +320,14 @@ Claude SEO is part of a family of Claude Code skills that work together:
320320
| [Claude SEO](https://github.com/AgriciDaniel/claude-seo) | SEO analysis, audits, schema, GEO | Core -- analyzes sites, generates action plans |
321321
| [Claude Blog](https://github.com/AgriciDaniel/claude-blog) | Blog writing, optimization, scoring | Companion -- write content optimized by SEO findings |
322322
| [Claude Banana](https://github.com/AgriciDaniel/banana-claude) | AI image generation via Gemini | Shared -- generates images for SEO assets and blog posts |
323+
| [AI Marketing Claude](https://github.com/zubair-trabzada/ai-marketing-claude) | Copywriting, emails, social, ads, funnels, CRO | Community -- post-audit marketing action from SEO findings |
323324

324325
**Workflow example:**
325-
1. `/seo audit https://example.com` -- identify content gaps and image issues
326-
2. `/blog write "target keyword"` -- create SEO-optimized blog posts
327-
3. `/seo image-gen hero "blog topic"` -- generate hero images (banana extension)
328-
4. `/seo geo https://example.com/blog/post` -- optimize for AI citations
326+
1. `/seo audit https://example.com` -- identify content gaps and technical issues
327+
2. `/seo backlinks https://example.com` -- analyze link profile and competitor gaps
328+
3. `/blog write "target keyword"` -- create SEO-optimized blog posts
329+
4. `/seo image-gen hero "blog topic"` -- generate hero images (banana extension)
330+
5. `/seo geo https://example.com/blog/post` -- optimize for AI citations
329331

330332
## Documentation
331333

extensions/firecrawl/README.md

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
# Firecrawl Extension for Claude SEO
2+
3+
Full-site crawling, scraping, and site mapping powered by [Firecrawl](https://www.firecrawl.dev/). Enables comprehensive site-wide SEO analysis with JavaScript rendering support.
4+
5+
## Prerequisites
6+
7+
- [Claude SEO](https://github.com/AgriciDaniel/claude-seo) installed
8+
- Node.js 20+
9+
- Firecrawl API key ([sign up](https://www.firecrawl.dev/app/sign-up) -- free tier: 500 credits/month)
10+
11+
## Installation
12+
13+
### macOS / Linux
14+
15+
```bash
16+
./extensions/firecrawl/install.sh
17+
```
18+
19+
### Windows (PowerShell)
20+
21+
```powershell
22+
.\extensions\firecrawl\install.ps1
23+
```
24+
25+
The installer will prompt for your Firecrawl API key and configure the MCP server automatically.
26+
27+
## Commands
28+
29+
| Command | Purpose | Credits |
30+
|---------|---------|---------|
31+
| `/seo firecrawl crawl <url>` | Full-site crawl with content extraction | 1 per page |
32+
| `/seo firecrawl map <url>` | Discover site structure (URLs only) | 0.5 per URL |
33+
| `/seo firecrawl scrape <url>` | Single-page deep scrape with JS rendering | 1 |
34+
| `/seo firecrawl search <query> <url>` | Search within a site | 1 per result |
35+
36+
## Integration with Claude SEO
37+
38+
When installed, other Claude SEO skills automatically leverage Firecrawl:
39+
40+
- **`/seo audit`**: Uses `map` to discover all pages, then `crawl` for deep analysis
41+
- **`/seo technical`**: Broken link detection across entire site
42+
- **`/seo sitemap`**: Compare XML sitemap vs actual crawlable pages
43+
- **`/seo content`**: Thin content detection at scale
44+
45+
## Cost
46+
47+
| Plan | Credits/month | Price |
48+
|------|--------------|-------|
49+
| Free | 500 | $0 |
50+
| Hobby | 3,000 | $16/mo |
51+
| Standard | 100,000 | $83/mo |
52+
| Growth | 500,000 | $333/mo |
53+
54+
1 credit = 1 page crawled or scraped. Map operations use 0.5 credits per URL.
55+
56+
## Troubleshooting
57+
58+
**MCP not connecting?**
59+
- Check: `cat ~/.claude/settings.json | python3 -m json.tool | grep firecrawl`
60+
- Manual config: See [FIRECRAWL-SETUP.md](docs/FIRECRAWL-SETUP.md)
61+
62+
**Credits exhausted?**
63+
- Check usage: https://www.firecrawl.dev/app
64+
- Upgrade plan or wait for monthly reset
65+
66+
**Site blocking crawls?**
67+
- Some sites block automated crawling via robots.txt or Cloudflare
68+
- Try `scrape` (single page) instead of `crawl` (full site)
69+
- Fall back to `fetch_page.py` for basic HTML retrieval
70+
71+
## Uninstall
72+
73+
```bash
74+
./extensions/firecrawl/uninstall.sh # macOS/Linux
75+
.\extensions\firecrawl\uninstall.ps1 # Windows
76+
```
77+
78+
## Links
79+
80+
- [Firecrawl Documentation](https://docs.firecrawl.dev/)
81+
- [Firecrawl MCP Server](https://www.npmjs.com/package/firecrawl-mcp)
82+
- [Claude SEO](https://github.com/AgriciDaniel/claude-seo)
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# Firecrawl Setup Guide
2+
3+
## 1. Get Your API Key
4+
5+
1. Go to [firecrawl.dev/app/sign-up](https://www.firecrawl.dev/app/sign-up)
6+
2. Create a free account (500 credits/month included)
7+
3. Navigate to **API Keys** in the dashboard
8+
4. Copy your API key (starts with `fc-`)
9+
10+
## 2. Run the Installer
11+
12+
The installer handles everything automatically:
13+
14+
```bash
15+
./extensions/firecrawl/install.sh
16+
```
17+
18+
It will prompt for your API key and configure the MCP server.
19+
20+
## 3. Manual MCP Configuration
21+
22+
If the installer fails, add this to `~/.claude/settings.json` manually:
23+
24+
```json
25+
{
26+
"mcpServers": {
27+
"firecrawl-mcp": {
28+
"command": "npx",
29+
"args": ["-y", "firecrawl-mcp"],
30+
"env": {
31+
"FIRECRAWL_API_KEY": "fc-your-api-key-here"
32+
}
33+
}
34+
}
35+
}
36+
```
37+
38+
## 4. Verify Installation
39+
40+
Start Claude Code and try:
41+
42+
```
43+
/seo firecrawl map https://example.com
44+
```
45+
46+
You should see a list of discovered URLs. If you get a "tool not available" error, restart Claude Code to reload MCP servers.
47+
48+
## 5. Understanding Credits
49+
50+
| Operation | Credits Used |
51+
|-----------|-------------|
52+
| `crawl` | 1 per page crawled |
53+
| `scrape` | 1 per page |
54+
| `map` | 0.5 per URL discovered |
55+
| `search` | 1 per result returned |
56+
57+
**Free tier**: 500 credits/month resets on your billing date.
58+
59+
**Tip**: Use `map` first (cheap) to see how many pages a site has, then decide how many to `crawl` (more expensive).

extensions/firecrawl/install.ps1

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
# Firecrawl Extension Installer for Claude SEO (Windows)
2+
$ErrorActionPreference = 'Stop'
3+
4+
Write-Host "====================================" -ForegroundColor Cyan
5+
Write-Host " Firecrawl Extension - Installer" -ForegroundColor Cyan
6+
Write-Host " For Claude SEO" -ForegroundColor Cyan
7+
Write-Host "====================================" -ForegroundColor Cyan
8+
Write-Host ""
9+
10+
$SkillDir = "$env:USERPROFILE\.claude\skills\seo-firecrawl"
11+
$SeoSkillDir = "$env:USERPROFILE\.claude\skills\seo"
12+
$SettingsFile = "$env:USERPROFILE\.claude\settings.json"
13+
14+
# Check prerequisites
15+
if (-not (Test-Path $SeoSkillDir)) {
16+
Write-Host "x Claude SEO is not installed." -ForegroundColor Red
17+
Write-Host " Install it first: irm https://raw.githubusercontent.com/AgriciDaniel/claude-seo/main/install.ps1 | iex"
18+
exit 1
19+
}
20+
Write-Host "v Claude SEO detected" -ForegroundColor Green
21+
22+
$nodeVersion = (node -v 2>$null) -replace 'v',''
23+
if (-not $nodeVersion) {
24+
Write-Host "x Node.js is required but not installed." -ForegroundColor Red
25+
exit 1
26+
}
27+
$major = [int]($nodeVersion -split '\.')[0]
28+
if ($major -lt 20) {
29+
Write-Host "x Node.js 20+ required (found v$nodeVersion)." -ForegroundColor Red
30+
exit 1
31+
}
32+
Write-Host "v Node.js v$nodeVersion detected" -ForegroundColor Green
33+
34+
# Prompt for API key
35+
Write-Host ""
36+
Write-Host "Firecrawl API key required." -ForegroundColor Yellow
37+
Write-Host "Sign up at: https://www.firecrawl.dev/app/sign-up"
38+
Write-Host "Free tier: 500 credits/month"
39+
Write-Host ""
40+
41+
$apiKey = Read-Host "Firecrawl API key" -AsSecureString
42+
$apiKeyPlain = [Runtime.InteropServices.Marshal]::PtrToStringAuto(
43+
[Runtime.InteropServices.Marshal]::SecureStringToBSTR($apiKey))
44+
if ([string]::IsNullOrWhiteSpace($apiKeyPlain)) {
45+
Write-Host "x API key cannot be empty." -ForegroundColor Red
46+
exit 1
47+
}
48+
49+
# Determine source directory
50+
$ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
51+
$SourceDir = $null
52+
if (Test-Path "$ScriptDir\skills\seo-firecrawl\SKILL.md") {
53+
$SourceDir = $ScriptDir
54+
} elseif (Test-Path "$ScriptDir\extensions\firecrawl\skills\seo-firecrawl\SKILL.md") {
55+
$SourceDir = "$ScriptDir\extensions\firecrawl"
56+
} else {
57+
Write-Host "x Cannot find extension source files." -ForegroundColor Red
58+
exit 1
59+
}
60+
61+
# Install skill
62+
Write-Host ""
63+
Write-Host "=> Installing Firecrawl skill..." -ForegroundColor Yellow
64+
New-Item -ItemType Directory -Force -Path $SkillDir | Out-Null
65+
Copy-Item "$SourceDir\skills\seo-firecrawl\SKILL.md" "$SkillDir\SKILL.md" -Force
66+
67+
# Configure MCP server
68+
Write-Host "=> Configuring MCP server..." -ForegroundColor Yellow
69+
$settingsContent = if (Test-Path $SettingsFile) { Get-Content $SettingsFile -Raw | ConvertFrom-Json } else { @{} }
70+
if (-not $settingsContent.mcpServers) { $settingsContent | Add-Member -NotePropertyName mcpServers -NotePropertyValue @{} -Force }
71+
$settingsContent.mcpServers | Add-Member -NotePropertyName 'firecrawl-mcp' -NotePropertyValue @{
72+
command = 'npx'
73+
args = @('-y', 'firecrawl-mcp')
74+
env = @{ FIRECRAWL_API_KEY = $apiKeyPlain }
75+
} -Force
76+
$settingsContent | ConvertTo-Json -Depth 10 | Set-Content $SettingsFile -Encoding UTF8
77+
Write-Host " v MCP server configured" -ForegroundColor Green
78+
79+
# Pre-warm
80+
Write-Host "=> Pre-downloading firecrawl-mcp..." -ForegroundColor Yellow
81+
npx -y firecrawl-mcp --help 2>$null | Out-Null
82+
83+
Write-Host ""
84+
Write-Host "v Firecrawl extension installed!" -ForegroundColor Green
85+
Write-Host ""
86+
Write-Host "Usage:"
87+
Write-Host " /seo firecrawl crawl https://example.com"
88+
Write-Host " /seo firecrawl map https://example.com"
89+
Write-Host " /seo firecrawl scrape https://example.com/page"

0 commit comments

Comments
 (0)