mcpField
S
scrape-zyte-login

scrape-zyte-login

github.com/zytedataクラウド・DevOps11149 回インストール2 日前に更新
リポジトリ

scrape-zyte-login について

scrape-zyte-loginは、Zyteのスクレイピング用認証情報を設定するスキルです。OAuthの手順を案内し、APIキーの値を表示せずに.envへ保存します。

主な機能

  1. 01環境変数と.envの認証情報を確認
  2. 02ZyteのOAuthセットアップを実行
  3. 03名前からプロジェクトとAPIキーを選択
  4. 04キーを.envに安全に保存
  5. 05選択したプロジェクトIDを保存

活用シーン

  1. 01Zyteのスクレイピング認証情報を初期設定
  2. 02プロジェクト用のZyte APIキーを取得・保存
  3. 03認証情報の設定状況を確認

インストール

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

$npx skills add https://github.com/zytedata/skills --skill scrape-zyte-login

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

同梱ファイルscripts/oauth.py

詳細

API キーをトランスクリプトに表示してはいけません。キーの値を直接読み上げたり、読み取ったり、書き出したりしないでください。

SHUB_APIKEY と ZYTE_API_KEY はプロジェクトの .env ファイルに保存されます。.env をバージョン管理の対象から除外してください。

1. 認証情報を確認する

各キーが環境変数に設定されているか、または .env に保存されているかを報告してください(エクスポートはしないでください)。

{ [ -n "$ZYTE_API_KEY" ] || grep -q '^ZYTE_API_KEY=' .env 2>/dev/null; } && echo "ZYTE_API_KEY: present" || echo "ZYTE_API_KEY: missing"
{ [ -n "$SHUB_APIKEY" ] || grep -q '^SHUB_APIKEY=' .env 2>/dev/null; } && echo "SHUB_APIKEY: present" || echo "SHUB_APIKEY: missing"

両方が存在する場合は、手順 3 に進んでください。

2. OAuth セットアップフローを実行する

ユーザーに次のように伝えてください。

ブラウザーで Zyte OAuth セットアップフローを開始します。そこでログインと同意を完了してください。

OAuth フロースクリプトを実行してください。

uv run ${CLAUDE_SKILL_DIR}/scripts/oauth.py --production

スクリプトは SHUB_APIKEY を .env に直接保存し(値は表示されません)、プロジェクトとキーのファイルも保存します。出力には Saved data to /path/to/file や Saved SHUB_APIKEY to .env のような行が含まれます。出力を確認し、プロジェクトとキーのファイルのパスを特定してください。

.env がバージョン管理の対象から除外されたままであることを確認してください。

grep -qxF '.env' .gitignore 2>/dev/null || echo '.env' >> .gitignore
3. ユーザーにプロジェクトと Zyte API キーを選んでもらう

手順 2 で見つかったプロジェクトとキーのファイルから、ユーザーに次の情報を提示してください。

  • 利用可能なすべてのプロジェクト:project id と project name
  • 利用可能なすべての Zyte API キー:apikey name(キーの値は表示しないでください)

ユーザーに、プロジェクトを 1 つ、API キーを 1 つ、それぞれ名前で選ぶように依頼してください。

ユーザーが API キーを選んだら、同じファイルからそのダウンロード URL を取得し、ダウンロードして、.env の ZYTE_API_KEY に保存してください。既存のエントリーがある場合は置き換えてください。値はターミナルに表示されず、シェルにもエクスポートされません(SHUB_APIKEY は .env から読み取られます)。

ラッパースクリプトは、1 行目に HTTP ステータスコードを、残りの行にレスポンス本文を出力します。以下のコマンドは、失敗したレスポンス(認証エラーの本文など)がキーとして .env に書き込まれるのを防ぎます。ステータスが 200 の場合にのみキーを保存し、それ以外の場合はサーバーのレスポンスを出力して、失敗をユーザーに報告できるようにします(キーの値は表示されません)。

OUT="$(uv run ${CLAUDE_SKILL_DIR}/../scrape-scrapy-cloud/scripts/scrapy_cloud_api.py GET $URL)"
if [ "$(printf '%s\n' "$OUT" | head -n1)" = "200" ]; then
  { grep -v '^ZYTE_API_KEY=' .env 2>/dev/null; printf 'ZYTE_API_KEY=%s\n' "$(printf '%s\n' "$OUT" | tail -n +2)"; } > .env.tmp && mv .env.tmp .env
  echo "ZYTE_API_KEY stored in .env"
else
  echo "Failed to download Zyte API key; .env left unchanged. Server response:"
  printf '%s\n' "$OUT"
fi

失敗が報告された場合は、先に進まないでください。最も一般的な原因は、SHUB_APIKEY が存在しない、または解決されていないことです(.env から読み取るには shub>=2.18.1 が必要です)。

読み取り後、プロジェクトとキーのファイルを削除してください。

rm /path/to/projects-and-keys.json
4. 選択したプロジェクト ID を保存する

手順 3 でユーザーがプロジェクト ID を選択した場合は、保存してください。

mkdir -p .scrape/.zyte
echo "PROJECT_ID" > .scrape/.zyte/project-id

プロジェクトが選択されなかった場合は、スキップしてください。ユーザーに「Zyte の認証情報が有効です。」と伝えてください。

呼び出し元に返してください。

Zyte setup complete:
  ZYTE_API_KEY: present
  SHUB_APIKEY: present
  Project ID: 12345 (or not saved)

コメント