尧图精选

基于 Codex 爬虫构建亚马逊无人上架系统|竞品详情采集到商品发布完整实现

🕒 发布时间:2026/10/2 11:47:46 📁 来源:尧图网络
1. 从竞品详情到 Listing 发布无人上架链路到底卡在哪做亚马逊铺货的团队最耗人的环节从来不是选品而是「把竞品详情扒下来 → 改写成自己的文案 → 组装成合规 Listing → 通过 SP-API 提交上去」这条链路。单看每一步都不难难的是把它串成一条能无人值守跑起来的流水线。我见过太多团队卡在三个地方爬虫抓下来的字段和 SP-API 要的字段对不上、SP-API 授权和限流没管好导致批量提交一半失败、以及文案直接照搬竞品被平台判重复。这篇要交付的就是一条可复制的链路用 Codex 爬虫做竞品详情采集把抓到的原始 JSON 做字段映射再通过 SP-API 完成商品创建与批量发布。同时我会把模型调用的 endpoint 统一改到 TaoToken 管理这样爬虫里的 AI 改写、翻译、关键词提取都走同一个 Key 和通道不用在多个服务商之间来回切。适合谁看已经在做亚马逊、手上有开发者账号、想用代码把铺货流程自动化的运营和工程同学。先说清楚边界。爬虫只抓亚马逊前台公开展示的数据不碰卖家后台私有接口文案必须经过 AI 改写不能原样复制SP-API 调用要按官方配额做限流。这三条是红线后面每一段都会落到具体配置上。整条链路我拆成四层数据源接入层Codex 爬虫、清洗与 AI 加工层、SP-API 刊登层、调度监控层。下面按「先跑通单条、再批量、最后无人值守」的顺序展开每一步都给可复制的配置和命令。2. TaoToken 前置把爬虫里的模型调用统一到一个 endpointCodex 爬虫本身负责抓取和解析但「AI 合规重构」这一步——标题差异化重写、五点描述原创改写、多语种翻译、核心关键词提取——是要调大模型的。如果每个环节各接一家服务商Key 管理、额度监控、失败重试都会变成灾难。我的做法是把所有模型调用统一走 TaoToken 的 API 通道爬虫里只认一个 Base URL 和一个 Key。TaoToken 在这里的角色是「统一调用通道 Key 管理」你拿到一个 API Key把 endpoint 指向https://taotoken.net/api爬虫里的改写、翻译、埋词提取全部复用这一个入口。官网入口在 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 注册后在控制台创建 Key。具体操作路径打开控制台 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 登录后进入 API Keys 页面 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 创建一个新 Key 并复制保存。模型 ID 的选择改写和翻译用通用对话模型即可关键词提取可以用同一个模型加不同 prompt。你可以在模型对话页 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 先手动试几条竞品文案确认改写质量再写进爬虫。如果你的爬虫是长期跑批、还要接 Agent 做自动重试建议直接上 Coding Plan https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 额度更稳适合无人值守场景。这里有个关键点TaoToken 是模型调用通道不是爬虫代理也不替代你的编辑器或 SP-API。它只解决「爬虫里的 AI 加工步骤调哪个模型、用哪个 Key」这一个问题。SP-API 的授权和调用是另一套体系下面单独讲。配置上我习惯在爬虫项目根目录放一个.env把模型通道和 SP-API 凭证分开管理# .env TAOTOKEN_BASE_URLhttps://taotoken.net/api TAOTOKEN_API_KEYsk-你的Key TAOTOKEN_MODELgpt-4o-mini # SP-API下面章节会用到 SPAPI_CLIENT_IDamzn1.application-oa2-client.xxxx SPAPI_CLIENT_SECRETamzn1.oa2-cs.v1.xxxx SPAPI_REFRESH_TOKENAtzr|xxxx SPAPI_MARKETPLACE_IDATVPDKIKX0DER这样爬虫代码里读TAOTOKEN_BASE_URL就能切换通道不用改业务逻辑。踩过的坑是有人把 Key 硬编码在爬虫脚本里批量跑的时候一个 Key 泄露全组遭殃务必走环境变量。3. 可复制配置Codex 爬虫 字段映射 SP-API 刊登这一节是全文的技术核心分三块爬虫配置、字段映射、SP-API 提交。每一块都给可直接复制的片段。3.1 Codex 爬虫配置JSONCodex 爬虫的策略我按「静态解析 动态接口抓包」两条路走。静态页面拿基础元数据动态渲染的变体和隐藏属性走异步接口。下面是一份可复制的爬虫配置字段清单对齐了后面 SP-API 需要的属性{ crawler: { name: amazon_competitor_detail, concurrency: 8, request_interval_ms: 1200, retry: { max: 3, backoff_ms: 2000 }, headers: { User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36, Accept-Language: en-US,en;q0.9 }, targets: { asin_list: input/asins.xlsx, shop_urls: [https://www.amazon.com/stores/example], keywords: [wireless earbuds, usb c hub] }, fields: [ asin, title, brand, model, category_path, bullet_points, long_description, search_terms, attributes, variants, main_images, a_plus_images, video_url, price, promo_price, rating, review_count ], output: { format: json, path: data/raw/{asin}.json } }, ai_rewrite: { base_url: https://taotoken.net/api, model: gpt-4o-mini, tasks: [title_rewrite, bullet_rewrite, translate, keyword_extract], target_locales: [en_US, de_DE, ja_JP] } }request_interval_ms和concurrency是限流的关键别贪快。我实测下来并发 8、间隔 1.2 秒是比较稳的组合再高容易触发前台验证。3.2 字段映射竞品原始字段 → SP-API 属性爬虫抓下来的字段名和 SP-API 要的属性名对不上这是最容易出错的地方。下面这张对照表是我踩坑后整理的直接照着映射爬虫字段SP-API 属性说明titleitem_name必须改写不能原样brandbrand品牌名注意侵权校验bullet_pointsbullet_point五点数组最多 5 条long_descriptionproduct_description长描述search_termsgeneric_keywords后台埋词空格分隔category_pathrecommended_browse_nodes需转成节点 IDvariantsrelationships变体关系需子 ASINmain_imagesmain_product_image_locator主图 URLpricepurchasable_offer含币种和金额映射代码片段Pythondef map_to_spapi(raw: dict, rewritten: dict) - dict: return { item_name: rewritten[title], brand: raw[brand], bullet_point: rewritten[bullets][:5], product_description: rewritten[long_description], generic_keywords: .join(rewritten[keywords]), recommended_browse_nodes: resolve_node_id(raw[category_path]), main_product_image_locator: raw[main_images][0], purchasable_offer: { currency: USD, our_price: {schedule: [{value_with_tax: raw[price]}]} } }注意recommended_browse_nodes需要你把类目路径转成亚马逊的节点 ID这一步建议单独维护一张映射表别在代码里硬编码。3.3 SP-API 授权与提交参数SP-API 用 LWALogin with Amazon授权流程是用 refresh_token 换 access_token再带 access_token 调接口。下面是换 token 和创建 Listing 的配置# 1. 换 access_token curl -X POST https://api.amazon.com/auth/o2/token \ -H Content-Type: application/x-www-form-urlencoded \ -d grant_typerefresh_token \ -d refresh_token$SPAPI_REFRESH_TOKEN \ -d client_id$SPAPI_CLIENT_ID \ -d client_secret$SPAPI_CLIENT_SECRET拿到 access_token 后创建 Listing 走PUT /listings/2021-08-01/items/{sellerId}/{sku}curl -X PUT https://sellingpartnerapi-na.amazon.com/listings/2021-08-01/items/$SELLER_ID/$SKU?marketplaceIds$SPAPI_MARKETPLACE_ID \ -H x-amz-access-token: $ACCESS_TOKEN \ -H Content-Type: application/json \ -d { productType: PRODUCT, requirements: LISTING, attributes: { item_name: [{value: 改写后的标题, language_tag: en_US}], brand: [{value: YourBrand}], bullet_point: [{value: 卖点1}, {value: 卖点2}] } }限流方面SP-API 每个接口都有配额批量提交时建议用令牌桶控制速率别一次性打满。失败的商品进重试队列连续失败三次标记人工复核。4. 验证请求确认采集、改写、发布三段都通配置写完不算完得逐段验证。我的验证顺序是先验爬虫抓取再验 AI 改写最后验 SP-API 发布。第一段爬虫抓取验证。跑单条 ASIN看输出的 JSON 字段是否齐全python crawler.py --asin B0XXXXXXXX --output data/raw/ cat data/raw/B0XXXXXXXX.json | jq .title, .bullet_points, .variants如果variants是空的说明动态接口没抓到检查request_interval_ms是不是太短被限流了。第二段AI 改写验证。把原始 JSON 喂给改写流程确认输出走的是 TaoToken 通道python rewrite.py --input data/raw/B0XXXXXXXX.json --locale en_US改写结果里标题应该和原文有明显差异五点描述不能出现连续重复句。如果报 401说明 Key 或 Base URL 配错了回到第 2 节检查.env。第三段SP-API 发布验证。先用一个测试 SKU 提交看返回python publish.py --sku TEST-SKU-001 --dry-rundry-run只做字段校验不真提交确认无误后去掉--dry-run正式提交。成功的话返回里会有status: ACCEPTED失败会带errors数组里面是具体的报错码。三段都通之后把单条流程包成批量任务接上定时调度就进入无人值守模式了。调度层建议记录三类日志采集日志、改写日志、发布结果日志方便出问题时回溯。5. 本篇常见错排查401、限流、字段缺失、OAuth 失败这一段列几个我实际遇到过的报错对照着排查。401 Unauthorized模型通道爬虫改写步骤报 401八成是TAOTOKEN_API_KEY没读到或者 Base URL 写成了带路径的地址。检查.env里TAOTOKEN_BASE_URLhttps://taotoken.net/apiKey 有没有多余空格。如果 Key 是对的还报 401去控制台确认 Key 是否被禁用或额度耗尽。local proxy failed这个报错通常出现在你本地网络环境有额外代理设置时请求没走到目标地址。排查方法是先用 curl 直接打https://taotoken.net/api看通不通如果 curl 通而爬虫不通检查爬虫的 HTTP 客户端有没有继承系统代理配置。reading choices 报错调模型返回时解析choices字段失败一般是返回体不是预期的 JSON 结构。可能是模型 ID 写错了或者请求体格式不对。用模型对话页手动发一条同样的请求对比返回结构。OAuth / LWA 授权失败SP-API 换 token 时报invalid_grant检查 refresh_token 是否过期、client_id 和 secret 是否匹配。注意 refresh_token 只能用一次换一个 access_token别并发换。字段缺失导致发布失败SP-API 返回MISSING_REQUIRED_ATTRIBUTE对照第 3.2 节的映射表看是哪个字段没填。最常见的是recommended_browse_nodes没转成节点 ID或者purchasable_offer缺币种。限流报错QuotaExceeded批量提交太快触发配额。降低并发加令牌桶失败的商品延迟重试。别用固定 sleep用指数退避更稳。排查时记住一个原则先分段定位再针对性修。爬虫问题看采集日志改写问题看模型返回发布问题看 SP-API 的 errors 数组。三段日志分开存出问题一眼能看出卡在哪。6. 把 Key 和调用通道收口链路才能长期跑这条链路跑通之后真正决定它能不能长期无人值守的不是爬虫写得多花哨而是调用通道和 Key 管理有没有收口。爬虫里的改写、翻译、埋词提取如果散落在多个服务商任何一个额度耗尽或 Key 失效整条流水线就断在半路。我的做法是模型调用全部走 TaoToken 一个 endpointSP-API 凭证单独管理两套体系互不干扰。这样爬虫代码里只需要维护一个TAOTOKEN_BASE_URL和一个 Key换模型、调额度、加站点都在控制台完成不用动业务代码。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 里面有各语言的调用示例照着改爬虫里的请求部分就行。如果你还在单条调试阶段先去模型对话页 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 把改写 prompt 调顺如果已经要批量跑、接 Agent 做自动重试直接上 Coding Plan https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 更省心。Key 在 API Keys 页面 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 创建创建完记得写进.env别硬编码。最后留一个实用技巧批量发布时把「采集成功但改写失败」和「改写成功但发布失败」分成两个队列前者重跑改写后者重跑发布别混在一起重试否则会重复消耗模型额度。日志里带上 ASIN 和 SKU 做关联出问题能快速定位到具体商品。
上一篇/下一篇内容由系统自动关联 返回资讯列表 →