UC-DEV-002DeveloperLv2
JS SDK で IDE / Node ワークフロー統合
IDE/Node 上のワークフローに Bright Data 連携を統合する。
JavaScript SDK
KPI 例
- 統合ポイント数
- 実装時間
- 再利用率
JavaScript SDK は、Node.js から Bright Data の検索、スクレイプ、データセット系 API をまとめて扱いたいときに向いています。CLI や素の fetch を都度書くより、SDK 側のクライアント設定に apiKey や zone 名を寄せたほうが、開発環境と CI の差分を減らせます。
誰の課題か
- Node.js ベースのツール、社内 API、ジョブワーカーに Bright Data を組み込みたい開発者
- 検索とスクレイプを別クライアントで持っていて、監視や設定が散らばっているチーム
- 検索結果だけでなく、LinkedIn などのデータセット取得も同じプロジェクトに載せたい担当者
推奨製品セット
| 製品 | 役割 | このページでの使い方 |
|---|---|---|
| JavaScript SDK | Node.js の統一クライアント | search() と scrape() の入口にする |
| SERP API | 検索結果取得 | クエリから候補 URL を見つける |
| Web Unlocker | 一般的なページ取得 | 本文や HTML を取る |
| Dataset API | プラットフォーム別の構造化データ取得 | LinkedIn などの既製データ取得に使う |
- 公式 Docs では
@brightdata/sdkを導入し、bdclientを作成して使う形です。 webUnlockerZoneとserpZoneをクライアント初期化で分けられるため、用途別 zone をコード上で固定しやすい構成です。
最小実装イメージ
npm install @brightdata/sdkimport { bdclient } from "@brightdata/sdk";
const client = new bdclient({
apiKey: process.env.BRIGHTDATA_API_KEY,
serpZone: process.env.BRIGHTDATA_SERP_ZONE,
webUnlockerZone: process.env.BRIGHTDATA_UNLOCKER_ZONE,
});
const searchResult = await client.search("pizza restaurants", {
searchEngine: "google",
country: "jp",
format: "json",
});
console.log(searchResult);
const scrapeResult = await client.scrape("https://example.com", {
dataFormat: "markdown",
format: "raw",
});
console.log(scrapeResult);- Docs 上の
search()は SERP API、scrape()は Web Unlocker API を呼ぶ構成です。 countryは 2 文字コード、dataFormatはmarkdown/html/screenshotが案内されています。
データセット系を同じクライアントで扱う例
import { bdclient } from "@brightdata/sdk";
const client = new bdclient({
apiKey: process.env.BRIGHTDATA_API_KEY,
logLevel: "INFO",
structuredLogging: true,
verbose: false,
});
const res = await client.datasets.linkedin.discoverCompanyPosts([
{ url: "https://www.linkedin.com/company/bright-data" },
]);
const filePath = await client.datasets.snapshot.download(res.snapshot_id, {
filename: "./brd_posts.jsonl",
format: "jsonl",
});
console.log(`Content saved to: ${filePath}`);- これは「Node から検索・取得・ダウンロードまでを同一 SDK に載せる」例です。
- スクレイプ対象が既製データセットで済むなら、生 HTML を自前で解析するよりこちらのほうが実装は軽くなります。
運用ポイント
apiKeyは環境変数で渡し、ADMIN権限キーをアプリ実行に使わないでください。serpZoneとwebUnlockerZoneを分けると、用途ごとのコストや失敗率を zone 単位で追いやすくなります。structuredLogging: trueを有効にしておくと、バッチやワーカーでのログ集約がしやすくなります。- 検索結果は JSON のまま保持し、本文取得や整形は別ステップに分けたほうが障害点を切り分けやすくなります。
- zone 自動作成機能があっても、本番では命名ルールを決めて手動管理したほうが運用事故は少なくなります。