亚马逊店铺文件上传(与 linkfox-amazon-store-auth 同系列),通过 /spApi/developerProxy 调用 Uploads API v2020-11-01 的 createUploadDestinationForResource 获取上传目标 URL,随后向该 URL 上传文件,用于 A+ 内容。
本 skill 专用于 向 Amazon 申请上传目的地并上传文件,与 linkfox-amazon-store-auth 同系列:依赖 linkfox-amazon-store-auth 选店( sellerId + region);直接 POST /spApi/developerProxy 传入 sellerId + region 调用 createUploadDestinationForResource,最后用 upload_to_destination.py 对返回的 URL 执行 PUT(不经网关)。
这是 Uploads API,不是 Orders 订单接口。订单见
linkfox-amazon-store-orders;批量 Feed 文件见linkfox-amazon-store-feeds。
POST /spApi/developerProxy(不同操作通过请求体区分;完整参数/响应/错误码见 references/api.md)python scripts/<脚本名>.py '<JSON 参数>' [--inline](可用脚本见上文脚本一览)输出策略(脚本默认行为):
<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/linkfox-amazon-store-uploads-<timestamp>.json( <cwd> 为脚本执行时的工作目录,在 Claude Code 里即当前项目目录; <session> 取自环境变量 SESSION_ID,按用户任务自动聚合; 禁止写入 /tmp,当前目录不可写则报错)total/ costToken、最大列表字段的长度 + 前 3 条样本)--inline 强制全量打印到 stdout(同样落盘)读数据建议:先看摘要判断是否足够;需要具体字段时优先用 jq 或 ConvertFrom-Json 从保存的 json 文件按需抽取,避免整份 JSON 进入上下文。
发生以下异常情况时,采用 references/onboarding.md 引导解决问题:
LINKFOX_AGENT_API_KEY,也未配置 LINKFOXAGENT_API_KEY。createUploadDestinationForResource · Create an upload destination
linkfox-amazon-store-auth。resource 须与下游 API 文档一致(例如 A+: aplus/2020-11-01/contentDocuments;Messaging 为对应 messages 资源路径)。contentMD5 为待上传文件内容的 Base64 MD5 摘要;传 filePath / content 时脚本可自动计算。text
create_upload_destination_for_resource → uploadDestination { uploadDestinationId, url, headers }
upload_to_destination (PUT url + headers) → 在 A+/Messaging 等 API 中引用 uploadDestinationId
脚本说明create_upload_destination_for_resource.pyPOST uploads/2020-11-01/uploadDestinations/{resource}``upload_to_destination.pyPUT 到返回的 url(带 headers)_spapi_uploads_common.py内部公共模块
bash
export LINKFOXAGENT_API_KEY="<your-key>"
# 1) 创建上传目的地(自动根据 filePath 计算 contentMD5)
python scripts/create_upload_destination_for_resource.py '{
"sellerId":"A1...",
"region":"NA",
"resource":"aplus/2020-11-01/contentDocuments",
"marketplaceId":"ATVPDKIKX0DER",
"filePath":"/path/to/banner.jpg",
"contentType":"image/jpeg"
}'
# 2) 上传文件(将上一步 stdout 中的 uploadDestination 传入)
python scripts/upload_to_destination.py '{
"uploadDestination": { "url": "...", "headers": { } },
"filePath": "/path/to/banner.jpg"
}'
developerProxy,再看 uploadDestination。resource 传未编码的下游资源路径;可带或不带前导 /,生成 path 时保留内部 /(greedy path),不得预编码成 %2F。uploads/2020-11-01/ 前缀。同一店铺连续收到 Amazon SP-API 的 400、403、404 或 429 时,网关会返回 450、453、454 或 459 并短暂冷却。这些自定义状态码不是 Amazon 原生状态,也不表示封号;目的是避免持续异常或高频调用扩大店铺风险。
状态与 message范围触发与冷却处理450: 400,请求异常,请优化您的参数店铺+接口60 秒内超过 3 次:5 分钟;10 分钟内超过 4 次:20 分钟停止原参数重试,检查必填字段、marketplace、ID、日期和请求体453: 403,店铺未授权,请先授权店铺全部接口60 秒内超过 2 次:5 分钟;10 分钟内超过 4 次:30 分钟停止该店铺调用,检查授权、权限、店铺归属和区域454: 404,资源不存在,请优化您的参数店铺+接口60 秒内超过 3 次:5 分钟;10 分钟内超过 4 次:30 分钟确认资源 ID、所属店铺/站点、资源状态和接口路径459: 429限流中,请降低频率店铺+接口首次:15 秒;2 分钟内超过 2 次:30 秒;3 分钟内超过 4 次:2 分钟降低并发、分页和轮询频率并逐级退避
retryAfter、 blockedUntil,没有时按表中时长说明。reportId、 feedId 等任务 ID;写操作结果不确定时先查询状态,不直接重放。不消耗算力。
Feedback: skillName: linkfox-amazon-store-uploads。
更多跨境 skill: LinkFox Skills