mcpField
D
digikey

digikey

github.com/aklofasその他1.5k517 回インストール6 日前に更新
リポジトリ

digikey について

digikey は DigiKey API とウェブ検索で部品を探し、仕様、価格、在庫、データシート情報を取得するスキルです。KiCad 回路図や MPN リストから PDF を一括同期し、マニフェストで管理できます。

主な機能

  1. 01キーワードや MPN で部品検索
  2. 02仕様、価格、在庫の取得
  3. 03データシートとメディアのリンク取得
  4. 04回路図や MPN リストから PDF を同期
  5. 05マニフェストでダウンロードを記録

活用シーン

  1. 01試作部品の在庫と価格を比較
  2. 02KiCad プロジェクト用のデータシートを取得
  3. 03MPN リストから部品資料を準備

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/aklofas/kicad-happy --skill digikey

インストール後、Claude Code で/digikeyを入力して読み込まれたか確認します。

同梱ファイルscripts/fetch_datasheet_digikey.pyscripts/sync_datasheets_digikey.py

詳細

DigiKey 部品の検索と分析

関連スキル

スキル用途
kicad回路図の分析 — データシート同期用に MPN を抽出します
bomBOM 管理 — 販売代理店をまたいだ調達を統括します
spiceDigiKey のパラメトリックデータを使用して、動作 SPICE モデルを作成します

DigiKey は試作注文の主要な調達先です(Mouser は二次調達先です)。API はデータシートへの PDF 直リンクを返すため、データシートの優先ソースとなります。量産注文については、lcsc/jlcpcb を参照してください。BOM 管理とエクスポートのワークフローについては、bom を参照してください。

API 認証情報の設定

DigiKey API には OAuth 2.0 認証情報が必要です。設定方法は次のとおりです。

  1. DigiKey アカウントをお持ちでない場合は、digikey.com でアカウントを作成します
  2. developer.digikey.com でAPI アプリを登録します:
    • DigiKey アカウントでサインインします
    • 「My Apps」→「Create App」に移動します
    • アプリ名:任意(例:「kicad-happy」)
    • 「Product Information v4」APIを選択します
    • OAuth タイプ:Client Credentials(2-legged、ユーザーログインは不要)
    • コールバック URL:https://localhost(クライアント認証情報では使用しませんが、必須です)
    • 作成後、Client ID と Client Secret を控えます
  3. スクリプトを実行する前に、環境変数を設定します:
    export DIGIKEY_CLIENT_ID=your_client_id_here
    export DIGIKEY_CLIENT_SECRET=your_client_secret_here
    
    認証情報が一元管理されたシークレットファイル(例:~/.config/secrets.env)に保存されている場合は、先に読み込みます:
    export $(grep -v '^#' ~/.config/secrets.env | grep -v '^$' | xargs)
    

クライアント認証情報フローではユーザー操作は不要です。一度設定すれば、API 呼び出しは自動的に動作します。

DigiKey Product Information API v4

DigiKey の検索には API の使用が推奨されます。製品の詳細、価格、在庫、データシート、パラメトリックデータを含む、構造化された JSON が返されます。

ベース URL: https://api.digikey.com

認証

すべての API リクエストには OAuth 2.0 が必要です。クライアント認証情報フロー(2-legged)を使用します。認証情報は環境変数として読み込む必要があります(上記の「API 認証情報の設定」を参照)。

curl -s -X POST https://api.digikey.com/v1/oauth2/token \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "client_id=${DIGIKEY_CLIENT_ID}&client_secret=${DIGIKEY_CLIENT_SECRET}&grant_type=client_credentials"

レスポンスには、10 分間有効な access_token が含まれます。トークンをシェル変数にキャッシュし、同じセッション内の後続の呼び出しで再利用してください。セッション中に 401 エラーが発生した場合、トークンの有効期限が切れています。再認証して新しいトークンを取得してください。

必須ヘッダー

すべての API 呼び出しには次のものが必要です:

X-DIGIKEY-Client-Id: ${DIGIKEY_CLIENT_ID}
Authorization: Bearer <access_token>

