2026年3月22日4 分鐘閱讀ai-agent-workflows

自動化競品分析:終端裡的 AI Agent + 網頁抓取

不要再一個一個開競品網站了。用 MCP server 搭配無頭瀏覽器和 AI CLI agent,在終端裡自動抓取、比對、產出結構化的競爭情報。

DH
Danny Huang

週二早上,三個瀏覽器分頁的深淵

早上九點。產品主管說中午之前要一份最新的競品定價比較。你打開三個瀏覽器分頁 — 每個競品的定價頁一個。你滾動。你把數字複製到試算表。你發現其中一家上個月改了方案。你回去重新確認,然後發現漏掉了藏在「聯繫銷售」按鈕後面的企業方案。你從頭來過。

兩小時後你有了一張比較表。一週內就會過時。下週二,整個流程再來一次。

大多數團隊就是這樣做競品情報的。手動、慢、而且結果的保鮮期跟生魚片差不多。一個產品經理追蹤五個競品的定價、功能和更新紀錄,每週花三到五小時在本質上是機械性的工作:開一個 URL、找到對的數字、複製到表格、重複。

有更好的做法。一個帶無頭瀏覽器的 AI agent 可以自動拜訪每個競品頁面、把你要的資料精確抽取成結構化格式,而且可以平行處理所有競品。三個競品在兩分鐘內分析完,不是兩小時。整個流程在你的 terminal 裡跑,而且你可以排程讓它每週一早上自動執行,完全不用碰瀏覽器。

本文走過完整的設定步驟。具體範例是比較三個 AI CLI 工具的定價頁 — Claude Code、Gemini CLI 和 Codex CLI — 但這個 pattern 適用於任何競品分析場景。

你需要什麼

工具:

  • Claude Code — 負責執行分析的 AI agent。需要 Claude 訂閱(Pro $20/月起)。各 AI CLI 工具的完整比較在 2026 AI CLI 工具完全指南
  • Playwright MCP server — 讓 Claude Code 透過無頭 Chromium 瀏覽器瀏覽網頁。MCP 是 Model Context Protocol 的縮寫 — 它是讓 AI agent 存取外部工具的標準協議。不需要另外安裝 Playwright,MCP server 會處理。
  • Termdock(建議) — 用來同時跑多個 agent session。單一 agent 用任何 terminal 都行。

時間: 初次設定 15 分鐘。之後每次分析不到 10 分鐘。

步驟一:設定 MCP Server 的網頁瀏覽能力

Claude Code 本身不會瀏覽網頁。它需要一個 MCP server 把瀏覽器操作暴露為可呼叫的工具 — 想像成給 agent 一雙手來點擊、一雙眼睛來讀網頁。

Playwright MCP server 啟動一個無頭 Chromium 實例,提供 navigatesnapshotclickevaluate(在頁面上執行 JavaScript)等工具。

在你的專案 .mcp.json 中加入:

{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": ["@anthropic-ai/mcp-playwright@latest"],
      "env": {
        "DISPLAY": ""
      }
    }
  }
}

或設定在 ~/.claude/mcp.json 讓所有專案都能使用網頁瀏覽功能。

啟動 Claude Code 並要求它瀏覽任意 URL 來驗證:

claude
> Navigate to https://example.com and tell me the page title

如果 Claude Code 回傳了頁面標題,就沒問題了。如果它說找不到瀏覽器工具,檢查 npx 能不能找到 @anthropic-ai/mcp-playwright 套件,以及防火牆有沒有擋住 Chromium 的對外連線。

步驟二:定義抽取 Schema

有用的競爭情報和一堆雜亂文字之間的差距,就在一件事:你在開始抽取之前就決定好要抽什麼。這就是 schema 的意義。

定價比較的 schema 長這樣:

## 抽取 Schema:定價頁

針對頁面上找到的每個定價層級,抽取:

- **層級名稱**(例如「Pro」「Enterprise」)
- **月費**(美元,月繳)
- **年費**(美元,年繳折算月均)
- **用量限制**(請求數、token、席位 — 看單位是什麼)
- **主要包含功能**(列出前 5 個差異化功能)
- **主要未包含功能**(相較更高層級的顯著缺失)
- **免費層級細節**(如果有的話)
- **最後驗證日期**(今天的日期)

輸出為 markdown 表格,每個層級一列。

