用於 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 - 內容盤點:大規模提取所有頁面標題、meta 描述、H1
- SPA/JS 渲染網站:Firecrawl 可渲染 JavaScript,解決第 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 頁
- 地圖操作較便宜(每個發現的 URL 0.5 點數)
- 進行大型爬取前,務必告知使用者預估點數用量
map — 網站結構探索
發現網站上所有 URL,但不擷取內容。快速且節省點數。
MCP 工具: firecrawl_map
參數:
url(必填):要探索的網站 URLlimit:最大發現 URL 數量(預設:5000)search:可選搜尋詞,用於過濾 URL
SEO 使用模式:
- Sitemap 比對:探索網站後,將發現的 URL 與 XML sitemap 比對
- 孤頁檢測:存在於 sitemap 但未從任何頁面鏈接的 URL
- 爬取預算分析:可索引的總頁數 vs 從首頁可達的頁數
- URL 模式分析:辨識 URL 結構模式、重複內容、參數膨脹
- 稽核前探索:先執行 map,再對關鍵區塊進行目標性爬取
輸出: URL 陣列。呈現方式例如:
網站:example.com
發現頁數:342
URL 模式分佈:
/blog/* - 128 頁 (37%)
/products/* - 89 頁 (26%)
/category/* - 45 頁 (13%)
/pages/* - 32 頁 (9%)
/(根頁面) - 48 頁 (14%)
scrape — 單頁深層抓取
抓取單一頁面,並完整執行 JavaScript 渲染。較 fetch_page.py 更徹底,因為它會執行 JS 並等待動態內容。
MCP 工具: firecrawl_scrape
參數:
url(必填):要抓取的頁面 URLformats:輸出格式 —["markdown", "html", "links", "screenshot"]onlyMainContent:移除導航欄、頁尾、側邊欄(預設:true)waitFor:等待內容的 CSS 選擇器或毫秒數timeout:請求超時時間(毫秒,預設:30000)actions:抓取前的瀏覽器動作(點擊、滾動、等待)
SEO 使用模式:
- SPA 內容提取:抓取 JS 渲染的 React/Vue/Angular 頁面
- 動態內容稽核:包含摺疊以下懶加載內容的頁面
- 付費牆/登入檢測:辨識需要驗證才能存取的內容
- 主要內容提取:使用
onlyMainContent進行乾淨的 E-E-A-T 分析 - 螢幕截圖:使用
screenshot格式進行視覺分析
何時使用 scrape 與 fetch_page.py:
| 情境 | 使用 |
|---|---|
| 靜態 HTML 頁面 | fetch_page.py(無 API 成本) |
| JS 渲染的 SPA | firecrawl_scrape(渲染 JS) |
| 需要回應標頭 | fetch_page.py(回傳標頭) |
| 需要乾淨的 Markdown | firecrawl_scrape(提取較佳) |
| 被限速/封鎖 | firecrawl_scrape(處理反爬蟲) |
search — 站內搜尋
在網站內搜尋特定內容。可用於尋找與某主題相關的頁面,無須爬取整個網站。
MCP 工具: firecrawl_search
參數:
query(必填):搜尋查詢url(必填):要搜尋的網站limit:最大結果數(預設:10)scrapeOptions.formats:匹配頁面的輸出格式
SEO 使用模式:
- 內容缺口驗證:在網站上搜尋某關鍵詞,確認是否存在相關內容
- 內部鏈接機會:尋找提及某主題的頁面,可互相建立鏈接
- 重複內容檢測:搜尋關鍵短語,找出近似重複的頁面
- 競爭者內容研究:在競爭者網站上搜尋特定主題
跨技能整合
與 seo-audit(完整稽核)
當 Firecrawl 在 /seo audit 中可用時:
- 使用
firecrawl_map發現所有網站 URL - 與 XML sitemap(seo-sitemap)比對,找出孤頁/遺漏頁面
- 選取重要頁面進行深度分析
- 將爬取內容提供給所有子代理(技術、內容、架構、地理)
- 回報可爬取總頁數、URL 模式與爬取深度
與 seo-technical
- 失效鏈接檢測:爬取所有內部鏈接,檢查是否回傳 404
- 重新導向鏈路對映:追蹤所有重新導向,標記超過 2 跳的鏈路
- 混合內容檢測:檢查 HTTPS 頁面上的 HTTP 資源
- Canonical 驗證:比對 canonical URL 與實際 URL
與 seo-sitemap
- Sitemap 覆蓋率:爬取頁面中有多少存在於 sitemap
- 孤頁:爬取發現但 sitemap 中遺漏的頁面
- 過期 sitemap 項目:存在於 sitemap 但回傳 404/410 的 URL
與 seo-content
- 內容提取:將乾淨的 Markdown 提供給 E-E-A-T 分析
- 內容過薄檢測:大規模找出字數少於 300 字的頁面
- 重複內容:跨頁面比對內容,找出近似重複
與 seo-schema
- 架構提取:從所有爬取頁面中擷取 JSON-LD
- 架構覆蓋率:有結構化資料的頁面比例
- 架構驗證:批次驗證提取的架構
錯誤處理
| 錯誤 | 原因 | 解決方案 |
|---|---|---|
FIRECRAWL_API_KEY not set | 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 成本) - 使用
WebFetch工具進行基本 HTML 取得 - 安裝 Firecrawl:
./extensions/firecrawl/install.sh