任意のロケールヘッダー:

  • X-DIGIKEY-Locale-Language:en(デフォルト)、ja、de、fr、ko、zhs、zht、it、es
  • X-DIGIKEY-Locale-Currency:USD(デフォルト)、CAD、EUR、GBP、JPY など
  • X-DIGIKEY-Locale-Site:US(デフォルト)、CA、UK、DE など
KeywordSearch — 部品を検索
POST /products/v4/search/keyword

これは主要な検索エンドポイントです。MPN、DigiKey 部品番号、説明、キーワードで検索します。

リクエストボディ:

{
  "Keywords": "GRM155R71C104KA88D",
  "Limit": 25,
  "Offset": 0,
  "FilterOptionsRequest": {
    "MinimumQuantityAvailable": 1,
    "SearchOptions": ["InStock", "HasDatasheet", "RoHSCompliant"],
    "ManufacturerFilter": [{"Id": "..."}],
    "CategoryFilter": [{"Id": "..."}],
    "StatusFilter": [{"Id": "..."}],
    "MarketPlaceFilter": "ExcludeMarketPlace"
  },
  "SortOptions": {
    "Field": "Price",
    "SortOrder": "Ascending"
  }
}

主なリクエストフィールド:

  • Keywords(文字列、最大 250 文字)— 検索語(MPN、DK PN、説明)
  • Limit(整数、1-50)— ページあたりの結果数
  • Offset(整数)— ページネーションのオフセット
  • SearchOptions — 次の項目の配列:InStock、HasDatasheet、RoHSCompliant、NormallyStocking、Has3DModel、HasCadModel、HasProductPhoto、NewProduct
  • SortOptions.Field — Price、QuantityAvailable、Manufacturer、ManufacturerProductNumber、DigiKeyProductNumber、MinimumQuantity
  • MarketPlaceFilter — NoFilter、ExcludeMarketPlace、MarketPlaceOnly

レスポンス — 各 Products[] 項目の主なフィールド:

{
  "ManufacturerProductNumber": "GRM155R71C104KA88D",
  "Manufacturer": {"Id": 563, "Name": "Murata Electronics"},
  "Description": {
    "ProductDescription": "CAP CER 100NF 16V X7R 0402",
    "DetailedDescription": "..."
  },
  "UnitPrice": 0.01,
  "QuantityAvailable": 248000,
  "ProductUrl": "https://www.digikey.com/...",
  "DatasheetUrl": "https://...",
  "PhotoUrl": "https://...",
  "ProductVariations": [
    {
      "DigiKeyProductNumber": "490-10698-1-ND",
      "PackageType": {"Name": "Cut Tape"},
      "StandardPricing": [
        {"BreakQuantity": 1, "UnitPrice": 0.01, "TotalPrice": 0.01},
        {"BreakQuantity": 10, "UnitPrice": 0.008, "TotalPrice": 0.08}
      ],
      "QuantityAvailableforPackageType": 248000,
      "MinimumOrderQuantity": 1,
      "StandardPackage": 10000
    }
  ],
  "Parameters": [
    {"ParameterText": "Capacitance", "ValueText": "100nF"},
    {"ParameterText": "Voltage Rated", "ValueText": "16V"},
    {"ParameterText": "Temperature Coefficient", "ValueText": "X7R"},
    {"ParameterText": "Package / Case", "ValueText": "0402 (1005 Metric)"}
  ],
  "ProductStatus": {"Status": "Active"},
  "Category": {"Name": "Ceramic Capacitors"},
  "Classifications": {"RohsStatus": "ROHS3 Compliant"},
  "Discontinued": false,
  "EndOfLife": false,
  "NormallyStocking": true
}
ProductDetails — 1 つの部品の詳細情報
GET /products/v4/search/{productNumber}/productdetails

特定の部品の詳細情報を取得する場合に使用します。{productNumber} には、DigiKey 部品番号またはメーカー部品番号を指定できます。

クエリパラメーター:

  • manufacturerId(任意)— 複数のメーカーに一致する MPN を識別します(例:「CR2032」)

すべてのパラメーター、価格(アカウントで認証されている場合は MyPricing を含む)、メディアリンク、関連製品を含む、完全な Product オブジェクトを返します。

