Communitygithub.com

ProjectOpenSea/opensea-skill

透過官方 CLI、SDK、MCP 伺服器或 Shell 腳本查詢 OpenSea 市集資料。可取得地板價、收藏統計、NFT 詳細資訊、代幣資料、熱門收藏、發售、事件、搜尋、收藏項目、個人檔案和收藏設定,以及其他錢包範圍的操作。交易請使用 opensea-marketplace,代幣交換請使用 opensea-swaps。

opensea-skill 是什麼?

此技能提供對 OpenSea API 的全面存取,讓開發者和 AI 代理能夠查詢 NFT 與代幣資料、瀏覽發售項目、串流即時事件,並在包括以太坊、Base、Arbitrum、Optimism、Polygon 等鏈上進行搜尋。它支援多種平台:可直接使用 `@opensea/cli` CLI 工具、透過 MCP 伺服器整合、或透過 SDK 與 Shell 腳本進行程式化存取。主要功能包括取得收藏詳細資訊與統計、NFT 擁有權與中繼資料、代幣詳細資訊與趨勢、跨實體搜尋(收藏、NFT、代幣、帳戶)、市集查詢(掛單與報價)、事件監控與即時串流,以及發售資格檢查與鑄造交易建構。對於需要錢包驗證的操作(如個人檔案設定、收藏偏好、取消訂單),此技能提供了完整的 SIWE(使用以太坊登入)驗證流程、受限的個人存取權杖建立、以及短期 JWT 交換的支援。需要注意的是,此技能僅供讀取查詢與非交易性操作;執行買賣或建立新的交易掛單需使用 `opensea-marketplace` 技能,而 ERC20 代幣交換則需使用 `opensea-swaps`。

相容平台~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/ProjectOpenSea/opensea-skill/tree/main/opensea-api

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

OpenSea API

查詢 NFT 和代幣資料、瀏覽發售、串流事件,並在以太坊、Base、Arbitrum、Optimism、Polygon 等鏈上進行搜尋。

何時使用此技能 (scope_in)

在以下情況使用 opensea-api:

  • 收藏詳細資訊、統計、特徵、趨勢與熱門收藏
  • NFT 詳細資訊、擁有權、中繼資料更新
  • 代幣詳細資訊、熱門代幣、頂級代幣、代幣群組
  • 跨收藏、NFT、代幣與帳戶進行搜尋
  • 搜尋與探索已註冊的 AI 代理工具 (ERC-8257)
  • 讀取市集掛單、報價與訂單(不執行它們)
  • 事件與活動監控(包括即時 WebSocket 串流)
  • 發售與鑄造資格
  • 帳戶查詢與 ENS 解析
  • 經驗證的個人檔案、收藏設定、監看清單、發售、訂單取消與錢包連結操作,如 references/authentication.md 所述
  • 無頭式 SIWE、範圍限制的 PAT 建立、短期 JWT 交換,以及錢包驗證的 REST 或 MCP

何時不應使用此技能 (scope_out, 轉交)

需求請改用
購買/出售 NFT(履行掛單或報價)opensea-marketplace
建立新的掛單或報價opensea-marketplace
跨鏈 NFT 購買opensea-marketplace
交換 ERC20 代幣opensea-swaps
設定錢包簽署提供者opensea-wallet
建構/註冊/控管 AI 代理工具opensea-tool-sdk

快速開始

# 解析 API 金鑰:重複使用你的環境變數 / 快取的即時金鑰,或擷取一個
# 新的即時金鑰(無需註冊)並儲存到磁碟以供重複使用。請參閱
# 下面的「API 金鑰解析」—— 務必儲存並重複使用擷取到的金鑰。
export OPENSEA_API_KEY=$(scripts/auth/opensea-resolve-key.sh)

# 全域安裝 CLI(或使用 npx)
npm install -g @opensea/cli

# 取得收藏資訊
opensea collections get boredapeyachtclub

# 取得地板價與交易量統計
opensea collections stats boredapeyachtclub

# 取得 NFT 詳細資訊
opensea nfts get ethereum 0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d 1234

