web-scrape
指定されたウェブサイトから必要な情報を抽出し、様々な形式で出力、エラーにも対応できる、効率的な情報収集をサポートするSkill。
📜 元の英語説明(参考)
Intelligent web scraper with content extraction, multiple output formats, and error handling
🇯🇵 日本人クリエイター向け解説
指定されたウェブサイトから必要な情報を抽出し、様々な形式で出力、エラーにも対応できる、効率的な情報収集をサポートするSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o web-scrape.zip https://jpskill.com/download/16693.zip && unzip -o web-scrape.zip && rm web-scrape.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/16693.zip -OutFile "$d\web-scrape.zip"; Expand-Archive "$d\web-scrape.zip" -DestinationPath $d -Force; ri "$d\web-scrape.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
web-scrape.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
web-scrapeフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 2
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
Web Scraping Skill v3.0
使い方
/web-scrape <url> [options]
オプション:
--format=markdown|json|text- 出力形式 (デフォルト: markdown)--full- ページ全体のコンテンツを含める (スマート抽出をスキップ)--screenshot- スクリーンショットも保存--scroll- 動的なコンテンツをロードするためにスクロールする (無限スクロールページ)
例:
/web-scrape https://example.com/article
/web-scrape https://news.site.com/story --format=json
/web-scrape https://spa-app.com/page --scroll --screenshot
実行フロー
フェーズ 1: ナビゲートとロード
1. mcp__playwright__browser_navigate
url: "<target URL>"
2. mcp__playwright__browser_wait_for
time: 2 (初期レンダリングを許可)
--scroll オプションの場合: レイジーローディングをトリガーするためにスクロールシーケンスを実行します:
3. mcp__playwright__browser_evaluate
function: "async () => {
for (let i = 0; i < 3; i++) {
window.scrollTo(0, document.body.scrollHeight);
await new Promise(r => setTimeout(r, 1000));
}
window.scrollTo(0, 0);
}"
フェーズ 2: コンテンツのキャプチャ
4. mcp__playwright__browser_snapshot
→ すべてのテキストコンテンツを含む完全なアクセシビリティツリーを返します
--screenshot オプションの場合:
5. mcp__playwright__browser_take_screenshot
filename: "scraped_<domain>_<timestamp>.png"
fullPage: true
フェーズ 3: ブラウザを閉じる
6. mcp__playwright__browser_close
スマートコンテンツ抽出
スナップショットを取得した後、インテリジェントな抽出を適用します:
ステップ 1: コンテンツタイプの特定
| ページタイプ | 指標 | 抽出戦略 |
|---|---|---|
| 記事/ブログ | <article>、長い段落、日付/著者 |
メインの記事本文を抽出 |
| 製品ページ | 価格、"Add to Cart"、仕様 | タイトル、価格、説明、仕様を抽出 |
| ドキュメント | コードブロック、見出しの階層 | 構造とコードを保持 |
| リスト/検索 | 繰り返されるアイテムパターン | 構造化されたリストとして抽出 |
| ランディングページ | ヒーローセクション、CTA | 主要なメッセージングを抽出 |
ステップ 2: ノイズのフィルタリング
常に以下の要素を出力から削除します:
- ナビゲーションメニューとパンくずリスト
- フッターコンテンツ (著作権、リンク)
- サイドバー (広告、関連記事、ソーシャルリンク)
- Cookie バナーとポップアップ
- コメントセクション (特に要求されない限り)
- 共有ボタンとソーシャルウィジェット
- ログイン/サインアッププロンプト
ステップ 3: コンテンツの構造化
記事の場合:
# [タイトル]
**ソース:** [URL]
**日付:** [利用可能な場合]
**著者:** [利用可能な場合]
---
[クリーンな Markdown でのメインコンテンツ]
製品ページの場合:
# [製品名]
**価格:** [価格]
**在庫状況:** [在庫あり/在庫切れ]
## 説明
[製品説明]
## 仕様
| 仕様 | 値 |
|------|-------|
| ... | ... |
出力形式
Markdown (デフォルト)
適切な見出し、リスト、および書式設定を備えた、クリーンで読みやすい Markdown。
JSON
{
"url": "https://...",
"title": "Page Title",
"type": "article|product|docs|list",
"content": {
"main": "...",
"metadata": {}
},
"extracted_at": "ISO timestamp"
}
Text
最小限の書式設定のプレーンテキスト。さらなる処理に適しています。
エラー処理
ナビゲーションエラー
| エラー | 検出 | アクション |
|---|---|---|
| タイムアウト | ページが 30 秒でロードされない | エラーを報告し、再試行を提案 |
| 404 Not Found | タイトル/コンテンツに "404" がある | "ページが見つかりません" を報告 |
| 403 Forbidden | "403"、"Access Denied" | アクセス制限を報告 |
| CAPTCHA | "captcha"、"verify you're human" | CAPTCHA が検出されたことを報告し、続行できない |
| ペイウォール | "subscribe"、"premium content" | 表示可能なコンテンツを抽出し、ペイウォールをメモ |
リカバリーアクション
ページロードが失敗した場合:
1. 特定のエラーをユーザーに報告
2. 以下を提案: "再試行しますか?" または "別の URL を試しますか?"
3. ブラウザをきれいに閉じる
コンテンツがブロックされている場合:
1. 検出された内容 (CAPTCHA/ペイウォール/地域ブロック) を報告
2. 利用可能なプレビューコンテンツを抽出
3. 該当する場合は代替案を提案
高度なシナリオ
シングルページアプリケーション (SPA)
1. URL に移動
2. JS ハイドレーションのために長く待つ (3〜5 秒)
3. 特定のテキストがわかっている場合は、browser_wait_for を使用
4. その後、スナップショット
無限スクロールページ
1. ナビゲート
2. スクロールループを実行 (フェーズ 1 を参照)
3. スクロール完了後にスナップショット
クリックしてコンテンツを表示するページ
1. 最初にスナップショットを撮り、クリック可能な要素を特定
2. "Read more" / "Show all" ボタンで browser_click を使用
3. 少し待つ
4. 完全なコンテンツのために再度スナップショット
複数ページのアーティクル
1. 最初のページをスクレイピング
2. "Next" またはページネーションリンクを特定
3. ユーザーに質問: "記事には X ページあります。すべてスクレイピングしますか?"
4. はいの場合、ページを反復処理して結合
パフォーマンスガイドライン
| メトリクス | 目標 | 方法 |
|---|---|---|
| 速度 | < 15 秒 | 最小限の待機、可能な場合は並列処理 |
| トークン使用量 | < 5000 トークン | スマート抽出、フル DOM ではない |
| 信頼性 | > 95% 成功 | 適切なエラー処理 |
セキュリティに関する注意
- ページから任意の JavaScript を実行しないでください
- 不審なドメインへのリダイレクトに従わないでください
- フォームを送信したり、ログインボタンをクリックしたりしないでください
- 認証が必要なページをスクレイピングしないでください (ユーザーが認証情報フローを提供しない限り)
- ユーザーによって言及された場合は、robots.txt を尊重してください
クイックリファレンス
最小限の実行可能なスクレイピング (4 つのツール呼び出し):
1. browser_navigate → 2. browser_wait_for → 3. browser_snapshot → 4. browser_close
フル機能のスクレイピング (スクロール + スクリーンショット付き):
1. browser_navigate
2. browser_wait_for
3. browser_evaluate (スクロール)
4. browser_snapshot
5. browser_take_screenshot
6. browser_close
覚えておいてください: 目標は、生の HTML/DOM ダンプではなく、クリーンで役立つコンテンツをユーザーに提供することです。
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
Web Scraping Skill v3.0
Usage
/web-scrape <url> [options]
Options:
--format=markdown|json|text- Output format (default: markdown)--full- Include full page content (skip smart extraction)--screenshot- Also save a screenshot--scroll- Scroll to load dynamic content (infinite scroll pages)
Examples:
/web-scrape https://example.com/article
/web-scrape https://news.site.com/story --format=json
/web-scrape https://spa-app.com/page --scroll --screenshot
Execution Flow
Phase 1: Navigate and Load
1. mcp__playwright__browser_navigate
url: "<target URL>"
2. mcp__playwright__browser_wait_for
time: 2 (allow initial render)
If --scroll option: Execute scroll sequence to trigger lazy loading:
3. mcp__playwright__browser_evaluate
function: "async () => {
for (let i = 0; i < 3; i++) {
window.scrollTo(0, document.body.scrollHeight);
await new Promise(r => setTimeout(r, 1000));
}
window.scrollTo(0, 0);
}"
Phase 2: Capture Content
4. mcp__playwright__browser_snapshot
→ Returns full accessibility tree with all text content
If --screenshot option:
5. mcp__playwright__browser_take_screenshot
filename: "scraped_<domain>_<timestamp>.png"
fullPage: true
Phase 3: Close Browser
6. mcp__playwright__browser_close
Smart Content Extraction
After getting the snapshot, apply intelligent extraction:
Step 1: Identify Content Type
| Page Type | Indicators | Extraction Strategy |
|---|---|---|
| Article/Blog | <article>, long paragraphs, date/author |
Extract main article body |
| Product Page | Price, "Add to Cart", specs | Extract title, price, description, specs |
| Documentation | Code blocks, headings hierarchy | Preserve structure and code |
| List/Search | Repeated item patterns | Extract as structured list |
| Landing Page | Hero section, CTAs | Extract key messaging |
Step 2: Filter Noise
ALWAYS REMOVE these elements from output:
- Navigation menus and breadcrumbs
- Footer content (copyright, links)
- Sidebars (ads, related articles, social links)
- Cookie banners and popups
- Comments section (unless specifically requested)
- Share buttons and social widgets
- Login/signup prompts
Step 3: Structure the Content
For Articles:
# [Title]
**Source:** [URL]
**Date:** [if available]
**Author:** [if available]
---
[Main content in clean markdown]
For Product Pages:
# [Product Name]
**Price:** [price]
**Availability:** [in stock/out of stock]
## Description
[product description]
## Specifications
| Spec | Value |
|------|-------|
| ... | ... |
Output Formats
Markdown (default)
Clean, readable markdown with proper headings, lists, and formatting.
JSON
{
"url": "https://...",
"title": "Page Title",
"type": "article|product|docs|list",
"content": {
"main": "...",
"metadata": {}
},
"extracted_at": "ISO timestamp"
}
Text
Plain text with minimal formatting, suitable for further processing.
Error Handling
Navigation Errors
| Error | Detection | Action |
|---|---|---|
| Timeout | Page doesn't load in 30s | Report error, suggest retry |
| 404 Not Found | "404" in title/content | Report "Page not found" |
| 403 Forbidden | "403", "Access Denied" | Report access restriction |
| CAPTCHA | "captcha", "verify you're human" | Report CAPTCHA detected, cannot proceed |
| Paywall | "subscribe", "premium content" | Extract visible content, note paywall |
Recovery Actions
If page load fails:
1. Report the specific error to user
2. Suggest: "Try again?" or "Different URL?"
3. Close browser cleanly
If content is blocked:
1. Report what was detected (CAPTCHA/paywall/geo-block)
2. Extract any available preview content
3. Suggest alternatives if applicable
Advanced Scenarios
Single Page Applications (SPA)
1. Navigate to URL
2. Wait longer (3-5 seconds) for JS hydration
3. Use browser_wait_for with specific text if known
4. Then snapshot
Infinite Scroll Pages
1. Navigate
2. Execute scroll loop (see Phase 1)
3. Snapshot after scrolling completes
Pages with Click-to-Reveal Content
1. Snapshot first to identify clickable elements
2. Use browser_click on "Read more" / "Show all" buttons
3. Wait briefly
4. Snapshot again for full content
Multi-page Articles
1. Scrape first page
2. Identify "Next" or pagination links
3. Ask user: "Article has X pages. Scrape all?"
4. If yes, iterate through pages and combine
Performance Guidelines
| Metric | Target | How |
|---|---|---|
| Speed | < 15 seconds | Minimal waits, parallel where possible |
| Token Usage | < 5000 tokens | Smart extraction, not full DOM |
| Reliability | > 95% success | Proper error handling |
Security Notes
- Never execute arbitrary JavaScript from the page
- Don't follow redirects to suspicious domains
- Don't submit forms or click login buttons
- Don't scrape pages that require authentication (unless user provides credentials flow)
- Respect robots.txt when mentioned by user
Quick Reference
Minimum viable scrape (4 tool calls):
1. browser_navigate → 2. browser_wait_for → 3. browser_snapshot → 4. browser_close
Full-featured scrape (with scroll + screenshot):
1. browser_navigate
2. browser_wait_for
3. browser_evaluate (scroll)
4. browser_snapshot
5. browser_take_screenshot
6. browser_close
Remember: The goal is to deliver clean, useful content to the user, not raw HTML/DOM dumps.
同梱ファイル
※ ZIPに含まれるファイル一覧。`SKILL.md` 本体に加え、参考資料・サンプル・スクリプトが入っている場合があります。
- 📄 SKILL.md (5,917 bytes)
- 📎 scripts/html_clean.js (1,512 bytes)