その他の便利なエンドポイント
エンドポイントメソッド説明
/products/v4/search/{pn}/productdetailsGET1 つの部品の完全な製品情報
/products/v4/search/productpricing/{pn}GET部品の MyPricing を含む価格情報
/products/v4/search/{pn}/mediaGET部品のすべてのメディア(画像、データシート)
/products/v4/search/manufacturersGETすべてのメーカー(KeywordSearch フィルターで ID を使用)
/products/v4/search/categoriesGETすべてのカテゴリ(KeywordSearch フィルターで ID を使用)
/products/v4/search/{pn}/alternatepackagingGET代替パッケージの選択肢
/products/v4/search/{pn}/substitutionsGET代替部品
/products/v4/search/{pn}/recommendedproductsGET推奨部品/関連部品
レート制限

1 分あたりおよび 1 日あたりの割り当てが適用されます。超過時は Retry-After ヘッダー付きの HTTP 429 が返されます。

エラーレスポンス

すべてのエラーは DKProblemDetails を返します:

{"type": "...", "title": "...", "status": 401, "detail": "Invalid token", "correlationId": "..."}

フォールバック:DigiKey ウェブサイトの取得

API 認証情報が利用できない場合、または認証に失敗した場合は、製品ページを直接取得して DigiKey を検索します:

https://www.digikey.com/en/products/result?keywords=<url-encoded-query>

例:

  • https://www.digikey.com/en/products/result?keywords=GRM155R71C104KA88D(MPN による)
  • https://www.digikey.com/en/products/result?keywords=100nF+0402+X7R+16V(仕様による)

DigiKey からの結果はノイズが多い場合があります(JS を多用するページ)。DigiKey 型番、MPN、説明、単価、在庫数量、データシートリンクを含む製品テーブルの行を探してください。結果が切り捨てられているか空の場合は、キーワードではなく正確な MPN で検索してみてください。

データシートのダウンロードと分析

DigiKey の API はデータシートの直接 PDF URLを提供します。これはウェブスクレイピングを回避し、信頼性が高く安定したリンクを返すため、データシートをダウンロードするための推奨方法です。他のスキル(kicad、bom)は、データシートのソースとして DigiKey API を第一候補として使用する必要があります。

データシートディレクトリの同期(主要ワークフロー)

sync_datasheets_digikey.py を使用して、KiCad プロジェクトと並行して datasheets/ ディレクトリを維持します。これは回路図からコンポーネントを抽出し、DigiKey でデータシート URL を検索し、不足している PDF をダウンロードし、manifest.json マニフェストを書き込みます。以降の実行は増分方式です — 新規または変更された部品のみが取得されます。

# Sync datasheets for a KiCad project (creates datasheets/ next to the schematic)
python3 <skill-path>/scripts/sync_datasheets_digikey.py <file.kicad_sch>

# Preview what would be downloaded
python3 <skill-path>/scripts/sync_datasheets_digikey.py <file.kicad_sch> --dry-run

# Retry previously failed downloads
python3 <skill-path>/scripts/sync_datasheets_digikey.py <file.kicad_sch> --force

# Custom output directory
python3 <skill-path>/scripts/sync_datasheets_digikey.py <file.kicad_sch> -o ./my-datasheets

# Use pre-computed analyzer JSON instead of running the analyzer
python3 <skill-path>/scripts/sync_datasheets_digikey.py analyzer_output.json

# Parallel downloads (3 workers)
python3 <skill-path>/scripts/sync_datasheets_digikey.py <file.kicad_sch> --parallel 3

# Batch mode — sync from a plain MPN list (no KiCad project required)
python3 <skill-path>/scripts/sync_datasheets_digikey.py --mpn-list mpns.txt --output ./datasheets

MPN リストのバッチモード(KH-312) — MPN のリストはあるが、指定できる KiCad プロジェクトがない場合(ハーネスのデータシートシード、新しい部品ライブラリの一括シード)に使用します。ファイル形式は 1 行につき 1 つの MPN です。空行と # コメント(行全体およびインライン)はスキップされます。MPN 以外の文字列(100nF や DNP などの汎用値)は is_real_mpn() によってフィルタリングされ、重複が排除されます。--output を省略した場合、出力はデフォルトで現在の作業ディレクトリの ./datasheets/ になります。

