🚀 Google Custom Search API
Google Custom Search APIは使用制限付きで無料です(例:無料で1日あたり100回のクエリが可能で、追加のクエリには料金がかかります)。クォータ、価格、制限の詳細については、公式ドキュメントを参照してください。
🚀 Web-curl
開発者: Rayss
🚀 オープンソースプロジェクト
🛠️ Node.jsとTypeScriptで構築されています(Node.js v18以上が必要です)

🎬 デモビデオ
ブラウザで直接デモを見るにはここをクリック
デモビデオ (MP4)
📚 目次
- 概要
- 主な機能
- アーキテクチャ
- インストール
- 使用方法
- 設定
- 使用例
- トラブルシューティング
- ヒントとベストプラクティス
- コントリビューションと問題の報告
- ライセンスと帰属
📝 概要
Web-curl は、ウェブページやAPIからテキストコンテンツを取得および抽出するための強力なツールです。スタンドアロンのCLIとして、またはMCP(Model Context Protocol)サーバーとして使用できます。Web-curlは、堅牢なウェブスクレイピングのためにPuppeteerを利用し、リソースブロッキング、カスタムヘッダー、認証、Google Custom Searchなどの高度な機能をサポートしています。
✨ 主な機能
- 🔎 任意のウェブサイトからテキストコンテンツを取得します。
- 🚫 不要なリソース(画像、スタイルシート、フォント)をブロックして、高速な読み込みを実現します。
- ⏱️ ナビゲーションタイムアウトとコンテンツ抽出の制限を設定できます。
- 💾 結果を標準出力に表示するか、ファイルに保存できます。
- 🖥️ CLIツールまたはMCPサーバーとして使用できます。
- 🌐 カスタムメソッド、ヘッダー、ボディを使用してREST APIリクエストを行うことができます。
- 🔍 Google Custom Searchを統合しています(APIキーとCXが必要です)。
- 🤖 自然言語コマンドを受け付け、適切なツールに自動ルーティングするスマートコマンド機能があります。
- 🛡️ 詳細なエラーログと堅牢なエラーハンドリングが備わっています。
🏗️ アーキテクチャ
- CLIとMCPサーバー:
CLIのエントリポイントとMCPサーバーの両方を実装しており、fetch_webpage、fetch_api、google_search、smart_commandなどのツールを公開しています。
- ウェブスクレイピング: Puppeteerを使用してヘッドレスブラウジング、リソースブロッキング、コンテンツ抽出を行います。
- RESTクライアント:
APIリクエスト用の柔軟なHTTPクライアントを提供しており、CLIとMCPツールの両方で使用されます。
- 設定: CLIオプション、環境変数、ツール引数を介して管理されます。
🔧 MCPサーバーの設定例
Web-curlをMCPサーバーとして統合するには、mcp_settings.jsonに以下の設定を追加してください。
{
"mcpServers": {
"web-curl": {
"command": "node",
"args": [
"build/index.js"
],
"disabled": false,
"alwaysAllow": [
"fetch_webpage",
"fetch_api",
"google_search",
"smart_command"
],
"env": {
"APIKEY_GOOGLE_SEARCH": "YOUR_GOOGLE_API_KEY",
"CX_GOOGLE_SEARCH": "YOUR_CX_ID"
}
}
}
}
🔑 Google APIキーとCXの取得方法
-
Google APIキーの取得:
- Google Cloud Consoleにアクセスします。
- プロジェクトを作成または選択し、APIとサービス > 認証情報に移動します。
- 認証情報の作成 > APIキーをクリックし、キーをコピーします。
-
カスタム検索エンジン(CX)IDの取得:
-
Custom Search APIの有効化:
- Google Cloud Consoleで、APIとサービス > ライブラリに移動します。
- Custom Search APIを検索し、有効にします。
上記の設定で YOUR_GOOGLE_API_KEY と YOUR_CX_ID を置き換えてください。
🛠️ インストール
git clone <repository-url>
cd web-curl
npm install
npm run build
- **Windows:** `npm install` を実行するだけです。
- **Linux:** Chromium用の追加の依存関係をインストールする必要があります。以下のコマンドを実行してください。
```bash
sudo apt-get install -y \
ca-certificates fonts-liberation libappindicator3-1 libasound2 libatk-bridge2.0-0 \
libatk1.0-0 libcups2 libdbus-1-3 libdrm2 libgbm1 libnspr4 libnss3 \
libx11-xcb1 libxcomposite1 libxdamage1 libxrandr2 xdg-utils
詳細については、Puppeteerのトラブルシューティングガイドを参照してください。
---
<a name="usage"></a>
## 🚀 使用方法
### CLIの使用方法
CLIは、ウェブページからテキストコンテンツを取得および抽出することをサポートしています。
```bash
# 基本的な使用方法
node build/index.js https://example.com
# オプションを指定する
node build/index.js --timeout 30000 --no-block-resources https://example.com
# 出力をファイルに保存する
node build/index.js -o result.json https://example.com
コマンドラインオプション
--timeout <ms>: ナビゲーションタイムアウトを設定します(デフォルト: 60000)
--no-block-resources: 画像、スタイルシート、フォントのブロッキングを無効にします
-o <file>: 結果を指定したファイルに出力します
MCPサーバーの使用方法
Web-curlは、Roo Codeや他のMCP互換プラットフォームとの統合のためにMCPサーバーとして実行できます。
公開されているツール
- fetch_webpage: ウェブページからテキストコンテンツを取得します
- fetch_api: REST APIリクエストを行います
- google_search: Google Custom Search APIを使用してウェブを検索します
- smart_command: 自然言語コマンドを受け付け、適切なツールに自動ルーティングします
MCPサーバーとして実行する
npm run start
サーバーは標準入出力を介して通信し、で定義されているツールを公開します。
MCPツールの使用例(fetch_webpage)
{
"name": "fetch_webpage",
"arguments": {
"url": "https://example.com",
"blockResources": true,
"timeout": 60000,
"maxLength": 10000
}
}
Google検索の統合
Google Custom Searchのために以下の環境変数を設定してください。
APIKEY_GOOGLE_SEARCH: あなたのGoogle APIキー
CX_GOOGLE_SEARCH: あなたのカスタム検索エンジンID
🧩 設定
- リソースブロッキング: 画像、スタイルシート、フォントをブロックして、高速なスクレイピングを実現します。
- タイムアウト: ナビゲーションとAPIリクエストのタイムアウトを設定できます。
- カスタムヘッダー: 高度なシナリオのためにカスタムHTTPヘッダーを渡すことができます。
- 認証: ユーザー名とパスワードを使用したHTTP Basic Authをサポートしています。
- 環境変数: Google Search APIの統合に使用されます。
💡 使用例
ウェブページのコンテンツを取得する
{
"name": "fetch_webpage",
"arguments": {
"url": "https://en.wikipedia.org/wiki/Web_scraping",
"blockResources": true,
"maxLength": 5000
}
}
REST APIリクエストを行う
{
"name": "fetch_api",
"arguments": {
"url": "https://api.github.com/repos/nodejs/node",
"method": "GET",
"headers": {
"Accept": "application/vnd.github.v3+json"
}
}
}
Google検索
{
"name": "google_search",
"arguments": {
"query": "web scraping best practices",
"num": 5
}
}
🛠️ トラブルシューティング
- タイムアウトエラー: リクエストがタイムアウトする場合は、
timeout パラメータを増やしてみてください。
- コンテンツがブロックされている場合: コンテンツが欠落している場合は、リソースブロッキングを無効にするか、
resourceTypesToBlock を調整してみてください。
- Google検索が失敗する場合: 環境変数に
APIKEY_GOOGLE_SEARCH と CX_GOOGLE_SEARCH が設定されていることを確認してください。
- バイナリ/不明なコンテンツ: テキスト以外のレスポンスはBase64エンコードされています。
- エラーログ: 詳細なエラーメッセージは
logs/error-log.txt ファイルを確認してください。
🧠 ヒントとベストプラクティス
高度なヒントを表示するにはここをクリック
- 画像やスタイルが必要ない場合は、リソースブロッキングを使用して、高速で軽量なスクレイピングを実現します。
- 大きなページの場合は、
maxLength と startIndex を使用してコンテンツ抽出をページネーションします。
- 常にツールの引数を検証して、エラーを回避します。
- 環境変数を使用して、APIキーや機密データを保護します。
- すべての利用可能なオプションについては、 のMCPツールスキーマを確認してください。
🤝 コントリビューションと問題の報告
コントリビューションは大歓迎です!コントリビュートしたい場合は、このリポジトリをフォークしてプルリクエストを送信してください。
問題を見つけた場合や提案がある場合は、リポジトリページで問題を報告してください。
📄 ライセンスと帰属
このプロジェクトは Rayss によって開発されました。
質問、改善案、またはコントリビューションについては、著者に連絡するか、リポジトリで問題を報告してください。
注意: Google Search APIは使用制限付きで無料です。詳細については、Google Custom Search APIの概要を参照してください。