Claude SEO를 위한 Firecrawl 확장팩
이 스킬을 사용하려면 Firecrawl 확장팩이 설치되어 있어야 합니다:
./extensions/firecrawl/install.sh
사용 가능 여부 확인: Firecrawl 도구를 사용하기 전에, MCP 서버가 연결되어 firecrawl_scrape 또는 다른 Firecrawl 도구를 사용할 수 있는지 확인하세요. 도구를 사용할 수 없으면 사용자에게 확장팩이 설치되지 않았다고 알리고 설치 방법을 안내하세요.
빠른 참조
| 명령어 | 목적 |
|---|---|
/seo firecrawl crawl <url> | 콘텐츠 추출을 포함한 전체 사이트 크롤링 |
/seo firecrawl map <url> | 사이트 구조 발견 (URL만, 빠름) |
/seo firecrawl scrape <url> | JS 렌더링을 포함한 단일 페이지 스크래핑 |
/seo firecrawl search <query> <url> | 크롤링된 사이트 내에서 검색 |
명령어
crawl -- 전체 사이트 크롤링
주어진 URL부터 시작하여 전체 웹사이트를 크롤링합니다. 발견된 모든 페이지의 콘텐츠, 메타데이터, 링크를 반환합니다.
MCP 도구: firecrawl_crawl
파라미터:
url(필수): 크롤링을 시작할 URLlimit: 크롤링할 최대 페이지 수 (기본값: 100, 최대: 500)maxDepth: 시작 URL로부터의 최대 링크 깊이 (기본값: 3)includePaths: 포함할 glob 패턴 배열 (예:["/blog/*"])excludePaths: 제외할 glob 패턴 배열 (예:["/admin/*", "/api/*"])scrapeOptions.formats: 출력 형식 --["markdown", "html", "links"]
SEO 사용 패턴:
- 종합 감사 크롤링: 전체 사이트를 크롤링하여 모든 페이지를 추출하고 하위 에이전트가 분석하도록 함
- 섹션 집중 크롤링:
includePaths를 사용하여/blog/*또는/products/*만 감사 - 깨진 링크 탐지:
["links"]형식으로 크롤링하여 모든 href에서 404 확인 - 콘텐츠 인벤토리: 모든 페이지 제목, 메타 설명, H1을 대규모로 추출
- SPA/JS 렌더링 사이트: Firecrawl이 JavaScript를 렌더링하여 Issue #11 문제 해결
/seo audit를 위한 오케스트레이션 예시:
1. firecrawl_map(url) -> 모든 URL 획득 (빠름, 콘텐츠 없음)
2. 가장 중요한 상위 50개 페이지 필터링 (홈페이지, 주요 섹션)
3. firecrawl_crawl(url, limit=50) -> 전체 콘텐츠 획득
4. seo-technical, seo-content, seo-schema 에이전트에 콘텐츠 전달
비용 인지:
- 무료 티어: 500 크레딧/월
- 1 크레딧 = 1 페이지 크롤링 또는 스크래핑
- 맵(map) 작업은 더 저렴함 (발견된 URL당 0.5 크레딧)
- 대규모 크롤링 전에 항상 예상 크레딧 사용량을 사용자에게 알리세요
map -- 사이트 구조 발견
콘텐츠를 가져오지 않고 웹사이트의 모든 URL을 발견합니다. 빠르고 크레딧 효율적입니다.
MCP 도구: firecrawl_map
파라미터:
url(필수): 맵핑할 웹사이트 URLlimit: 발견할 최대 URL 수 (기본값: 5000)search: URL을 필터링할 선택적 검색어
SEO 사용 패턴:
- 사이트맵 비교: 사이트를 맵핑하고 발견된 URL을 XML 사이트맵과 비교
- 고립 페이지 탐지: 사이트맵에는 있지만 어떤 페이지에서도 링크되지 않은 URL
- 크롤링 예산 분석: 색인 가능한 전체 페이지 수 대 홈페이지에서 링크된 페이지 수
- URL 패턴 분석: URL 구조 패턴, 중복, 파라미터 팽창 식별
- 사전 감사 발견: 먼저 맵을 실행한 후 주요 섹션에 대한 타겟 크롤링
출력: URL 배열. 다음과 같이 표시:
사이트: example.com
발견된 페이지: 342
URL 패턴 분석:
/blog/* - 128 페이지 (37%)
/products/* - 89 페이지 (26%)
/category/* - 45 페이지 (13%)
/pages/* - 32 페이지 (9%)
/ (루트 페이지) - 48 페이지 (14%)
scrape -- 단일 페이지 심층 스크래핑
전체 JavaScript 렌더링으로 단일 페이지를 스크래핑합니다. JS를 실행하고 동적 콘텐츠를 기다리기 때문에 fetch_page.py보다 더 철저합니다.
MCP 도구: firecrawl_scrape
파라미터:
url(필수): 스크래핑할 페이지 URLformats: 출력 형식 --["markdown", "html", "links", "screenshot"]onlyMainContent: 네비게이션/푸터/사이드바 제거 (기본값: true)waitFor: 콘텐츠를 기다릴 CSS 선택자 또는 밀리초timeout: 요청 타임아웃 (ms) (기본값: 30000)actions: 스크래핑 전 브라우저 동작 (클릭, 스크롤, 대기)
SEO 사용 패턴:
- SPA 콘텐츠 추출: JS 렌더링 React/Vue/Angular 페이지 스크래핑
- 동적 콘텐츠 감사: 접힌 부분 아래에 지연 로딩 콘텐츠가 있는 페이지
- 페이월/로그인 탐지: 인증 장벽 뒤에 있는 콘텐츠 식별
- 주요 콘텐츠 추출:
onlyMainContent를 사용하여 깔끔한 E-E-A-T 분석 - 스크린샷 캡처:
screenshot형식을 사용한 시각적 분석
scrape vs fetch_page.py 사용 시점:
| 시나리오 | 사용 |
|---|---|
| 정적 HTML 페이지 | fetch_page.py (API 비용 없음) |
| JS 렌더링 SPA | firecrawl_scrape (JS 렌더링) |
| 응답 헤더 필요 | fetch_page.py (헤더 반환) |
| 깔끔한 마크다운 필요 | firecrawl_scrape (더 나은 추출) |
| 속도 제한/차단됨 | firecrawl_scrape (안티봇 처리) |
search -- 사이트 범위 검색
웹사이트 내에서 특정 콘텐츠를 검색합니다. 모든 것을 크롤링하지 않고 특정 주제와 관련된 페이지를 찾는 데 유용합니다.
MCP 도구: firecrawl_search
파라미터:
query(필수): 검색어url(필수): 검색할 웹사이트limit: 최대 결과 수 (기본값: 10)scrapeOptions.formats: 일치하는 페이지의 출력 형식
SEO 사용 패턴:
- 콘텐츠 갭 검증: 사이트에서 키워드를 검색하여 콘텐츠가 존재하는지 확인
- 내부 링크 기회: 서로 링크할 수 있는 주제를 언급하는 페이지 찾기
- 중복 콘텐츠 탐지: 주요 구문을 검색하여 거의 중복된 페이지 찾기
- 경쟁사 콘텐츠 조사: 특정 주제에 대해 경쟁사 사이트 검색
크로스 스킬 통합
seo-audit (전체 감사)와 함께
/seo audit 중 Firecrawl을 사용할 수 있을 때:
firecrawl_map을 사용하여 모든 사이트 URL 발견- XML 사이트맵(seo-sitemap)과 비교하여 고립/누락된 페이지 찾기
- 심층 분석을 위한 상위 페이지 선택
- 크롤링된 콘텐츠를 모든 하위 에이전트(기술, 콘텐츠, 스키마, 지리)에 전달
- 총 크롤링 가능 페이지 수, URL 패턴, 크롤링 깊이 보고
seo-technical과 함께
- 깨진 링크 탐지: 모든 내부 링크를 크롤링하여 404 확인
- 리디렉션 체인 매핑: 모든 리디렉션을 추적하여 2홉 이상 체인 플래그 지정
- 혼합 콘텐츠 탐지: HTTPS 페이지에서 HTTP 리소스 확인
- 표준 URL 검증: 표준 URL과 실제 URL 비교
seo-sitemap과 함께
- 사이트맵 적용 범위: 크롤링된 페이지 중 사이트맵에 있는 비율
- 고립 페이지: 크롤링으로 발견되었지만 사이트맵에 없는 페이지
- 오래된 사이트맵 항목: 사이트맵에 있지만 404/410을 반환하는 URL
seo-content와 함께
- 콘텐츠 추출: 깔끔한 마크다운을 E-E-A-T 분석에 제공
- 얇은 콘텐츠 탐지: 대규모로 300단어 미만 페이지 식별
- 중복 콘텐츠: 페이지 간 콘텐츠를 비교하여 거의 중복된 내용 찾기
seo-schema와 함께
- 스키마 추출: 모든 크롤링된 페이지에서 JSON-LD 추출
- 스키마 적용 범위: 구조화된 데이터가 있는 페이지 비율
- 스키마 검증: 추출된 스키마 일괄 검증
오류 처리
| 오류 | 원인 | 해결 방법 |
|---|---|---|
FIRECRAWL_API_KEY가 설정되지 않음 | MCP가 구성되지 않음 | ./extensions/firecrawl/install.sh 실행 |
402 Payment Required | 크레딧 소진 | firecrawl.dev/app에서 사용량 확인, 요금제 업그레이드 |
429 Too Many Requests | 속도 제한 | 60초 대기, 크롤링 동시성 감소 |
408 Timeout | 페이지 렌더링이 너무 느림 | timeout 증가, JS 렌더링 없이 시도 |
403 Forbidden | 사이트가 크롤링을 차단함 | robots.txt 확인, 이 사이트 건너뛰기 고려 |
정상적 대체: Firecrawl을 사용할 수 없는 경우 사용자에게 알리고 다음을 제안:
- 단일 페이지 분석에는
fetch_page.py사용 (API 비용 없음) - 기본 HTML 검색에는
WebFetch도구 사용 - Firecrawl 설치:
./extensions/firecrawl/install.sh