このスクリプトは:

  • kicad 回路図アナライザーを自動的に実行してコンポーネントと MPN を抽出します
  • 汎用パッシブをフィルタリング — 実際の MPN を持たないエントリ(例:「100nF」、「10K」)をスキップします
  • 最初に回路図 URL を試行 — DigiKey API にアクセスする前に KiCad シンボルに埋め込まれたデータシート URL を使用し、API 呼び出しを節約します
  • manifest.json マニフェストを書き込み — 各 MPN を PDF ファイル、メーカー、説明、ダウンロードステータス、URL にマッピングします。kicad スキルは設計レビュー中にこれを読み取り、データシートと回路図を相互参照します。
  • 失敗を追跡 — 失敗したダウンロードはエラーの詳細とともに記録され、--force を使用しない限り以降の実行では再試行されません
  • レート制限あり — DigiKey API 呼び出しの間に 1 秒(--delay で設定可能)
  • 進捗を増分で保存 — 中断された場合、すでにダウンロードされたファイルは保持されます

manifest.json マニフェストの構造:

{
  "schematic": "/path/to/file.kicad_sch",
  "last_sync": "2026-03-09T04:44:30+00:00",
  "parts": {
    "TPS61023DRLR": {
      "file": "TPS61023DRLR.pdf",
      "manufacturer": "Texas Instruments",
      "description": "Boost converter",
      "datasheet_url": "https://...",
      "status": "ok",
      "references": ["U3", "U2"],
      "size_bytes": 2392725
    }
  }
}
単一データシートのダウンロード

単発でデータシートをダウンロードするには、fetch_datasheet_digikey.pyを使用します。メーカー固有の問題は自動的に処理されます。

# Search by MPN (uses DigiKey API, requires credentials)
python3 <skill-path>/scripts/fetch_datasheet_digikey.py --search "TPS61023" -o datasheet.pdf

# Direct URL download
python3 <skill-path>/scripts/fetch_datasheet_digikey.py "https://www.ti.com/lit/gpn/tps61023" -o datasheet.pdf

# JSON output for script integration
python3 <skill-path>/scripts/fetch_datasheet_digikey.py --search "ADP1706" --json

このスクリプトの機能:

  • OSに依存しません — Pythonのrequestsライブラリを使用します(wget/curlへの依存はありません)。requestsがインストールされていない場合は、urllibにフォールバックします。
  • リダイレクトURLを正規化します — TI製品のDigiKeyのDatasheetUrlはJavaScriptのリダイレクトページを指すため、スクリプトがPDFへの直接リンクを抽出します。また、プロトコル相対URLの//mm.digikey.com/...も修正します。
  • 適切なUser-Agentを設定します — 多くのメーカーサイト(Nexperia、Lite-On、STMicro、Molex)は、urllibやcurlによるUser-Agentなしのリクエストをブロックしますが、ブラウザーのUser-Agentを指定すればPDFを配信します。
  • PDFヘッダーを検証します — ダウンロードを装ったHTMLエラーページやCloudflareのチャレンジページを拒否します。
  • 代替ソースにフォールバックします — 主要URLで失敗した場合、Microchipの既知のURLパターンを試します。
  • ヘッドレスブラウザーへのフォールバック — playwrightがインストールされている場合、JavaScript経由でPDFを配信するサイト(Broadcomのドキュメントビューアー、Espressifのダウンロードリダイレクト)に対する最終手段として、ヘッドレスのChromiumブラウザーを自動的に使用します。ダウンロードイベントを検知し、レスポンス本文を直接読み取ります。
  • 終了コード:0 = 成功、1 = ダウンロード失敗、2 = 検索/APIエラー
  • 依存関係:
    • pip install requests(強く推奨します。urllibのフォールバックでは、analog.comのようなHTTP/2サイトを処理できません)
    • pip install playwright && playwright install chromium(任意。JavaScriptを多用するサイト向けに、ヘッドレスブラウザーへのフォールバックを有効にします)
メーカーとの互換性

8つのオープンソースKiCadプロジェクトの部品240点でテスト済みです(ダウンロード成功率96%、Playwrightなしの場合は94%)。

