关于 scrape-zyte-login
scrape-zyte-login 是用于配置 Zyte 抓取凭据的技能,面向使用 Zyte 项目和 API Key 的用户。它通过 OAuth 流程设置凭据,并将敏感值保存在 .env 中而不显示密钥。
主要功能
- 01检查环境与 .env 中的凭据状态
- 02运行 Zyte OAuth 设置流程
- 03按名称选择项目与 API Key
- 04将密钥安全保存至 .env
- 05保存所选项目 ID
适用场景
- 01首次配置 Zyte 抓取凭据
- 02为选定项目获取并保存 Zyte API Key
- 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(绝不显示密钥值)
请用户按名称选择一个项目和一个 API 密钥。
用户选择 API 密钥后,从同一文件中获取其下载 URL,下载该密钥,并将其存入 .env 中的 ZYTE_API_KEY,替换任何现有条目。密钥值不会打印到终端,也不会导出到 shell(SHUB_APIKEY 从 .env 中读取)。
包装脚本会在第一行打印 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(需要 shub>=2.18.1,它会从 .env 中读取该值)。
读取后清理项目和密钥文件:
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)