# 在 OpenSea 上搜尋
opensea search "cool cats"

# 取得熱門代幣
opensea tokens trending --limit 5

API 金鑰解析(在首次請求前閱讀此段)

每個 OpenSea 請求都需要 OPENSEA_API_KEY。如果你還沒有金鑰, 你可以擷取一個即時免費層級金鑰,無需註冊。唯一重要的 規則是:一旦你擷取了一個即時金鑰,請將其儲存到磁碟並重複使用。 請勿 在每次請求時重新擷取。第二次擷取可能會失敗,導致你沒有金鑰。 先前的成功請求 不會為你保留金鑰。

流程(按順序執行這些步驟,每次皆如此)

  1. 先檢查環境變數。 如果 OPENSEA_API_KEY 已設定且 非空,則直接使用它。這是提供自有金鑰的使用者的路徑 —— 絕對不要覆寫或重新擷取它。
  2. 接著檢查磁碟。 如果沒有環境變數,請在 ~/.opensea/api_key 尋找快取金鑰(使用 $OPENSEA_CONFIG_DIR 覆寫目錄)。如果該 檔案存在且非空,則將其載入到 OPENSEA_API_KEY 中並使用。
  3. 僅在缺少時才擷取。 如果既沒有環境變數也沒有快取金鑰, 則從 POST /api/v2/auth/keys 請求一個新的即時金鑰。
  4. 擷取後立即儲存。 將擷取到的金鑰寫入 ~/.opensea/api_key(權限 600)在 進行你的 API 呼叫之前,以便下一步 —— 以及所有未來的請求——重複使用它,而不是重新擷取。

scripts/auth/opensea-resolve-key.sh 輔助工具為你執行所有四個步驟,並 列印解析到的金鑰。相較於裸 curl ... /auth/keys 呼叫,請優先使用它, 後者會擷取但不儲存,而這正是導致金鑰遺失的原因:

# 有環境變數?-> 使用它。有快取金鑰?-> 重複使用。否則擷取 + 儲存到磁碟。
export OPENSEA_API_KEY=$(scripts/auth/opensea-resolve-key.sh)

opensea collections get boredapeyachtclub

如果你無法使用這個輔助工具,請以明確的順序邏輯複製相同的步驟:

KEY_FILE="${OPENSEA_CONFIG_DIR:-$HOME/.opensea}/api_key"
if [ -n "${OPENSEA_API_KEY:-}" ]; then
  :                                              # 1. 環境變數優先
elif [ -s "$KEY_FILE" ]; then
  export OPENSEA_API_KEY=$(cat "$KEY_FILE")      # 2. 重複使用快取金鑰