把這個存為 schemas/pricing-comparison.md。你會在 agent prompt 中引用它。Schema 獨立成檔案代表你可以不改 prompt 就切換 — 功能比較用 schemas/feature-comparison.md,更新追蹤用 schemas/changelog-tracker.md。同一個引擎,換不同燃料。

步驟三:撰寫 Agent Prompt

Prompt 告訴 agent 怎麼用瀏覽器工具和 schema。以下是單一競品分析的 prompt:

你是競爭情報分析師。你的任務:

1. 用 playwright 瀏覽器工具導航到指定 URL
2. 對頁面做 snapshot 了解結構
3. 按照下方 schema 抽取定價資訊
4. 如果定價頁連結到子頁面(例如「查看完整功能比較」),
   導航過去並抽取額外資料
5. 輸出結果為結構化 markdown 表格

## 抽取 Schema

[schemas/pricing-comparison.md 的內容]

## 目標

- 公司:{COMPANY_NAME}
- URL:{PRICING_URL}

## 規則

- 只抽取頁面上可見的資料。不推測、不猜測。
- 如果某個資料點不存在,寫「未列出」而非猜測。
- 在輸出中包含每個資料點的來源 URL。

步驟四:執行單一競品分析

在擴展到平行執行之前,先用一個競品測試。先做 prototype,再 scale。

claude --prompt "$(cat <<'EOF'
你是競爭情報分析師。用 playwright 瀏覽器工具
導航到 https://claude.ai/pricing 並抽取所有定價層級資訊。

針對每個層級,抽取:
- 層級名稱
- 月費(美元)
- 用量限制(每個時段訊息數、功能)
- 主要包含功能(前 5 項)

輸出為乾淨的 markdown 表格。只包含頁面上可見的資料。
EOF
)"

Claude Code 會:

  1. 透過 Playwright MCP server 啟動無頭瀏覽器
  2. 導航到定價 URL
  3. 對頁面做 snapshot 了解 DOM 結構
  4. 抽取定價資料
  5. 格式化並回傳 markdown 表格

單頁抽取通常需要 30-60 秒。有動態內容的頁面(JavaScript 渲染的定價計算器、互動式滑桿)會更久,因為 agent 可能需要跟 UI 元素互動才能看到所有層級。

處理動態內容

有些定價頁把真正的價格藏在分頁、切換或「顯示更多」按鈕後面,得點兩層才看得到。Playwright MCP server 的 click 工具處理這個:

導航到頁面後:
1. Snapshot 頁面
2. 如果有「月繳」和「年繳」的分頁,點擊每個分頁並抽取兩組價格
3. 如果有「查看所有功能」或「比較方案」的連結,點擊並抽取完整的功能矩陣

你描述要找什麼。Agent 決定要點擊哪些元素。就像跟研究助理說「年繳價格也幫我抓一下」,而不是自己寫 CSS selector。

步驟五:擴展到平行執行

一次處理一個競品已經比手動快了。三個競品同時跑,數學完全不一樣。

平行模式

開三個 terminal 面板。在 Termdock 中,把視窗分成三個垂直面板。在每個面板中,啟動一個 Claude Code session 針對不同競品:

面板 1 — Claude Code 定價:

claude --prompt "分析 https://claude.ai/pricing 的定價。抽取所有層級、\
價格、用量限制和主要功能。輸出為 markdown 表格。" \
> output/claude-code-pricing.md

面板 2 — Gemini CLI 定價:

claude --prompt "分析 https://ai.google.dev/gemini-api/docs/pricing 的定價。\
抽取所有層級、價格、速率限制和主要功能。輸出為 markdown 表格。" \
> output/gemini-cli-pricing.md

面板 3 — Codex CLI 定價:

claude --prompt "分析 https://openai.com/chatgpt/pricing/ 的定價。\
抽取所有層級、價格、用量限制和主要功能。輸出為 markdown 表格。" \
> output/codex-cli-pricing.md

三個 agent 同時跑。每個啟動自己的無頭瀏覽器實例,導航到目標 URL,獨立抽取資料。實際花費時間:三個加起來 1-2 分鐘,對比依序執行的 6-10 分鐘。

為什麼平行 Agent 需要獨立面板

每個 Claude Code session 維護自己的 MCP server 連線和瀏覽器實例。它們不共享狀態。這是特性,不是限制。共享 cookie 或快取的瀏覽器 session 會在競品之間洩漏狀態 — 想像一個 session 的登入 token 跑進另一個。隔離的 session 保證乾淨的抽取。

