已导入店铺
最近导入记录
流程说明
- 采集:在已登录的商家后台商品列表页运行采集脚本,只读页面已有的数据,按店铺名分别保存。
- 导入:采集器推送,或在「店铺导入 / 对比」上传 JSON / 粘贴 CSV,支持价格单位与店铺名标注。
- 对比:选 A / B 两个店,自动列出「A 有 B 无」的商品,即 B 店还没上架的品,可导出 CSV。
- 上架:在商品库改写标题与价格、生成草稿、导出上架 CSV(可选)。
数据源已切换为你自己的店铺后台,不再依赖多多进宝开放 API,也不需要应用审核或授权备案。
已导入的店铺
当前数据源已切换为你自己的店铺后台,不再依赖多多进宝开放 API。商品按「店铺名 + 商品ID」分别保存,所以同一个商品在两个店会各有一条记录。
① 在商家后台采集本店商品
只读页面已有数据,不模拟登录、不破解签名- 用 Edge 打开并登录 商家后台 → 商品管理 → 商品列表,把每页条数调成 100(默认 10 条),少翻几次页。
- 按
F12打开控制台,点下面「复制采集脚本」,粘贴到控制台并回车,右上角会出现采集面板。若浏览器拦截剪贴板,会自动弹出已全选的脚本框,按Ctrl+C即可。 - 在面板填店铺名(两个店务必用不同名字,例如「A店」「B店」),点后台「查询」或翻页让数据加载;翻页会自动累计去重,勾选状态跨页保留。
- 在面板清单里(或后台列表每行前的勾选框)只勾选要采集的商品,点「只推送勾选的 N 件」。不勾不会入库,也不用逐个点开商品详情。
- 若跨域被拦,改用「下载勾选的 JSON」在下面②上传;然后切换另一个店铺账号重复一次(记得改店铺名)。
这里给出的脚本已写入当前站点地址。请勿直接复制 /collector.js 的原始源码(里面还是未替换的占位符,推送地址会不对)。
② 导入 / 粘贴数据
支持采集器 JSON、后台接口响应、后台导出的 CSV③ 两店对比 · 找出还没上架的商品
A 有 B 无 = B 店还没上的品采集参数
对应多多进宝官方接口 pdd.ddk.goods.search| 商品 | 拼单价 / 券 | 佣金 | 上架价 | 状态 | 操作 | |
|---|---|---|---|---|---|---|
| 加载中… | ||||||
通道 A · 草稿 + CSV 导出 推荐
把选中的商品按上架字段(标题、加价后价格、类目、图片、描述)导出为 UTF-8 CSV,直接导入拼多多商家后台批量发布。无需商家应用审核,落地最快。
通道 B · 商家 API 直连 需授权
调用 pdd.goods.add 需要:商家应用审核、店铺 OAuth 授权 token、商家标准类目 ID、运费模板、以及图片转存到拼多多图床。工具会先做完整预检,条件不满足时不会发起调用。
采集任务日志
| ID | 关键词 | 模式 | 来源接口 | 拉取 / 新增 / 更新 | 结果 | 说明 | 时间 |
|---|
当前数据来源:自己的店铺后台
无需开放平台商品来自你已登录的 mms.pinduoduo.com 商家后台,由采集脚本读取页面已有数据(或上传后台导出的 CSV)后导入,按店铺名分别保存,用于两店对比。整个过程不需要 client_id / client_secret、应用审核、OAuth 授权或推广位备案。
本页下方灰显的「多多进宝开放平台」「推手授权」「④⑤ 接入条件 / 备案诊断」均为旧版功能,已停用,保留仅为兼容与排错记录,不影响店铺导入、双店对比与上架草稿。真正需要配置的只有下面「上架改写规则」。
多多进宝开放平台(旧版 · 已停用)
商品检索接口要求携带已完成授权备案的 PID,否则返回 sub_code=60001。留空时自检会从账号自动读取;也可用 Secrets 注入 PDD_PID(优先级更高)。
安全建议:生产环境优先用 wrangler pages secret put PDD_CLIENT_SECRET 等 Secrets 注入,环境变量优先级高于此处,且不会落库。密钥明文一旦保存会写入 D1 settings 表。
上架改写规则
规则只对「新采集」的商品自动生效;已有商品可在商品库点「重算上架价」批量应用,人工改过的标题会被覆盖。
数据库
表结构由 migrations/0001_init.sql 定义。若接口提示表不存在,请执行 npm run db:init(本地)或 npm run db:init:remote(线上)。
推手授权 · OAuth2.0 回调(旧版 · 已停用)
当前流程用不到https://xppdd.pages.dev/api/oauth/callback读取中…必须带 https:// 或 http:// 协议头(截图里那条灰字提示就是这个意思)。开放平台只能填一个回调地址,发起授权时用的 redirect_uri 必须与它字符串完全一致,否则平台拒绝跳转。建议现在就填线上地址。
「回调函数」就是本项目里的 functions/api/oauth/callback.js:接收 code、校验 state、调用 pdd.pop.auth.token.create 换取 token 并写入 D1。
注意:商品检索 pdd.ddk.goods.search 无需用户授权,本工具采集时也不携带 token。这个字段虽是创建应用的必填项,不影响你现在采集商品;只有以后做推广链接、推广订单查询时才需要完成上面的授权。
线上部署 · xppdd.pages.dev
点开查看逐条命令项目名已从 pdd 换成 xppdd,线上地址为 https://xppdd.pages.dev(旧的 pdd.pages.dev 属于别人的站点,请勿使用)。本地开发仍是 http://127.0.0.1:8788。
① 创建 D1 数据库并绑定
npx wrangler login npx wrangler d1 create pdd-goods # 把输出里的 database_id 填回项目根目录 wrangler.toml 的 [[d1_databases]] npx wrangler d1 migrations apply pdd-goods --remote
本地已跑通:npm install → npm run db:init → npm run dev(打开 http://127.0.0.1:8788),自动测试用 npm test。线上还需要:Dashboard → Workers & Pages → xppdd → Settings → Functions → D1 database bindings 添加变量名 DB 指向 pdd-goods(若 Wrangler 部署时 wrangler.toml 绑定生效则会自动带上)。
② 可选:写接口鉴权令牌
npx wrangler pages secret put ADMIN_TOKEN --project-name xppdd # 旧版多多进宝才需要,可跳过: # npx wrangler pages secret put PDD_CLIENT_ID --project-name xppdd # npx wrangler pages secret put PDD_CLIENT_SECRET --project-name xppdd
本地开发把同样的键名写进 .dev.vars。设置 ADMIN_TOKEN 后,前端会提示输入令牌,所有写接口要求 X-Admin-Token 请求头。线上建议另设 IMPORT_TOKEN:npx wrangler pages secret put IMPORT_TOKEN --project-name xppdd,然后在采集面板的「导入令牌」里填同一个值(会自动带上 X-Import-Token 请求头),否则公网任何人都能往商品库推数据。
③ 部署
npm run deploy # 等价于:npx wrangler pages deploy ./public --project-name xppdd # 部署完成访问 https://xppdd.pages.dev
项目名必须是 xppdd 才会得到 xppdd.pages.dev 域名;首次部署如提示项目不存在,先执行 npx wrangler pages project create xppdd --production-branch main。也可用 Git 连接 Cloudflare Pages,构建命令留空、输出目录填 public。
④ 旧版 · 多多进宝官方 API 接入条件(已停用)
- 在
open.pinduoduo.com注册开发者,创建多多客 / 推手类应用并通过审核,拿到client_id与client_secret。 - 本工具调用
pdd.ddk.goods.search(商品检索)、pdd.ddk.goods.recommend.get(推荐商品)、pdd.ddk.goods.detail(详情),这几个接口无需用户授权,用应用密钥签名即可。 - 创建应用时「回调地址」填
https://xppdd.pages.dev/api/oauth/callback(本地调试填http://127.0.0.1:8788/api/oauth/callback)。这个地址与上方「推手授权」卡片里显示的一致,背后由/api/oauth/callback处理。 - 若要推广链接 / 订单类接口,在「推手授权」卡片点「生成授权链接」完成 OAuth2.0(
https://jinbao.pinduoduo.com/open.html),平台会带code跳回回调地址,工具自动换取access_token存入 D1。商品检索不需要这一步,也不携带该 token。 - 回到「系统设置」把模式切到官方 API 并填密钥,再到「商品采集」执行即可。密钥无效时页面会直接显示网关返回的错误码与信息。
⑤ 关于「一键上架」的真实边界
本工具已闭环:采集 → 去重入库 → 自动改写标题/加价 → 生成上架草稿 → 导出 UTF-8 CSV → 商家后台批量导入 → 回写上架状态。
API 直连 pdd.goods.add 属于需店铺授权的写接口,还强依赖:商家应用审核、店铺 OAuth access_token、商家标准类目 ID、运费模板 ID、SKU 结构,以及先用 pdd.goods.image.upload 把图片转存到拼多多图床。工具内置了调用骨架与完整预检,条件不齐时不会发起调用、也不会伪造成功,会直接列出还差哪些配置。
合规提示:当前商品数据来自你自己的商家后台,采集脚本只读取页面已经接收到的数据或你手动导出的文件,不模拟登录、不破解签名、不构造未公开接口请求。两个店铺的商品文案与图片请确认你有权使用。
⑥ 旧版 · 真实网关诊断记录(已停用,仅作排错存档)
把响应里原先被忽略的 sub_code / sub_msg 打出来后,原因已完全确认:pdd.goods.cats.get 成功返回 124 个一级类目 → 密钥、MD5 签名、时间戳全对;pdd.ddk.goods.pid.query 成功返回推广位 44963469_319115100 → client_id 与多多客绑定已生效、应用权限正常;pdd.ddk.member.authority.query 返回 bind=0 → 推手本人尚未做授权备案。
商品检索报的 50001 业务服务错误 只是外层壳,真正原因是 sub_code=60001:未传入已经授权备案过的相关参数(pid/custom_parameters)。这与「授权管理 → 添加账号」无关:商品检索不需要 OAuth 授权账号,也不需要 access_token;那个页面是给工具商做多多客授权、查询订单/推广位用的。
解决办法:打开「快速搜品」页点「检查接入状态」,用「已登录拼多多、且与多多进宝推手是同一个」的账号打开生成的备案链接,点页面上的「确认授权」;看到 bind=1 后即可拉真实商品。也可在项目根目录跑 npm run setup 拿链接并复查,npm run probe 单独探活。
官方说明:授权备案 FAQ。一个拼多多账号最多备案给 5 个推手身份,本人只需备案一次;另外官方 FAQ 说明 client_id 绑定后暂不支持解绑,别绑错账号。在此之前页面默认 DEMO 数据,全流程照常可演示。