自動化 CDN 流量報表工具,從 Akamai Control Center 與 AWS CloudFront 擷取數據;同時是 Claude Code Plugin,可直接讓 AI agent 調用
Akamai V2 API 只能取到部分流量指標,但 Control Center 週報需要的多 CP code 彙總、地理流量表、hostname 分類,並沒有穩定對應的 API 端點。
所以改走 browser automation 直接讀 Control Center SPA,再用 URL hash 帶入參數,把對前端操作流程的依賴降到最低。
與直接打 API 的路線取捨,完整比較見 COMPARISON.md(對照 akamai-reports 的 V2 API 版本)。
讀 COMPARISON.md →CLI User / Claude Code Agent → cdn-traffic-report ├── Akamai: 1Password op → agent-browser (Chromium) → SPA DOM → JSON └── CloudFront: AWS CLI → CloudWatch → JSON → output/ JSON + weekly.csv
Akamai Control Center 是純 SPA、無官方報表 API。以 agent-browser 驅動 Chromium,直接擷取 KPI 卡片與地理流量表格的 DOM 數值,補足 API 拿不到的 UI-only 指標。
包裝成 /cdn:cdn-report skill,AI agent 直接調用、跑腳本、讀 JSON、格式化成表格回傳。不只是腳本,是 AI-native、可被 workflow 串接的能力模組。
contract_check 對真實 Akamai UI 比對 selector baseline,偵測改版;mock_site 在 CI 用假 SPA 離線驗證 DOM 擷取。改版前先抓到失效,避免靜默產出空值。
# 使用者只下一句 skill 指令 > /cdn:cdn-report 2026-01-25 2026-01-31 # Agent 自動執行: 1. 讀 SKILL.md 取得指令模板 2. 跑 scripts.akamai_report --start … --end … 3. 讀 output/report_*.json 4. 依 SKILL.md 規則格式化 5. 回傳結構化表格
| 指標 | 流量 |
|---|---|
| Edge | 12.34 TB |
| Origin | 4.56 TB |
| Midgress | 7.89 GB |
| Offload | 56.78 % |
數字為去識別化示意值,非真實流量。
contract_check 用 --save 存下 DOM selector baseline,之後用 --diff 比對真實 Akamai UI;selector 失效時在改版當下就抓到,不會靜默產出空值。
uv run python -m scripts.contract_check --headed --save # 存 baseline uv run python -m scripts.contract_check --headed --diff # 比對偵測改版
tests/mock_site/ 是假的 Akamai SPA(index.html + mock_data.js)。agent-browser 對它跑 integration test,驗證 DOM 擷取邏輯,不需真實帳密、CI 可離線重跑。
uv run pytest tests/test_mock_integration.py -v # 離線跑 agent-browseruv run python -m scripts.refresh_session
uv run python -m scripts.akamai_report \ --start 2026-05-10 --end 2026-05-16 \ --reuse-browser --close-when-done
/cdn:cdn-report 2026-01-25 2026-01-31 /cdn:cdn-report 2026-01-25 2026-01-31 geography /cdn:cdn-report 2026-01-25 2026-01-31 cloudfront
uv run python -m scripts.contract_check \ --headed --diff
{
"date_range": {
"start": "2026-01-25",
"end": "2026-01-31"
},
"type": "summary",
"traffic": {
"edge": 12.34,
"origin": 4.56,
"offload": 56.78
},
"unit": "TB"
}{
"type": "geography",
"geography": {
"TW": 9.87,
"SG": 2.10,
"ID": 0.05
},
"unit": "TB"
}年度 | 週期 edge流量TB | origin流量TB ID | TW | SG v1流量TB | v3流量TB Trailer/EPK | live流量GB TVA流量GB | home流量GB
.claude-plugin/plugin.json # Claude Code Plugin 清單 skills/cdn-report/SKILL.md # Skill 定義 scripts/ akamai_report.py # 主程式 + CLI refresh_session.py # Session + 1Password 登入 browser_helpers.py # agent-browser 封裝 data_extract.py # DOM 擷取 (KPI + 地理表格) contract_check.py # DOM selector 合約驗證 cloudfront.py # AWS CloudWatch 指標 config/settings.yaml.template # 設定範本 tests/ mock_site/ # 本地 mock Akamai SPA