---
title: "プロンプトからKiroとBright Dataでウェブスクレイパーを構築する"
slug: web-scrapers-with-kiro-power
date: 2026-06-29T07:57:18+00:00
modified: 2026-06-29T07:57:18+00:00
permalink: https://brightdata.jp/blog/ai/web-scrapers-with-kiro-power
type: blog
---

[ ブログ ](https://brightdata.jp/blog "ブログ") / [AI](https://brightdata.jp/blog/ai)







 [AI](https://brightdata.jp/blog/ai)

# プロンプトからKiroとBright Dataでウェブスクレイパーを構築する

プロンプトからBright DataのKiro Powerでウェブスクレイパーを作成します。

 9 分読





 [ ![Satyam Tripathi](https://media.brightdata.jp/2024/09/Satyam-Tripathi-50x50.png) ](https://brightdata.com/blog/authors/satyam-tripathi)

 [Satyam Tripathi

Technical Writer

 ](https://brightdata.com/blog/authors/satyam-tripathi)





 ![Kiro Power with Bright Data](https://media.brightdata.jp/2026/06/kiro-bright-data-web-mcp.png)





サイトがマークアップを変更したり、アクセスをブロックし始めると、ウェブスクレイパーは動作しなくなります。[`brightdata-scrape` Kiro Power](https://github.com/brightdata/kiro-powers/tree/main/brightdata-scrape)は、平易な言語のプロンプトからスクレイパーを作成し、アンブロッキングとパースを処理するBright DataのBright Data MCPに対して実行します。このガイドでは、1つの再現可能なPowerパターンを4つのユースケースに適用し、そのうち2つはライブAPIの実行まで完結します。これには、ChatGPTがあなたのブランドに言及しているかを確認するユースケースも含まれます。

### TL;DR

最終的には、4つのユースケースに適用できる1つのPowerパターンを習得できます。各ユースケースは1つの平易な言語プロンプトで動作し、そのうち2つはライブAPIの実行まで完結します：

- **小売価格トラッカー**：AmazonとWalmartで1つの商品を追跡します。
- **ブランド可視性モニター**：AIアシスタントがあなたのブランドに言及しているかを確認します。
- **LinkedInリードジェンパイプライン**：見込み客リストの転職情報を監視します。
- **Crunchbaseインテルダッシュボード**：企業ごとに数十のライブフィールドを取得します。

![Kiroエージェント：search_engineとscrape_as_markdownを実行し、Sony WH-1000XM5のAmazonライブ価格$248.00と在庫状態を返します。0.9クレジット。](https://media.brightdata.jp/2026/06/kiro-bright-data-1.png)*Kiroエージェントは2つのライブツール呼び出しを行います（search\_engine、次にscrape\_as\_markdown）。そして実際のAmazon価格$248を返します。*

### Kiro Powerとは？

KiroはAWSが構築したAI IDEです。Powerはマニフェスト、MCPサーバー設定、ステアリングファイル、コードテンプレートを含むフォルダ形式のKiro独自の拡張フォーマットです。Kiroはプロンプトによって起動されたときのみPowerをコンテキストに読み込みます。[kiro.dev/powersの公式カタログ](https://kiro.dev/powers)を参照してください。Bright DataはGitHubで`brightdata-scrape`を別途公開しているため、直接インポートできます。

PowerはClaude Skillsと1つの重要な点で異なります：各PowerにはMCP（Model Context Protocol）サーバー設定がすでに含まれています。そのためエージェントは指示だけでなく、呼び出せる新しいツールを取得します。`brightdata-scrape`の場合、そのサーバーはBright DataのBright Data MCPです。

このエンドポイントはWeb Unlocker、SERP API、Browser API、およびBright Dataの事前構築済みデータセットカタログを提供します。Bright DataのMCPを使用すると、エージェントは1回のツール呼び出しでそれらを使用できます。これらのツール（`search_engine`、`scrape_as_markdown`、50の`web_data_*` Proツール、`scraping_browser_*`、`discover`）は、かつて3つの別々の統合（プロキシ、SERP API、ブラウザファーム）が必要だったものを、1セットの認証情報と1つのリトライパターンに置き換えます。

### brightdata-scrape Kiro Powerのインストール

プロジェクトのセットアップと接続確認には5つのステップがあります：

1. **Bright Data APIトークンを取得します。[ユーザーとAPIキー](/cp/setting/users) → APIキー**で、**ユーザー**権限を持つキーを追加し、有効期限を設定して値をコピーします。無料ティアにクレジットカードは不要です。
2. **Kiroをインストールし、プロジェクトを作成して開きます。**[Kiro](https://kiro.dev/downloads)をダウンロードしてインストールします。Powerが機能するにはプロジェクトが必要で、このガイドではNext.jsを使用します。プロジェクトを作成してKiroで`price-tracker`フォルダを開きます：

npx create-next-app@latest price-tracker \\

–typescript, app, tailwind, src-dir, use-npm

cd price-tracker

今は他に何もインストールする必要はありません。Kiroは後でフェーズ3で生成されたスクレイパーが必要とするパッケージを追加します。

1. **Powerをインストールします。**Kiroのパネル（左のアクティビティバーのアイコン）を開きます。**カスタムPowerを追加**をクリックし、**GitHubからPowerをインポート**を選択して、このURLを貼り付けます：

https://github.com/brightdata/kiro-powers/tree/main/brightdata-scrape

![Kiroカスタムパワー追加モーダル：brightdata-scrapeのGitHub URLが入力フィールドに貼り付けられ、'Enterキーで確認'のヒントが表示されています。](https://media.brightdata.jp/2026/06/kiro-bright-data-2.png)1. **Kiroにトークンを渡します。**Powerをインストールすると、プロジェクトの`.kiro/settings/mcp.json`にURL `https://mcp.brightdata.com/mcp?token=${BRIGHTDATA_API_KEY}`を持つ`brightdata`サーバーが追加されます。**そのファイルを開き、`${BRIGHTDATA_API_KEY}`をステップ1でコピーしたリテラルトークンに置き換えて保存します。**次に`.kiro/settings/mcp.json`を`.gitignore`に追加して、トークンがコミットされないようにします。

&gt; **なぜリテラルトークンで、`${…}`プレースホルダーではないのか？**Kiroは現在`mcp.json`内の`${VAR}`を展開しません（[既知の未解決の問題](https://github.com/kirodotdev/Kiro/issues/5060)）。そのためプレースホルダーでは接続の代わりに`Connection Failed` / `HTTP 404`が返されます。

1. **接続を確認します。**MCPサーバーパネルを再度開きます。数秒後、`brightdata`がそのツールの中に`search_engine`と`scrape_as_markdown`を含む**接続済み**状態として表示されます。これが必要なシグナルです。

![Kiro IDE MCPサーバーパネル：brightdata-scrape Kiro Powerのインストール後、brightdataが接続済み（5ツール）と表示されています。](https://media.brightdata.jp/2026/06/kiro-bright-data-3.png)次にプロジェクトルートに`.env.local`を作成し、同じトークンを入力します。トークンを2回貼り付けるのは意図的です：`.kiro/settings/mcp.json`のコピー（ステップ4）はビルド中に*Kiro*をBright Dataに接続し、このコピーは実行時に*生成されたアプリ*によって読み取られます。

```none
BRIGHTDATA_API_KEY=...          # 上記で生成したトークン
BRIGHTDATA_UNLOCKER_ZONE=...    # 小売ビルドではプレースホルダーで問題なし；Web Unlockerユースケースの前に設定
```

新規アカウントの場合、またはWeb Unlockerユースケースを実行する前に、まずゾーン名を設定します。以下の*4つのユースケースを本番環境にスケールする*の**Web Unlockerゾーンの設定**を参照してください。

4つのユースケースすべてで、プロンプトのみが変わります。4フェーズのワークフローは同じです。

### Kiroの4フェーズワークフロー（4つすべてに共通のパターン）

Powerはすべてのプロンプトに対して同じ4つのフェーズを実行します。各フェーズは続行前にあなたの承認を待ちます：

1. **検出と計画。**Powerはワークスペースのマニフェスト（`package.json`、`pyproject.toml`、`Cargo.toml`、`go.mod`など）とその中の依存関係を確認します。次に統合方法を選択します：ウェブフレームワークが見つかった場合はAPIルートを生成し、エージェントSDKが見つかった場合はエージェントツールを生成し、プロジェクトがライブラリの場合はモジュールを生成します。何をスクレイピングするか、アイテム数はいくつかを尋ねます。

1. **スクレイピングプレイブック。**PowerはBright Dataのツールラダーを確認し、各ターゲットサイトに対して、あなたのティアで許可される最適なパスを選択します：**Web Data Proツール**（30以上のプラットフォームにわたる50の`web_data_*`ツール、型付きフィールド、`&pro=1`が必要）→**[データセットトリガー](/products/datasets)**（同じデータ、ポーリング、`&pro=1`不要）→**[Web Unlocker](/products/web-unlocker)**（ロングテールサイト向けのプロキシ+パース）→**[Browser API](/products/scraping-browser)**（ログイン/クリックフロー）→**[SERP API](/products/serp-api)**（検索結果）。

![Kiroフェーズ2：AmazonとWalmartに事前構築済みデータセットが選択され、'フェーズ3に進む準備はできましたか？'の確認ゲートが表示されています。0.38クレジット、1分24秒。](https://media.brightdata.jp/2026/06/kiro-bright-data-4.png)1. **統合。**Powerがファイルを生成します。以下の小売実行では4つのファイルが生成されました：スクレイパーモジュール、APIルート、ダッシュボードページ、そして`README.md`の新しい`## ウェブスクレイピング`セクションです。（`.env.local`にすでにAPIトークンがあったため、フェーズ3はそれをスキップしました。これはファイル安全ルールです：既存のファイルは上書きしません。）

![Kiroチャット：brightdata-scrape PowerのフェーズPhase 3完了を示す画面。4ファイルが書き込まれ、TypeScriptエラーゼロ、1.38クレジット、1分56秒使用。](https://media.brightdata.jp/2026/06/kiro-bright-data-5.png)1. **MCPと検証。**PowerはBright DataのMCPサーバーを`.kiro/settings/mcp.json`にマージし、ターゲットURLに対してスモークテストを実行します。このフェーズでは2つの本番セーフガードが実行されます：上書き前の差分確認と、FAIL → ITERATEリカバリーです。ユースケース1のフェーズ4でリカバリーの全容を示します。

### ライブで実行したものと表示内容

**ここに記載されているものはすべてライブAPIに対して検証済みであり、モックアップではありません。**正確な価格、ツール、タイミングは特定のキャプチャされた実行から取得されています。スクレイパーはライブデータを読み取るため、あなた自身の結果はキャプチャされたものではなく、現在の価格、ページ、モデルの回答を反映します。

- **ユースケース1と4はライブAPIに対して完全に実行されました：**小売（Proスペンドゼロ）とCrunchbase（Proティア）。以下のすべての小売スクリーンショットはその実行から取得されており、ユースケース4の完全なコードはそのセクションに記載されています。
- **ユースケース2と3は表示のみで再構築されていません：**プロンプト、フェーズ2が選択するツール、各ツールに対してライブで検証したフィールド形状が示されています。ユースケース4の`callMcpTool`クライアントを再利用するため、ほぼ同一のコードを再貼り付けする必要はありません。
- **ユースケース2、3、4はProモード（`&pro=1`）で実行されます。**これは以下の本番へのスケールでカバーされています。

### ユースケース1：マルチリテーラー価格トラッキング

Kiroへのプロンプトはこちらです：

> **Kiroへのプロンプト：***「AmazonとWalmartのSony WH-1000XM5の価格をスクレイピングする価格比較エージェントを追加してください。」*

**フェーズ2の選択**：キャプチャされたProゼロの実行では、Powerはデータセットトリガーパス（同じデータ、ポーリング）を選択しました。`&pro=1`の場合は、代わりにProツール`web_data_amazon_product`と`web_data_walmart_product`を選択します。

**より多くの小売業者への拡張**：同じパターンで、より広い小売業者リストでKiroを再プロンプトすることにより、`web_data_ebay_product`、`web_data_homedepot_products`、`web_data_bestbuy_products`を追加できます。一部の小売業者（Best Buy、Target）では通常、ゾーンでプレミアムドメインを有効にする必要があります。キャプチャされた実行ではAmazonとWalmartは不要でした。

#### Kiroが生成したアーキテクチャ

ダッシュボードはマウント時にAPIを取得します。APIはBright Dataのデータセットトリガーを並列で呼び出し、構造化されたレコードを返します。

```none
       ブラウザが/を開く
                │
                ▼ (マウント時に自動取得)
        GET /api/scrape-prices
                │
                ▼
    src/scrapers/price-tracker.ts
        fetchAllPrices()
                │
                ▼ (Promise.allSettled, 並列)
   ┌────────────────────────────────────┐
   │  Bright Data Datasets API          │
   │  gd_l7q7dkf244hwjntr0 → Amazon     │
   │  gd_l95fol7l1ru6rlo116 → Walmart   │
   └────────────────────────────────────┘
```

*1つの読み取りパス：ダッシュボード → APIルート → スクレイパーモジュール → 2つのBright Dataデータセットトリガー。`&pro=1`の場合、スクレイパーモジュールは直接`web_data_`* MCP呼び出しになり、クライアント側のポーリングループがMCPサーバーに移動します。\*

#### スクレイパーモジュール

`src/scrapers/price-tracker.ts`にはデータセットID、`triggerAndPoll`ヘルパー、そしてBright Dataのレスポンスを一貫した`PriceResult`形状にフラット化する`normalise`ステップが含まれています。以下はファイルのコアで、完全なファイルは約85行です：

```none
// src/scrapers/price-tracker.ts (抜粋)
const BASE = "https://api.brightdata.com/datasets/v3";
const DATASETS = { Amazon: "gd_l7q7dkf244hwjntr0", Walmart: "gd_l95fol7l1ru6rlo116" } as const;

async function triggerAndPoll(datasetId: string, url: string) {
  // 1. ターゲットURLでPOSTトリガー
  const trigger = await fetch(`${BASE}/trigger?dataset_id=${datasetId}&include_errors=true`, {
    method: "POST",
    headers: { Authorization: `Bearer ${process.env.BRIGHTDATA_API_KEY}`,
               "Content-Type": "application/json" },
    body: JSON.stringify([{ url }]),
  });
  const { snapshot_id } = await trigger.json();
  if (!snapshot_id) throw new Error("no snapshot_id returned from trigger");

  // 2. スナップショットエンドポイントをポーリング (進行中 = HTTP 202; ~120秒上限)
  for (let i = 0; i < 24; i++) {
    await new Promise((r) => setTimeout(r, 5000));
    const res = await fetch(`${BASE}/snapshot/${snapshot_id}?format=json`,
      { headers: { Authorization: `Bearer ${process.env.BRIGHTDATA_API_KEY}` } });
    if (res.status === 202) continue;
    return await res.json();
  }
  throw new Error("snapshot timed out after 120s");
}

// 両方の小売業者を並列でトリガー；Promise.allSettledは小売業者ごとにエラーを分離し、
// 1つの不良スナップショットが他方を失敗させないようにします。完全なファイルは各settled結果を
// PriceResult（rejectされたものはerrorフィールドを持つ）にマップします。
export async function fetchAllPrices() {
  return Promise.allSettled(
    Object.entries(DATASETS).map(([retailer, id]) =>
      triggerAndPoll(id, PRODUCT_URLS[retailer]).then((r) => normalise(r[0], retailer, PRODUCT_URLS[retailer]))),
  );
}
```

#### KiroのチャットはライブMCPクライアントであり、メモリルックアップではない

ビルド中、Kiroのチャットパネルはコードが呼び出すのと同じ`brightdata`サーバーと通信します。Sonyの価格を尋ねられたとき、チャットはモデルのメモリから回答しませんでした。ライブの`search_engine`と`scrape_as_markdown`呼び出しを行い、テーブルを返しました（リファービッシュ品$195.55から新品$248、XM6比較$398）：

![Kiroチャット、完全な実行：エージェントがsearch_engineとscrape_as_markdownを自律的に選択し、Sony WH-1000XM5のAmazonライブ価格を返します。1分24秒、0.9クレジット。](https://media.brightdata.jp/2026/06/kiro-bright-data-6.png)*チャットはビルド中に探索するための手段です。以下のダッシュボードはエンドユーザーが見るものです。*

#### ダッシュボード

Kiroが生成したホームルート（`/`）は、APIが返すJSONを2つのカラーカード（Amazonオレンジ、Walmartブルー）と、2つのうち安い方を選ぶ緑の「最安値」バナーとしてレンダリングします：

![2026年5月28日14:27のホームルート(/)：Sony WH-1000XM5がAmazonとWalmartの両方で$248と表示され、Amazonに緑の「最安値」バナーが付いたカード表示。](https://media.brightdata.jp/2026/06/kiro-bright-data-7.png)*ホームルート（`/`）ビュー。Sony WH-1000XM5がAmazonとWalmartの両方で$248と表示され、製品タイトル、在庫状態、各ソースから直接読み取られた小売業者ごとのタイムスタンプが表示されています。Walmartの生の`in_stock`とAmazonの`In Stock`はそのまま渡されるため、各ソースが返す内容をそのまま確認できます。アラートを構築する際は、独自のスキーマに正規化してください。*

生のページを自分で検査すると、Amazonの明白な価格セレクター（`span.a-price-whole`）は通常空を返し、実際のものは`.a-price .a-offscreen`です。WalmartはレンダリングされたHTMLに価格をまったく含めず、`<script id="<strong>NEXT_DATA</strong>">`内のJSONブロブに格納されています。上記のデータセットトリガーはBright Dataがサーバー側でページをパースし、型付きフィールドを返すため、両方の問題を回避します。

#### フェーズ4：URLが変わったときの自己修復

フェーズ4は、スモークテストが失敗したときにPowerが自動的に実行するリカバリールーティンです。キャプチャされた実行では、Amazonはクリーンなデータ（`$248, In Stock`）を返しましたが、Walmartはすべてのフィールドがnullを返しました。Kiroは成功を宣言しませんでした。代わりに、生のレコードの`error`キー（`"dead page (404)"`）を読み取り、`search_engine`を呼び出して現在のWalmartのURLを見つけ、データセットを再トリガーし、ポーリングが停滞したときに`scrape_as_markdown`に切り替えました（Amazonと一致する$248を返しました）。そして生成されたスクレイパーにパッチを当てました：

![Kiroフェーズ4のサマリー：自己修復リカバリーを示す。Amazon $248確認、古いWalmartのURLが検出されMCPスクレイプでパッチ適用。4.5クレジット、18分54秒。](https://media.brightdata.jp/2026/06/kiro-bright-data-8.png)*フェーズ4は死んだWalmartのURLを検出し、ライブのURLを見つけ、スクレイパーを自動的にパッチします。18分54秒には再ポーリングされたデータセットジョブが含まれており、4.5クレジットはランタイムコストではなく一回限りのビルドフェーズコストです。*

リカバリーループはエラーをスローするか、nullフィールドを返す失敗（死んだ404、再設計されたページ、スナップショットエラー）をキャッチします。しかし、まだ解決するが間違った製品を指しているURLはキャッチ**しません**。例えば、Sony製ヘッドフォンからPS5リストに静かに変わった`walmart.com/ip/...`のIDは、間違った製品に対して有効なデータを返します。このケースをキャッチするには、ハードコードされたIDの代わりに検索駆動のURLが必要です（以下の本番へのスケールセクションでカバーされています）。

**フェーズ2、4のキャプチャされたコスト**（各スクリーンショットに表示）：**0.38 → 1.38 → 4.5クレジット**（累計）。これらはKiro IDEのビルド時クレジットで、コードを書く際のエージェントの使用量であり、Bright Dataの請求とは別です。このキャプチャされた実行の合計コストは**4.5クレジット**でしたが、その大部分は一回限りのフェーズ4の自己修復によるものです。リカバリーなしのクリーンなビルドは約2クレジットです（自己修復なしの実行をキャプチャしていないため推定）。

### 本番セーフガード：自己修復、サイレント上書きなし、CI検証済みテンプレート

ユースケース1では、フェーズ4が死んだWalmartのURLをキャッチし、成功を宣言することを拒否しました。その動作は各実行で即興されるものではありません。Powerの[ステアリングファイル](https://github.com/brightdata/kiro-powers/tree/main/brightdata-scrape/steering)に組み込まれた本番ルールから来ています。以下はそれらのルールの完全なセットです：

- **ファイル安全（フェーズ3）。**Powerは既存のスクレイパーを上書きせず（`_2.ts`を提案）、置き換える代わりに`README.md` / `.env.example`に追記し、書き込み前にCREATE/MODIFYリストを表示します。
- **MCP設定マージ（フェーズ4）。**Powerは`.kiro/settings/mcp.json`内の既存の`brightdata`エントリを検出し、URLが異なる場合は差分を表示し、置き換える前に確認を求めます。サイレント上書きはありません。
- **スモークテストFAIL → ITERATE。**MCPを接続した後、Powerはターゲットに対してスクレイパーを実行します。空、null、またはエラーの場合、ステアリングは文字通り*「フェーズ2に戻る…成功を宣言しないこと。」*と指示します。
- **CI検証済みテンプレート（49テスト合格）。**[`validate_power.py`](https://github.com/brightdata/kiro-powers/blob/main/scripts/validate_power.py)と[`test_validate_power.py`](https://github.com/brightdata/kiro-powers/blob/main/tests/test_validate_power.py)はフロントマター、MCP設定、ステアリング、テンプレートの存在を確認します。ライブサイトに対して生成されたコードをテストする**わけではありません**。それはプロジェクトごとのフェーズ4スモークテストの役割です。
- **自動ゾーンプロビジョニング。**MCPサーバーは`/zone/get_active_zones`を呼び出し、最初の実行時に不足しているゾーンを作成します。そのため新規アカウントでもWeb Unlockerゾーンを手動で作成する必要はありません。

### ユースケース2：GEOブランド可視性モニター

**可視性の問題。**購入者はセールスと話す前にLLMの回答ページ（ChatGPT、Grok、Perplexity）でショートリストを形成することが増えているため、上位3位以外では多くの購入者に見てもらえない可能性があります。問題は、従来のブランドモニタリングツール（PR、ソーシャルリスニング、SEO）がLLMの回答を監視するために構築されていないため、自分のランクを確実に把握できないことです。

> **Kiroへのプロンプト：***「ChatGPT、Grok、Perplexityが私の5つの優先購買クエリにどう回答しているかをスクレイピングし、私のブランドが言及されなくなったときにアラートを出すブランド可視性モニターを追加してください。」*

#### GEOツールとその返値

**このユースケースのProツール**：フェーズ2は`geo`グループを選択します：`web_data_chatgpt_ai_insights`、`web_data_grok_ai_insights`、`web_data_perplexity_ai_insights`。各ツールはそれ自体がエンジンであり（エンジンセレクターはありません）、単一の`prompt`引数を受け取り、レンダリングされたLLMの回答をマークダウンとして返します。エンジンごとに1つのツールで、今日の購入者が使用する3つの主要な回答ページをカバーします。ChatGPTだけではありません。

**フェーズ3が生成するもの**：各`web_data_*`ツールを単一の`{ prompt }`で呼び出し、その`answer_text_markdown`を収集する`src/scrapers/brand_visibility.ts`モジュールです。ChatGPTとPerplexityはインラインで返し、`Promise.all`で一緒に実行されます。GrokはMCPポーリングウィンドウを超えて実行され、非同期に返されることが多いため、別の非ブロッキングパスに置かれます。ブロッキング呼び出しではなく、結果整合性として扱ってください。

**ライブレスポンス形状はこちらです。**`web_data_chatgpt_ai_insights`と`web_data_perplexity_ai_insights`の両方から直接キャプチャされ、プロンプト*「ミッドマーケットSaaS向けの最良のCDPは何ですか？」*を使用しました。両方とも同じ単一フィールド形状を返しました（Grokの非同期呼び出しは9分のポーリングを超えて実行されました）：

```none
{
  "answer_text_markdown": "For most **mid-market SaaS companies (roughly 50,1,000 employees)**, the answer depends less on \"which CDP is best\" than on your data-stack maturity. My ranking: 1) [Hightouch](https://hightouch.com?utm_source=chatgpt.com) , warehouse-native; 2) [Twilio Segment](https://segment.com?utm_source=chatgpt.com) , all-in-one; 3) [RudderStack](https://www.rudderstack.com?utm_source=chatgpt.com) , engineering-led..."
}
```

ツールはモデルの回答を単一の`answer_text_markdown`文字列として返します。事前にパースされたブランドランキングとして返す**わけではありません**。ブランド抽出ステップはあなたの担当です。単純な最初のアプローチはマークダウンに対する単純な`includes()`チェックですが、大文字小文字、名前のバリアント、別の単語の中にブランドが現れるケースを見逃します。実際の使用には、マークダウンを安価なLLM呼び出しに渡し、ランク付きリストを要求してください。

![Kiroがweb_data_chatgpt_ai_insightsを実行：1つのpromptを入力、1つのanswer_text_markdownを出力；回答はHightouch、Twilio Segment、RudderStackをランク付け。](https://media.brightdata.jp/2026/06/kiro-bright-data-9.png)#### アラートループと導入対象

**アラートループ**の仕組み：エンジンごとに1日1行の`answer_text_markdown`を保存し、ブランドが現れているかどうか（およびどこに）を抽出し、以前に含まれていた回答からブランドが消えたときにアラートを送り、最後にブランド存在フラグ付きの今日の回答の3エンジングリッドをレンダリングします。

アラートを設定する前に注意点があります：LLMの回答は非決定論的であるため、同じプロンプトでも実行ごとにブランドのランク付けが異なる場合があります。1日1回のフェッチは1つのサンプルであり、安定したシグナルではないため、1日ブランドが消えるのはノイズであることが多く、本当の変化ではありません。ドロップを本物として扱う前に、各プロンプトを数回サンプリングするか、数日間にわたって平滑化してください。

**導入対象**：B2B SaaSのマーケティングおよびDevRelチーム、LLMカバレッジを追加するブランドモニタリングエージェンシー、モデル出力ドリフトを追跡するAI/ML研究者向けです。使用量は5つのプロンプトを3つのエンジンで毎日ポーリングする計算で、月約450回の呼び出し、つまり従量課金制で月約**$0.68**となります。

### ユースケース3：LinkedInリードジェンパイプライン

B2Bの問題は、50人の営業見込み客（または候補者、パートナープログラムの連絡先）の転職、会社の移動、昇進を追跡しなければならないことです。通常の解決策はLinkedIn Sales Navigatorと手動レビューワークフローです。構造化データオプションは、見込み客ごとに1回のMCP呼び出しを毎日ポーリングすることです。

> **Kiroへのプロンプト：***「これら50人のLinkedIn見込み客の転職、会社の移動、昇進を監視してください。何か変化があったときにCRMに通知してください。」*

#### LinkedInツールとその返値

**このユースケースのProツール。**フェーズ2は`social`グループ内のLinkedInクラスターを選択します：`web_data_linkedin_person_profile`、`web_data_linkedin_company_profile`、`web_data_linkedin_job_listings`、`web_data_linkedin_people_search`。

フェーズ3が生成するもの（フィールド名はツールに対してライブで検証済み）：

```none
// src/scrapers/linkedin_prospects.ts (抜粋)
import { callMcpTool } from "@/lib/mcp-client"; // KiroはフェーズPhase 3でこのMCPクライアント呼び出しを生成します。インストール可能なパッケージではありません

interface ProspectSnapshot {
  url: string;
  current_company_name: string;  // current_companyはネストされたオブジェクト；*_nameが文字列
  position: string;              // 役職フィールド。「current_title」はありません
  location: string;
  followers: number;
}

type Change = { field: string; from: string; to: string };

export const snapshotProspect = (url: string) =>
  callMcpTool("web_data_linkedin_person_profile", { url }) as Promise<ProspectSnapshot>;

// 今日と昨日を差分比較；移動したフィールドのChangeを出力。
export function diffProspect(prev: ProspectSnapshot, now: ProspectSnapshot): Change[] {
  return (["current_company_name", "position"] as const)
    .filter((f) => prev[f] !== now[f])
    .map((f) => ({ field: f, from: prev[f], to: now[f] }));
}
```

完全なレコードは30以上の型付きフィールドを返します。`current_company`（オブジェクト）、`experience[]`、`education[]`、`about`、`followers`、`connections`、`city`、`country_code`などが含まれます。

#### CRM通知ループと導入対象

**CRM通知ループ**の仕組み：見込み客ごとに昨日のスナップショットを保存し、バックグラウンドワーカーから1日1回今日のフェッチと差分を実行し、CRMのウェブフック（Salesforce、HubSpot、Attio、Bright DataのMCPではない）に変更をPOSTします。

**導入対象**：B2B営業、採用、RevOps、パートナープログラムマネージャー向けです。使用量は50人の見込み客を毎日ポーリングする計算で、月約1,500回の呼び出し、PAYGで月約**$2.25**となります。

### ユースケース4：競合情報ダッシュボード

コーポレート開発と戦略の問題はこうです：チームは競合他社と買収ターゲットのウォッチリストで、資金調達ラウンド、人員変化、モメンタムシフトを追跡しなければなりません。一般的なベースラインは手動のCrunchbase更新とスプレッドシートワークフローです。構造化データオプションは、企業ごとに1回のMCP呼び出しを毎週ポーリングすることです。

> **Kiroへのプロンプト：***「Crunchbaseでこれら30の競合他社を追跡してください。いずれかがラウンドを調達したり、従業員数バンドを超えたり、成長ランキングが急上昇したときにアラートを送ってください。」*

#### Crunchbaseツールとその返値

**フェーズ2で選択されるProツール**：Powerは`web_data_crunchbase_company`（`business`グループ）を選択します。ライブで検証済みで、企業ごとに**93の型付きフィールド**を返します。`funds_raised`、`num_funding_rounds`、`acquisitions`、`exits`、`num_employees`、`cb_rank`、`growth_score`、`heat_score`、`founders`、`built_with_tech`、`ipo_status`、`region`などが含まれます。

フェーズ3が生成するもの：

```none
// src/scrapers/competitor_intel.ts
import { callMcpTool } from "@/lib/mcp-client"; // KiroはフェーズPhase 3でこのMCPクライアント呼び出しを生成します。インストール可能なパッケージではありません

interface CompanySnapshot {
  name: string;
  num_employees: string;      // バンド、例："5001-10000"
  cb_rank: number;            // Crunchbaseランク（低いほど著名）
  growth_score: number;       // 0-100
  heat_score: number;         // 0-100 モメンタムシグナル
  funds_raised: unknown[];    // 資金調達/投資イベントの配列
  ipo_status: string;         // "private" | "public" | ...
  region: string;
  url: string;
}

type Alert =
  | { kind: "headcount_band"; from: string; to: string }
  | { kind: "new_funding_event"; count: number }
  | { kind: "growth_surge"; from: number; to: number };

// MCPの行は型なしで届くため、追跡するフィールドだけを型付きCompanySnapshotにマップ
export async function snapshotCompany(url: string): Promise<CompanySnapshot> {
  const row = await callMcpTool<Record<string, unknown>>("web_data_crunchbase_company", { url });
  return {
    name: String(row.name ?? ""),
    num_employees: String(row.num_employees ?? ""),
    cb_rank: Number(row.cb_rank ?? 0),
    growth_score: Number(row.growth_score ?? 0),
    heat_score: Number(row.heat_score ?? 0),
    funds_raised: Array.isArray(row.funds_raised) ? row.funds_raised : [],
    ipo_status: String(row.ipo_status ?? ""),
    region: String(row.region ?? ""),
    url,
  };
}

export function detectMoves(
  prev: CompanySnapshot, now: CompanySnapshot,
): Alert[] {
  const alerts: Alert[] = [];
  if (now.num_employees !== prev.num_employees) {
    alerts.push({ kind: "headcount_band", from: prev.num_employees, to: now.num_employees });
  }
  if (now.funds_raised.length !== prev.funds_raised.length) {
    alerts.push({ kind: "new_funding_event", count: now.funds_raised.length - prev.funds_raised.length });
  }
  if (now.growth_score - prev.growth_score >= 5) {
    alerts.push({ kind: "growth_surge", from: prev.growth_score, to: now.growth_score });
  }
  return alerts;
}
```

**ライブサンプル。**Stripeに対する`web_data_crunchbase_company`への実際の呼び出しは、`num_employees: "5001-10000"`、`cb_rank: 300`、`growth_score: 98`、`heat_score: 60`、`ipo_status: "private"`、`region: "California"`、および投資イベントが入力された`funds_raised`配列を返しました。

![KiroがStripeのweb_data_crunchbase_companyを実行：1つのurlを入力、name: Stripe、cb_rank: 300、region: Californiaを示す構造化レコードを出力。](https://media.brightdata.jp/2026/06/kiro-bright-data-10.png)Powerは4つのファイル（上記のスクレイパー、以下のクライアント、APIルート、ダッシュボードページ）を生成し、生成されたコードはTypeScriptエラーゼロでコンパイルされました。`BRIGHTDATA_API_KEY`を設定してライブMCPに対して実行すると（ライブスクレイプで約58秒）、上記のStripeレコードが返され、これがレンダリングされました：

![ライブweb_data_crunchbase_company呼び出しからの競合情報ダッシュボード：Stripeのcb_rank #300、成長98/100、ヒート60/100、10件の資金調達イベント。](https://media.brightdata.jp/2026/06/kiro-bright-data-11.png)*ホームルート（`/`）、上記のStripeレコードを返した同じ`web_data_crunchbase_company`呼び出しからライブでレンダリングされています。*

自分で実行するには、サンプルリポジトリをクローンしてください：`git clone https://github.com/triposat/crunchbase-intel-demo && cd crunchbase-intel-demo && npm install && cp .env.example .env.local`、Proが有効なトークンを貼り付けて、`npm run dev`を実行します。（`&pro=1`はすでにリポジトリの`mcp-client.ts`に含まれています。Proモードが有効なアカウントが必要です。）

#### 共有MCPクライアント

スクレイパーがインポートする`callMcpTool`は、Powerがフェーズ3で生成する薄いMCPクライアントです。GEOとLinkedInモジュールが再利用するために書かれているのと同じものです。完全なコードはこちらです：

```none
// src/lib/mcp-client.ts , callMcpToolが解決するクライアント
const MCP_URL = `https://mcp.brightdata.com/mcp?token=${process.env.BRIGHTDATA_API_KEY}&pro=1`;

async function post(body: unknown, sessionId?: string) {
  const headers: Record<string, string> = {
    "Content-Type": "application/json",
    Accept: "application/json, text/event-stream",
  };
  if (sessionId) headers["mcp-session-id"] = sessionId;
  return fetch(MCP_URL, { method: "POST", headers, body: JSON.stringify(body) });
}

// サーバーはSSEとして返信：各`data:`行に1つのJSONオブジェクト
function parseSse(text: string) {
  if (!text.includes("data:")) {
    try { return [JSON.parse(text)]; }
    catch { throw new Error(`MCP returned a non-JSON response: ${text.slice(0, 120)}`); }
  }
  return text.split("\n").filter((l) => l.startsWith("data:"))
    .map((l) => { try { return JSON.parse(l.slice(5).trim()); } catch { return null; } })
    .filter(Boolean);
}

export async function callMcpTool<T = unknown>(name: string, args: Record<string, unknown>): Promise<T> {
  // 1. 初期化 , セッションIDがレスポンスヘッダーとして返される
  const init = await post({ jsonrpc: "2.0", id: 1, method: "initialize",
    params: { protocolVersion: "2024-11-05", capabilities: {}, clientInfo: { name: "intel", version: "1.0" } } });
  if (!init.ok) throw new Error(`MCP connection failed: HTTP ${init.status} ${init.statusText}. Check BRIGHTDATA_API_KEY.`);
  const sessionId = init.headers.get("mcp-session-id") ?? undefined;
  await init.text();

  // 2. 初期化を確認、次に 3. ツールを呼び出す
  await post({ jsonrpc: "2.0", method: "notifications/initialized", params: {} }, sessionId);
  const res = await post({ jsonrpc: "2.0", id: 2, method: "tools/call", params: { name, arguments: args } }, sessionId);
  if (!res.ok) throw new Error(`MCP tool call failed: HTTP ${res.status} ${res.statusText}.`);

  const reply = parseSse(await res.text()).find((m: { id?: number }) => m?.id === 2);
  if (reply?.error) throw new Error(`MCP error: ${reply.error.message}`);
  const text = reply?.result?.content?.find((c: { type: string }) => c.type === "text")?.text;
  const payload = text ? JSON.parse(text) : reply?.result;
  return (Array.isArray(payload) ? payload[0] : payload) as T;
}
```

そのファイルを`src/lib/`に置けば、上記のCrunchbaseスクレイパーは実行準備完了です。

#### ウォッチループと導入対象

**ウォッチループ**の仕組み：企業ごとに先週のスナップショットを保存し、今週のスナップショットと先週のものを差分比較し、資金調達イベント、人員バンドの超過、成長スコアの急上昇を戦略Slackチャンネルに投稿します。使用量は30社を毎週ポーリングする計算で、月約120回の呼び出し、PAYGで月約**$0.18**となります。

**導入対象**：コーポレート開発、競合情報、戦略、VC/PEディールチーム、アカウントインテルを構築する営業担当者向けです。これらのチームは小売ボリュームよりもデータの深さを必要としています。手動で収集していた企業ごとの93の構造化フィールドが必要だからです。

### 4つのユースケースを本番環境にスケールする

生成されたスクレイパーはTypeScriptエラーゼロでコンパイルし、ライブAPIに対して実行されます（上記の小売とCrunchbaseの実行）。これらの変更で本番スケールに対応し、実際のワークロードに必要なバックグラウンドジョブ、スナップショットテーブル、ボリューム設定を追加します：

- **Proツールに切り替えます。**`.kiro/settings/mcp.json`のMCP URLに`&pro=1`を追加して`https://mcp.brightdata.com/mcp?token=<your-token>&pro=1`となるようにし、サーバーを再起動します。（`token=`がすでにクエリ文字列を開いているため、先頭の`&`に注意してください。）フェーズ2はデータセットトリガーの代わりに`web_data_*`ツールを選択します。ポーリングは通常数秒に短縮され、パースは型付きフィールドの読み取りになります。フラグは2箇所に入ります：Kiroのエージェントがproツールを見られるように`.kiro/settings/mcp.json`、そして実行中のアプリがそれらを呼び出せるように生成されたアプリの`src/lib/mcp-client.ts`。
- **Web Unlockerゾーンを設定します。**Web UnlockerパスはBRIGHTDATA\_UNLOCKER\_ZONEを読み取り、ゾーンにはアカウント固有の名前（`web_unlocker`、`mcp_unlocker`、`web_unlocker1`など）があります。[Webアクセスダッシュボード](/cp/web_access)で正確な名前を見つけ、`.env.local`に設定します。名前が一致しないと`zone not found`でHTTP 400が返されます。新規アカウントでは、MCPサーバーが最初の呼び出し時にゾーンを自動プロビジョニングするまでテーブルが空の場合があります。2つのゾーンが表示された場合は、**無料ティア**とマークされているものを選択します。
- **ポーリングをリクエストパスから外します。**実行では、単一レコードの`web_data_*`トリガーは約10〜90秒で返り、複数レコードは数分かかりました。レイテンシは変動し、GrokのようなLLM回答ツールはポーリングウィンドウをはるかに超えて実行される場合があります。MCPサーバーはタイムアウト前に数分間ポーリングを続けます（`POLLING_TIMEOUT`環境変数で上限を設定）。本番環境では、バックグラウンドワーカー（Vercel Cron、Inngest、Trigger.dev）からトリガーを実行し、スナップショットテーブルに書き込みます。ダッシュボードはライブスクレイプではなくテーブルから読み取ります。（MCP外部の直接データセットAPIはプッシュが必要な場合にウェブフック配信をサポートします。`notify`と`endpoint`パラメーターで設定します。[Bright Dataのトリガーコレクションドキュメント](https://docs.brightdata.com/scraping-automation/web-data-apis/web-scraper-api/trigger-a-collection)を参照してください。）
- **バッチ+スコープ。**`scrape_batch`と`search_engine_batch`は1回の呼び出しで複数のURLを実行し、URLごとのトークンオーバーヘッドを削減します。MCP URLに`&groups=ecommerce,social,geo,business`を追加すると、ユースケースに必要なツールグループのみが読み込まれ、エージェントが読み取るツールリストのハンドシェイクが縮小されます。11のグループは`ecommerce`、`social`、`finance`、`business`、`research`、`app_stores`、`travel`、`geo`、`code`、`browser`、`advanced_scraping`です。
- **クロススタックテンプレート。**Powerには22の本番テンプレートが含まれています：TSのウェブフレームワークルート（Next、Express、Fastify、Hono、Koa）とPython（FastAPI、Flask、Django）、エージェントSDKツール（Anthropic、OpenAI、LangChain、Vercel AI SDK、Mastra）、汎用モジュール（TSフェッチ + Cheerio、Python stdlib + BeautifulSoup、ユニバーサル`curl.sh`）。Kiroはマニフェストで7つの言語を検出して一致するものを選択しますが、ファーストクラスのコード生成はTSとPythonのみです。Go、Rust、Ruby、Java、PHPは検出されて`curl.sh`フォールバックにルーティングされます。
- **ハードコードではなく検索駆動のURL。**ハードコードされたURLはリスティングIDのローテーションで壊れる場合があります。古いIDがまだ解決するが間違った製品を指している場合（ユースケース1のリカバリーループがキャッチできないPS5対ヘッドフォンの失敗）。組み込みの修正は、URLではなくディスカバリーモードでデータセットをトリガーすることです。データセットトリガーボディを`[{ url }]`からディスカバリークエリ（`discover_by=keyword`、`category_url`、または`best_sellers_url`）に交換し、Bright Dataが現在の製品を見つけるようにします。ディスカバリーリクエスト形状については[Bright Dataのトリガーコレクションドキュメント](https://docs.brightdata.com/scraping-automation/web-data-apis/web-scraper-api/trigger-a-collection)を参照してください。
- **ログインフロー+ステアリング。**Browser APIはARIAスナップショットインターフェース（Playwright-MCPスタイルのrefs）を使用して認証壁のあるサイトを処理し、エージェントの使用に設計されています。フォークせずにPowerの組み込みステアリングをオーバーライドするには、ワークスペースに`.kiro/steering/<your-domain>.md`を追加します。ソースが公式APIを公開している場合はそれを使用してください。

![Bright Data Webアクセスダッシュボード：5つのAPIの行、2つの「Web Unlocker API」タイプ：`mcp_unlocker`（緑の「無料ティア」バッジ）と`web_unlocker`。](https://media.brightdata.jp/2026/06/kiro-bright-data-12.png)`&pro=1`を設定してMCPパネルを再度開くと、完全なツールカタログが表示されます：

![`&pro=1`後のKiro MCPサーバーパネル：`brightdata Connected (72 tools)`、`web_data_*` Proファミリーが展開されています（geo、finance、social、code、browser）。](https://media.brightdata.jp/2026/06/kiro-bright-data-13.png)### 次のステップ

1つのPowerが単一のMCPエンドポイントから4つのユースケースすべてを駆動するため、スクレイパーの配管ではなく統合とアラートロジックに時間を費やせます。

**自分で小売トラッカーを構築してください。**Kiroの*カスタムPowerを追加 → GitHubからPowerをインポート*に`https://github.com/brightdata/kiro-powers/tree/main/brightdata-scrape`を貼り付けて、ユースケース1のプロンプトを実行します。実行では20〜30分かかり、Proスペンドゼロで、インストールと4フェーズのワークフローの両方を確認しました。急いでいる場合は、代わりに完成したアプリをクローンしてください：`git clone https://github.com/triposat/retail-price-tracker && cd retail-price-tracker && npm install && cp .env.example .env.local`、無料のBright Dataトークンを追加して、`npm run dev`を実行します。

**次に書き直しではなく再プロンプトでスケールします。**`.kiro/settings/mcp.json`に`&pro=1`を追加し、従量課金制で上記の3つのProティアプロンプト（GEO、LinkedIn、またはCrunchbaseインテル）のいずれかを実行します。新しいコードは不要で、同じPowerに対する新しいプロンプトだけです。

さらに詳しく：完全なツールリストのBright Data MCPページ、および同じツールをインタラクティブに使用するBright Dataの[Kiroチャットワークフロー記事](/blog/ai/kiro-with-web-mcp)。

### よくある質問

#### 無料のものと有料のものは？

**無料：**Bright Data MCPの5つの基本ツール（`search_engine`、`search_engine_batch`、`scrape_as_markdown`、`scrape_batch`、`discover`）が無料で利用でき、月5,000リクエストがコストなしで提供されます（Bright Dataの[MCP README](https://github.com/brightdata/brightdata-mcp#readme)より）。**有料：**Proの`web_data*`ツールは有料で、小売ビルドが使用するデータセットトリガーパスも有料です。これはBright Dataの[データセットAPI](/products/web-scraper)を直接呼び出し、最初の約1,000レコードの無料トライアルの後、約$1.50/1,000レコードで請求されます。そのため、1回の実行で数製品をスクレイピングするコストは通常数セントの端数となります。

#### Proツールのコストは？

Proの`web_data_*`ツールはプランによって**1,000結果あたり$1.00〜$1.50**のコストがかかります（[Bright Dataの価格ページ](/pricing/mcp-server)）：

プラン1,000結果あたりの価格従量課金制$1.50スターター$1.30プロフェッショナル$1.10ビジネス$1.00単一エンティティのPro呼び出し（1回のLLM回答フェッチ、1つのLinkedInプロフィール、または1つのCrunchbase企業）の場合、月次推定は**1回の呼び出し = 1つの請求結果**を前提としており、これは単一レコードの`web_data_*`ツールに対するBright Dataの使用量ベース請求と一致します。`web_data_amazon_product_search`のような一括検索ツールの場合、結果ごとのカウントは返されるアイテムに応じてスケールします。プロトタイプ作成中は`limit`パラメーターを使用し、予算を立てる前にアカウントの現在のレートを確認してください。

Browser APIは帯域幅$5〜8/GBで別途請求されます。AIエージェントレイヤーを追加する場合、LLM呼び出しごとにAnthropic、OpenAI、またはGoogleの価格も適用されます。

#### GPTまたはGeminiで動作しますか？

はい、`brightdata-scrape` PowerはAnthropicだけでなく、OpenAI（GPT）とGoogle（Gemini）でも動作します。エージェントレイヤーのためにKiroにプロンプトを出す（「これらのスクレイパーをツールとして使用する`/api/agent`ルートを追加してください」）と、プロジェクトの依存関係に基づいて一致するツールテンプレート（Anthropic SDK、OpenAI SDK、LangChain、Mastra、またはVercel AI SDK）を選択します。生成されたルートの`anthropic(...)`を`openai(...)`または`google(...)`に置き換え、プロバイダーのクライアント設定とモデルIDを一致するように調整します。

#### ログインが必要なサイトをスクレイピングできますか？

`brightdata-scrape` Powerはログインが必要なサイトをスクレイピングできますが、データセットトリガーのデフォルトからではありません。ステートフルセッションにはBrowser APIに切り替え、独自の認証情報ストレージを追加します。PowerのフェーズPhase 2ラダーはログインとクリックフローのためにBrowser APIにエスカレートします。

#### 4つのユースケースすべてを1つのプロジェクトで実行できますか？

はい。各ユースケースは独立したモジュール（独自の`src/scrapers/`ファイル、APIルート、ビュー）であり、同じMCPサーバーを再利用するため、4つすべてが1つのNext.jsプロジェクトに共存できます。このガイドでは4つを1つのアプリに統合していません（2つのライブビルド、小売とCrunchbase、は別々のデモリポジトリで、GEOとLinkedInはプロンプトとして示されています）が、そうすることを妨げるものは何もありません。

#### Claude CodeまたはCursorから使用できますか？

Claude CodeまたはCursorの場合は、`brightdata-scrape` Kiro Powerの代わりにBright DataのClaude Skillsを使用してください。Bright Dataは[`github.com/brightdata/skills`](https://github.com/brightdata/skills)でスクレイピングSkills（`scraper-builder`や`scrape`など）を公開しており、Claude Code、Cursor、またはSkillsをサポートする任意のエージェントホストで実行されます。同じBright Dataインフラで同様のスクレイピングジョブをカバーしますが、このPowerのMCPとNext.jsのコード生成ではなく、Skillsと`bdata` CLIとしてパッケージ化されているため、インストールと生成されたコードが異なります。



お問い合わせ無料トライアル![google social icon](/wp-content/themes/brightdata/assets/images/ic_google.svg)









 目次







日本企業向けデータソリューション

日本のトップ企業が信頼するスケーラブルなウェブデータプラットフォーム。日本語24時間サポート、GDPR・個人情報保護法準拠、日本企業20社以上の導入実績。

[詳細を見る](https://brightdata.jp/solutions/data-solutions-for-japanese-companies "詳細を見る")







 [ ](https://news.ycombinator.com/submitlink?t=%E3%83%97%E3%83%AD%E3%83%B3%E3%83%97%E3%83%88%E3%81%8B%E3%82%89Kiro%E3%81%A8Bright+Data%E3%81%A7%E3%82%A6%E3%82%A7%E3%83%96%E3%82%B9%E3%82%AF%E3%83%AC%E3%82%A4%E3%83%91%E3%83%BC%E3%82%92%E6%A7%8B%E7%AF%89%E3%81%99%E3%82%8B&u=https://brightdata.jp/blog/ai/web-scrapers-with-kiro-power) [ ](https://www.linkedin.com/shareArticle?mini=true&title=%E3%83%97%E3%83%AD%E3%83%B3%E3%83%97%E3%83%88%E3%81%8B%E3%82%89Kiro%E3%81%A8Bright+Data%E3%81%A7%E3%82%A6%E3%82%A7%E3%83%96%E3%82%B9%E3%82%AF%E3%83%AC%E3%82%A4%E3%83%91%E3%83%BC%E3%82%92%E6%A7%8B%E7%AF%89%E3%81%99%E3%82%8B&url=https://brightdata.jp/blog/ai/web-scrapers-with-kiro-power) [ ](http://www.reddit.com/submit?title=%E3%83%97%E3%83%AD%E3%83%B3%E3%83%97%E3%83%88%E3%81%8B%E3%82%89Kiro%E3%81%A8Bright+Data%E3%81%A7%E3%82%A6%E3%82%A7%E3%83%96%E3%82%B9%E3%82%AF%E3%83%AC%E3%82%A4%E3%83%91%E3%83%BC%E3%82%92%E6%A7%8B%E7%AF%89%E3%81%99%E3%82%8B&url=https://brightdata.jp/blog/ai/web-scrapers-with-kiro-power)







##  あなたは下記にもご興味がおありかもしれません

 [ ![OpenHuman with Bright Data](https://media.brightdata.jp/2026/09/OpenHuman-with-Bright-Data.png) ](https://brightdata.jp/blog/ai/openhuman-with-bright-data "Bright Data CLIを通じたOpenHumanにおける本番対応ウェブアクセス")

 [AI



 ![Antonello Zanini](https://media.brightdata.jp/2022/12/Antonello-Zanini-2-50x50.jpg)

Antonello Zanini

Technical Writer





### Bright Data CLIを通じたOpenHumanにおける本番対応ウェブアクセス

Bright Data CLIをOpenHumanに統合して、AIエージェント向けの本番対応ウェブアクセスとデータ収集を実現します。



 09-Sep-2026

 3 分読

 ](https://brightdata.jp/blog/ai/openhuman-with-bright-data)

 [ ![Multimodal Web Scraping with MiniMax](https://media.brightdata.jp/2026/09/Multimodal-Web-Scraping-with-MiniMax.png) ](https://brightdata.jp/blog/%e3%82%a6%e3%82%a7%e3%83%96%e3%83%87%e3%83%bc%e3%82%bf/multimodal-web-scraping-with-minimax "MiniMaxによるマルチモーダルウェブスクレイピング")

 [ウェブデータ



 ![Antonello Zanini](https://media.brightdata.jp/2022/12/Antonello-Zanini-2-50x50.jpg)

Antonello Zanini

Technical Writer





### MiniMaxによるマルチモーダルウェブスクレイピング

Bright Data Web UnlockerとMiniMax M3ビジョンを組み合わせて、画像やウェブページのスクリーンショットから構造化データを抽出します。



 09-Sep-2026

 1 分読

 ](https://brightdata.jp/blog/%e3%82%a6%e3%82%a7%e3%83%96%e3%83%87%e3%83%bc%e3%82%bf/multimodal-web-scraping-with-minimax)

 [ ![The 10 Best CLI Tools for Codex in 2026](https://media.brightdata.jp/2026/08/The-10-Best-CLI-Tools-for-Codex-in-2026.png) ](https://brightdata.jp/blog/ai/best-cli-tools-for-codex "2026年版 Codex向けCLIツール10選 – テスト＆ランキング")

 [AI



 ![Daniel Shashko](https://media.brightdata.jp/2022/04/Daniel-Shashko-2-50x50.png)

Daniel Shashko

Web Data &amp; AI Expert





### 2026年版 Codex向けCLIツール10選 – テスト＆ランキング

Codexをより速く、より有能にする10のCLIツール。サンドボックス内から実際のウェブアクセスを提供するBright Data CLIから始まります。



 06-Sep-2026

 4 分読

 ](https://brightdata.jp/blog/ai/best-cli-tools-for-codex)
