プログラマー向けモードで表示中ビジネスユーザー向けへ
Bright Data 学習ポータル
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 SDKNode.js の統一クライアントsearch()scrape() の入口にする
SERP API検索結果取得クエリから候補 URL を見つける
Web Unlocker一般的なページ取得本文や HTML を取る
Dataset APIプラットフォーム別の構造化データ取得LinkedIn などの既製データ取得に使う
  • 公式 Docs では @brightdata/sdk を導入し、bdclient を作成して使う形です。
  • webUnlockerZoneserpZone をクライアント初期化で分けられるため、用途別 zone をコード上で固定しやすい構成です。

最小実装イメージ

npm install @brightdata/sdk
import { 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 文字コード、dataFormatmarkdown / 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 権限キーをアプリ実行に使わないでください。
  • serpZonewebUnlockerZone を分けると、用途ごとのコストや失敗率を zone 単位で追いやすくなります。
  • structuredLogging: true を有効にしておくと、バッチやワーカーでのログ集約がしやすくなります。
  • 検索結果は JSON のまま保持し、本文取得や整形は別ステップに分けたほうが障害点を切り分けやすくなります。
  • zone 自動作成機能があっても、本番では命名ルールを決めて手動管理したほうが運用事故は少なくなります。

関連リンク