メーカー状態備考
TI動作しますURLの正規化によりJavaScriptのリダイレクト用ラッパーを除去します
ADI / Analog動作しますrequestsがHTTP/2を透過的に処理します
STMicro動作しますUser-Agentヘッダーが必要です
Nexperia動作しますUser-Agentヘッダーが必要です
Lite-On動作しますUser-Agentヘッダーが必要です
Molex動作しますUser-Agentヘッダーが必要です
Renesas動作します直接ダウンロード
ON Semi動作します直接ダウンロード
NXP動作します直接ダウンロード
Diodes Inc動作します直接ダウンロード
Microchip動作しますAPI URL経由で直接ダウンロード
YAGEO、Samsung、Murata動作しますDigiKeyがホストするPDF(mm.digikey.com)
Broadcom動作します*Playwrightが必要です — docs.broadcom.comはJavaScript経由でPDFを配信します
Espressif動作します*Playwrightが必要です — ダウンロードのリダイレクトにJavaScriptの実行が必要です
Lattice一部動作します一部のURLではCookie/認証が必要です
  • playwrightパッケージが必要です。インストールされていない場合は、ユーザーへの通知に適切にフォールバックします。
ダウンロードに失敗した場合

スクリプトまたはインラインでのダウンロードが失敗した場合(終了コード1)、ユーザーにその旨を伝え、URLを提示してください。実際のブラウザーでURLを開けるようにします。一部のメーカーサイト(Lattice、TDK InvenSense)では、ヘッドレスブラウザーでも処理できない対話型ログイン、Cookie、CAPTCHAが必要です。Playwrightをインストールすると、BroadcomとEspressifのデータシートは自動的にダウンロードされるようになりました。

ユーザーへのメッセージ例:

ICE40UP5K-SG48Iのデータシートを自動でダウンロードできませんでした — Latticeのサイトではブラウザー認証が必要です。直接リンクはこちらです: https://www.latticesemi.com/-/media/LatticeSemi/Documents/DataSheets/iCE/FPGA-DS-02008-1-9-iCE40-Ultra-Plus-Family-Data-Sheet.ashx

ブラウザーで開いてローカルに保存してください。保存後、内容を読み取って分析できます。

失敗時も、--jsonの出力には常にdatasheet_urlフィールドが含まれるため、プログラムからURLを取得できます。

手動ダウンロードの手順

スクリプトが利用できない場合や、インラインで処理する必要がある場合:

  1. KeywordSearch または ProductDetails を使用して部品を検索します
  2. API の応答から DatasheetUrl を抽出します
  3. URL を正規化します — // で始まる場合は、先頭に https: を追加します。ti.com/general/docs/suppproductinfo を含む場合は、gotoUrl クエリパラメーターを抽出します。
  4. Python の requests、またはブラウザーの User-Agent を指定した wget/curl でダウンロードします
  5. PDF であることを確認します:先頭の 4 バイトが %PDF であること

DatasheetUrl フィールドが空、またはすべてのダウンロード方法が失敗した場合:

  • 手動でブラウザーからダウンロードできるよう、URL をユーザーに提示します
  • 代替のメディアリンクを取得するため、/products/v4/search/{pn}/media エンドポイントを試します
  • 最後の手段として Web 検索を行います:"<MPN> datasheet filetype:pdf"
データシートから抽出する項目

KiCad の設計レビュー(kicad スキルを参照)のためにデータシートを分析する際は、以下を確認します:

  • 絶対最大定格 — 電圧、電流、温度の上限
  • 推奨動作条件 — 一般的な動作範囲
  • ピン配置とピンの説明 — KiCad のシンボルと照合します
  • パッケージ寸法 — KiCad のフットプリントと照合します
  • 代表的なアプリケーション回路 — ユーザーの回路図と比較します
  • 熱特性 — 消費電力の計算に用いる θJA、θJC
  • 電気的特性 — 主要なパラメーター(Vout、Iq、PSRR など)

ヒント

  • DigiKey の PN サフィックス:-ND は標準、-1-ND はカットテープ、-2-ND は digi-reel、-6-ND はフルリール
  • サードパーティ販売業者の掲載を避けるには、ExcludeMarketPlace フィルターを使用します
  • ProductVariations[].StandardPricing[] にある価格区分を確認します — BreakQuantity のしきい値をチェックしてください
  • 部品を選択する前に、ProductStatus と Discontinued/EndOfLife を確認します

コメント