else
  api_key=$(curl -s -X POST https://api.opensea.io/api/v2/auth/keys | jq -r '.api_key')  # 3. 擷取
  mkdir -p "$(dirname "$KEY_FILE")"
  (umask 077; printf '%s\n' "$api_key" > "$KEY_FILE")  # 4. 使用前先儲存
  export OPENSEA_API_KEY="${api_key}"
fi

邊緣情況

  • 金鑰已存在(環境變數或快取檔案): 重複使用它;不要擷取新的。 重新擷取會浪費速率限制額度,並且可能失敗。
  • 金鑰無效或過期(即時金鑰在 7 天後過期;請求會回傳 HTTP 401/403):快取金鑰已過時。使用 scripts/auth/opensea-resolve-key.sh --force 重新擷取並覆寫快取 (或刪除 ~/.opensea/api_key 並重新執行流程)。--force 絕不覆寫 透過 OPENSEA_API_KEY 環境變數提供的金鑰。
  • 擷取失敗(HTTP 429 速率限制,或網路錯誤):請不要在 緊密迴圈中重試。如果你有快取金鑰,請繼續使用它。否則請稍後再試 ,或在 Settings → Developer 建立完整金鑰。對於 比即時免費層級更高的速率限制,請使用完整金鑰。

你也可以使用 opensea auth request-key 或 scripts/auth/opensea-auth-request-key.sh 擷取原始金鑰(JSON 回應,不持久化)——但如果你 使用這些方法,你必須依照上述步驟 4 自行儲存金鑰。

任務指南

建議: 使用 opensea CLI (@opensea/cli) 作為你的主要工具。使用 npm install -g @opensea/cli 安裝或使用 npx @opensea/cli。scripts/ 中的 Shell 腳本仍可作為替代方案使用。

讀取 NFT 資料

任務CLI 指令替代方案
取得收藏詳細資訊opensea collections get <slug>collections/opensea-collection.sh <slug>
取得收藏統計opensea collections stats <slug>collections/opensea-collection-stats.sh <slug>
取得熱門收藏opensea collections trending [--timeframe <tf>] [--chains <chains>]collections/opensea-collections-trending.sh [timeframe] [limit] [chains] [category]
取得頂級收藏opensea collections top [--sort-by <field>] [--chains <chains>]collections/opensea-collections-top.sh [sort_by] [limit] [chains] [category]
列出收藏中的 NFTopensea nfts list-by-collection <slug> [--limit <n>] [--traits <json>]collections/opensea-collection-nfts.sh <slug> [limit] [next]
取得單一 NFTopensea nfts get <chain> <contract> <token_id>nfts/opensea-nft.sh <chain> <contract> <token_id>
按錢包列出 NFTopensea nfts list-by-account <chain> <address> [--limit <n>]accounts/opensea-account-nfts.sh <chain> <address> [limit]
按合約列出 NFTopensea nfts list-by-contract <chain> <contract> [--limit <n>]
取得收藏特徵opensea collections traits <slug>
取得合約詳細資訊opensea nfts contract <chain> <address>
更新 NFT 中繼資料opensea nfts refresh <chain> <contract> <token_id>

讀取代幣資料

任務CLI 指令替代方案
取得熱門代幣opensea tokens trending [--chains <chains>] [--limit <n>]get_trending_tokens (MCP)
按交易量取得頂級代幣opensea tokens top [--chains <chains>] [--limit <n>]get_top_tokens (MCP)
取得代幣詳細資訊opensea tokens get <chain> <address>get_tokens (MCP)
取得代幣交換活動opensea tokens activity <chain> <address> [--limit <n>] [--next <cursor>]tokens/opensea-token-activity.sh
取得帳戶代幣活動opensea tokens account-activity <address> [--chains <chains>] [--tokens <tokens>] [--type <types>] [--limit <n>] [--next <cursor>]
列出代幣群組opensea token-groups list [--limit <n>] [--next <cursor>]tokens/opensea-token-groups.sh [limit] [cursor]
按 slug 取得代幣群組opensea token-groups get <slug>tokens/opensea-token-group.sh <slug>
搜尋代幣opensea search <query> --types tokensearch_tokens (MCP)
檢查代幣餘額get_token_balances (MCP)

錢包驗證的 REST 和 MCP

在作為錢包操作之前,請閱讀 錢包驗證 參考資料。其中包含 CLI 和 SDK 的快樂路徑、REST 和 MCP 標頭、憑證生命週期和復原規則。

市集查詢(唯讀)

任務CLI 指令替代方案
取得收藏的最佳掛單opensea listings best <slug> [--limit <n>] [--traits <json>]listings/opensea-best-listing.sh <slug> <token_id>
取得特定 NFT 的最佳掛單opensea listings best-for-nft <slug> <token_id>listings/opensea-best-listing.sh <slug> <token_id>
取得 NFT 的最佳報價opensea offers best-for-nft <slug> <token_id>offers/opensea-best-offer.sh <slug> <token_id>
列出所有收藏掛單opensea listings all <slug> [--limit <n>]listings/opensea-listings-collection.sh <slug> [limit]
列出所有收藏報價opensea offers all <slug> [--limit <n>]offers/opensea-offers-collection.sh <slug> [limit]
取得收藏報價opensea offers collection <slug> [--limit <n>]offers/opensea-offers-collection.sh <slug> [limit]
取得特徵報價opensea offers traits <slug> --type <type> --value <value>
按雜湊值取得訂單orders/opensea-order.sh <chain> <order_hash>

伺服器端特徵過濾

三個收藏範圍的端點接受 traits 查詢參數以進行伺服器端過濾:

端點CLISDK
列出收藏中的 NFTopensea nfts list-by-collection <slug> --traits <json>client.nfts.listByCollection(slug, { traits })
收藏的最佳掛單opensea listings best <slug> --traits <json>client.listings.best(slug, { traits })
收藏的事件opensea events by-collection <slug> --traits <json>client.events.byCollection(slug, { traits })

--traits 接受一個 JSON 編碼的 { "traitType": string, "value": string } 物件陣列。多個條目以 AND 組合:

opensea nfts list-by-collection doodles-official \
  --traits '[{"traitType":"Background","value":"Red"}]'

始終優先使用伺服器端過濾而非客戶端:分頁未過濾的集合會浪費速率限制額度。

搜尋

任務CLI 指令
搜尋收藏opensea search <query> --types collection
搜尋 NFTopensea search <query> --types nft
搜尋代幣opensea search <query> --types token
搜尋帳戶opensea search <query> --types account
搜尋多種類型opensea search <query> --types collection,nft,token
在特定鏈上搜尋opensea search <query> --chains base,ethereum

事件與監控

任務CLI 指令替代方案
列出近期事件opensea events list [--event-type <type>] [--limit <n>]
取得收藏事件opensea events by-collection <slug> [--event-type <type>] [--traits <json>]events/opensea-events-collection.sh <slug> [event_type] [limit]
取得特定 NFT 的事件opensea events by-nft <chain> <contract> <token_id>
取得帳戶事件opensea events by-account <address>
串流即時事件stream/opensea-stream-collection.sh <slug> (需 websocat)

事件類型:sale, transfer, mint, listing, offer, trait_offer, collection_offer

發售與鑄造

任務CLI 指令替代方案
列出發售(精選/即將到來/近期)opensea drops list [--type <type>] [--chains <chains>]drops/opensea-drops.sh [type] [limit] [chains]
取得發售詳細資訊與階段opensea drops get <slug>drops/opensea-drop.sh <slug>
建構鑄造交易opensea drops mint <slug> --minter <address> [--quantity <n>]drops/opensea-drop-mint.sh <slug> <minter> [quantity]
建構跨鏈鑄造交易opensea drops cross-chain-mint <slug> --payer <address> --minter <address> --payment-chain <chain> --payment-token <address> [--quantity <n>]drops/opensea-drop-cross-chain-mint.sh <slug> <payer> <minter> <payment_chain> <payment_token> [quantity]
建構或發送發布交易(擁有者錢包,write:drops)opensea drops publish <slug> [--send] [--wallet-provider <provider>]
建構或發送取消發布交易opensea drops unpublish <slug> [--send] [--wallet-provider <provider>]
將發售媒體與中繼資料上傳到 IPFSopensea drops upload-metadata-ipfs <slug> [--wait] [--interval <s>] [--wait-timeout <s>]
檢查 IPFS 上傳進度opensea drops metadata-ipfs-status <slug> <workflow-execution-id>
請求中繼資料清單 CSV 上傳opensea drops create-manifest-upload <slug>
將檔案上傳到上傳上下文`opensea drops upload-file --context <path-> --file [--index ]`
部署新的 SeaDrop 合約deploy_seadrop_contract (MCP)
檢查部署狀態get_deploy_receipt (MCP)

publish --send 使用配置的 EVM 錢包簽署,並且如果簽署者不是交易的 from(合約的鏈上擁有者)則會拒絕,因為來自任何其他地址的交易都會還原。upload-file 接受單一上傳上下文;對於 create-item-media-upload 回傳的陣列,傳遞 --index <n> 或使用 jq '.[0]' 管線傳送一個元素。當上傳失敗、未找到或超過 --wait-timeout 時,upload-metadata-ipfs --wait 以狀態 1 退出。

對於跨鏈鑄造,請依序提交每個回傳的交易。儲存回傳的 receipt_request 物件完全如接收到的狀態,然後輪詢它直到狀態為 SUCCESS。

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

相關技能