實際需求:每個 agent 需要一個 terminal。像 Termdock 這樣的 terminal multiplexer 讓這件事變得可管理。你在一個視窗中看到所有三個 agent 同時工作、即時抓到錯誤、如果某個網站暫時掛掉就重跑那一個 agent — 不影響其他的。

步驟六:合併與比較

三個 agent 都完成後,你有了個別的 markdown 檔案。最後一哩路是把它們餵回一個 agent 做跨競品比較:

claude --prompt "$(cat <<'EOF'
我有三份競品定價分析。比較它們並產出:

1. 統一的比較表,所有競品為欄位
2. 三種開發者類型的「最佳性價比」建議:
   - 獨立開發者,預算有限
   - 專業開發者,中度使用
   - 團隊負責人,跨多專案重度使用
3. 關鍵差異化:每個工具有什麼是其他工具沒有的?

## 競品資料

### Claude Code
$(cat output/claude-code-pricing.md)

### Gemini CLI
$(cat output/gemini-cli-pricing.md)

### Codex CLI
$(cat output/codex-cli-pricing.md)
EOF
)" > output/competitive-comparison.md

輸出是一份文件,包含:

  • 標準化的比較表格(所有價格統一格式、相同的層級分類)
  • 定性分析(差異化因素、缺口、定位)
  • 針對每種使用者類型的可行動建議

這就是你會寄給產品團隊、放進策略文件、或用來做定價決策的交付物。花了五分鐘,不是五小時。

變成每週可重複執行的任務

跑一次的競品分析很有用。每週一早上你倒咖啡時自動跑完的競品分析是策略優勢。

自動化腳本

#!/bin/bash
# weekly-competitive-analysis.sh
# 執行方式:bash weekly-competitive-analysis.sh

set -euo pipefail

DATE=$(date +%Y-%m-%d)
OUTPUT_DIR="competitive-intel/$DATE"
mkdir -p "$OUTPUT_DIR"

COMPETITORS=(
  "Claude Code|https://claude.ai/pricing"
  "Gemini CLI|https://ai.google.dev/gemini-api/docs/pricing"
  "Codex CLI|https://openai.com/chatgpt/pricing/"
)

SCHEMA=$(cat schemas/pricing-comparison.md)

# 階段一:平行抽取
PIDS=()
for entry in "${COMPETITORS[@]}"; do
  IFS='|' read -r name url <<< "$entry"
  slug=$(echo "$name" | tr '[:upper:]' '[:lower:]' | tr ' ' '-')

  claude --prompt "你是競爭情報分析師。\
用 playwright 瀏覽器工具導航到 $url。\
按照此 schema 抽取定價資料:$SCHEMA \
公司:$name。輸出為 markdown。" \
    > "$OUTPUT_DIR/${slug}-raw.md" &

  PIDS+=($!)
done

# 等待所有抽取完成
for pid in "${PIDS[@]}"; do
  wait "$pid"
done

echo "抽取完成。合併中..."

# 階段二:合併與比較
COMBINED=""
for entry in "${COMPETITORS[@]}"; do
  IFS='|' read -r name url <<< "$entry"
  slug=$(echo "$name" | tr '[:upper:]' '[:lower:]' | tr ' ' '-')
  COMBINED+="### $name\n$(cat "$OUTPUT_DIR/${slug}-raw.md")\n\n"
done

claude --prompt "比較這些競品定價分析。\
產出統一比較表和關鍵差異化因素。\
資料:$COMBINED" \
  > "$OUTPUT_DIR/comparison-report.md"

echo "報告已儲存到 $OUTPUT_DIR/comparison-report.md"

排程執行

加到 crontab,每週一早上自動跑:

# 每週一早上 8:00 執行競品分析
0 8 * * 1 cd /path/to/project && bash weekly-competitive-analysis.sh

或者如果你偏好手動觸發,建立一個 alias:

alias comp-analysis='cd /path/to/project && bash weekly-competitive-analysis.sh'

追蹤跨週變化

每次執行都存到日期標記的目錄。偵測兩週之間有什麼改變:

diff competitive-intel/2026-03-15/comparison-report.md \
     competitive-intel/2026-03-22/comparison-report.md

或者請 Claude Code 用白話摘要差異:

claude --prompt "比較這兩份每週競品報告,標出什麼改變了:\
定價更新、新層級、移除的功能、定位轉變。\
\
3 月 15 日那週:$(cat competitive-intel/2026-03-15/comparison-report.md) \
\
3 月 22 日那週:$(cat competitive-intel/2026-03-22/comparison-report.md)"

這給你一份競品動態的 changelog — 價格變動、新層級、功能新增 — 不用自己每頁去看。幾個月下來,這些 diff 累積成你的競爭版圖時間軸。

延伸到定價以外的場景

Pattern 不變,不管你抽的是什麼。換 schema 和 URL 就好,其他都一樣。

功能比較: 把 schema 改成抽取功能列表、整合支援、平台可用性。把 agent 導航到功能頁而不是定價頁。

更新紀錄監控: 把 agent 指向 /changelog/releases 頁面。抽取日期、版本號和功能描述。跟上週的抽取結果做 diff,看看對手出了什麼貨。

徵才分析: 抓取競品的職缺頁面,了解他們的招聘重點。一家公司突然發了五個 ML 工程師職缺,那就是在公開宣布之前就釋放策略轉向的訊號。

文件深度: 計算競品文件的頁數、章節數和 code example 數。文件品質和開發者採用率正相關。一個競品的 code example 是你的兩倍,那它在 onboarding 的戰場上正在贏。

每種變體只需要一個新的 schema 檔案和更新的 URL。抽取、平行執行和比較的 pipeline 維持不變。

實際限制和對策

速率限制: 有些網站會擋快速的自動請求。Playwright MCP server 的行為像真實瀏覽器 — 它跑的是完整的 Chromium,帶真實的 user agent — 能避開多數的機器人偵測。如果你真的碰到速率限制,在 prompt 中加入指令:「每次換頁之間等 3 秒。」

JavaScript 密集頁面: 動態渲染定價的 SPA 完全沒問題。Chromium 會完整執行 JavaScript。Agent 可以等元素渲染完成再抽取資料。

登入限制內容: 如果競品資料需要認證,你可以在 Playwright session 中預設 cookie,或讓 agent 執行登入流程。這比較脆弱,而且需要維護帳號密碼 — 只在資料真的在登入牆後面時才用。

準確度驗證: AI 抽取不是萬無一失的。重大商業決策的資料,記得抽檢抽取結果和實際頁面。Agent 在輸出中包含了來源 URL,就是為了這個目的。信任,但要驗證。

工作流總結

步驟做什麼時間
1. 設定 MCP一次性的 Playwright MCP 設定5 分鐘(一次)
2. 定義 schema撰寫你的使用場景的抽取 schema10 分鐘(一次)
3. 平行抽取N 個 agent 同時抓 N 個競品1-2 分鐘
4. 合併比較一個 agent 綜合所有資料1-2 分鐘
5. 檢查輸出抽查比較表2-3 分鐘
每次執行合計5-7 分鐘

對比手動工作流:每次分析 2-5 小時,結果在你完成前就過時了,而且沒有結構化的方式看跨週變化。

放在更大的脈絡中

競品分析只是一個 workflow。AI Agent 工作流指南涵蓋完整的 terminal 自動化模式 — 從每日站會報告到資料分析 pipeline 到多 agent code review。每一個都遵循相同的結構:定義任務、設定工具、讓 agent 平行執行、merge 結果。

這個 workflow 的運行成本很低。三個 Claude Code session 各抽取一個頁面,只用掉你每日訊息額度的一小部分。如果你在意成本,AI CLI 工具省錢工作流說明了如何根據複雜度把不同任務路由到不同工具。針對競品分析這個場景,Claude Code 的 structured output 品質值得這個成本 — 免費 AI CLI 工具排行列出了免費替代方案供你實驗。

平行執行模式 — 多個 agent,每個處理一個競品,全部同時跑 — 就是 Termdock 發揮價值的地方。把 terminal 分成三個面板、在每個裡面啟動一個 agent、看著三個同時抽取資料。一個原本吃掉你整個週二早上的任務,現在在你第一杯咖啡還沒喝完就跑完了。試一次。你不會想回到分頁和試算表的。

DH
Free Download

Ready to streamline your terminal workflow?

Multi-terminal drag-and-drop layout, workspace Git sync, built-in AI integration, AST code analysis — all in one app.

Download Termdock →
#ai-agent#competitive-analysis#web-scraping#mcp#playwright#claude-code#terminal-automation

相關文章