请尝试:1) 强制刷新 (Ctrl+Shift+R) 2) 清除缓存 3) 检查网络/VPN
请登录以访问系统
{{ uploadStatus }}
💡 支持格式:ZIP, RAR (仅支持这两种格式)
💡 选择文件夹会自动扫描其中所有的压缩包
💡 支持并行上传,最多同时上传 8 个文件
暂无图片包记录,请先上传压缩包
{{ batchInferStatus }}
请勿关闭页面,推理将在后台继续...
{{ spPackage?.archive_filename }}
每个颜色 = 一个 SKC。请勾选需要发布的颜色。
包信息参考价: ¥{{ spPackage?.price || 0 }}
{{ JSON.stringify(spSubmitResult.detail, null, 2) }}
暂无产品,请先上传图片包
格式:供应商拼音大写_型号
默认使用:压缩包文件名 + 文件夹名
标题: {{ selectedRecord.ai_content.title }}
关键词: {{ selectedRecord.ai_content.keywords?.join(', ') }}
价格区间: ¥{{ selectedRecord.ai_content.suggested_price_range?.[0] }} - ¥{{ selectedRecord.ai_content.suggested_price_range?.[1] }}
格式:供应商拼音首字母大写 + 下划线 + 型号
标题: {{ selectedRecord.ai_content.title_cn }}
材质: {{ selectedRecord.ai_content.material }}
风格: {{ selectedRecord.ai_content.style }}
价格建议: ¥{{ selectedRecord.ai_content.suggested_price_range?.[0] }} - ¥{{ selectedRecord.ai_content.suggested_price_range?.[1] }}
说明:选择宽度约 750px 的前 10 张图片进行 AI 分析,自动识别包包的尺寸、材质、颜色等属性
产品:{{ selectedProduct?.name }}
产品数:{{ shop.product_count }} | 待发订单:{{ shop.pending_orders }}
绑定 Worker: {{ shop.worker_id }} 未绑定
暂无店铺,请先添加
TikTok 全托管登录信息
浏览器数据目录自动管理:server/playwright_data/{店铺ID}/
| ID | 类型 | 平台/店铺 | Worker | 状态 | 创建时间 |
|---|---|---|---|---|---|
| {{ task.id?.substring(0,8) }} | {{ task.type }} | {{ task.platform }} / {{ task.shop_id?.substring(0,8) }} | {{ task.assigned_worker || '-' }} | {{ task.status }} | {{ new Date(task.created_at).toLocaleString() }} |
暂无任务
{{ worker.worker_id }}
支持平台:{{ worker.capabilities?.join(', ') }}
CPU: {{ worker.cpu_usage?.toFixed(1) }}% | 内存:{{ worker.memory_usage?.toFixed(1) }}%
浏览器:{{ worker.browser_instances }}/{{ worker.max_browser_instances }}
最后心跳:{{ new Date(worker.last_heartbeat).toLocaleString() }}
暂无工作机连接
{{ provider.base_url }}
暂无 AI 提供者配置
配置 AI 识别包包属性时使用的固定模型,设置后图片包列表的"AI 识别"按钮将自动使用此配置。
⚠️ 暂无启用的配置,请添加配置以使用 AI 识别功能
创建时间:{{ new Date(config.created_at).toLocaleString() }}
暂无 AI 识别配置
配置 AI 识别单张图片时使用的固定模型,设置后图片列表中的"AI 识别"按钮将自动使用此配置。
⚠️ 暂无启用的配置,请添加配置以使用 AI 单图识别功能
创建时间:{{ new Date(config.created_at).toLocaleString() }}
暂无 AI 单图识别配置
配置 AI 聊天助手使用的固定模型,设置后 AI 助手将自动使用此配置。
⚠️ 暂无启用的配置,请添加配置以使用 AI 助手功能
创建时间:{{ new Date(config.created_at).toLocaleString() }}
暂无 AI 助手配置
批量推理和一键推理时的最大并发数量(1-50),建议 5-15
暂无图片
唯一标识符,不能与其他提供者重复
兼容 OpenAI 格式的 API 地址
API Key 或访问令牌
选择一个在线的工作机,查看其浏览器画面并进行远程操作
🖥️
选择工作机并连接以查看远程画面
授权流程:
APP_ID: {{ app.app_id }}
Secret: {{ app.app_secret_masked }}
环境: {{ app.environment === 'production' ? '生产' : '测试' }}
回调: {{ app.redirect_url }}
暂无应用配置
授权页面已在新窗口打开,请在 SHEIN 页面完成授权。
授权成功后系统将自动换取密钥并创建店铺。
OpenKeyId: {{ shop.open_key_id }}
SecretKey: {{ shop.secret_key_status }} {{ shop.secret_key_masked }}
环境: {{ shop.environment === 'production' ? '生产' : '测试' }}
授权时间: {{ shop.authorized_at }}
基础信息
商品 & 库存
订单 & 履约
财务
暂无已授权的 SHEIN 店铺
{{ JSON.stringify(sheinQueryResult, null, 2) }}
授权成功后 SHEIN 将重定向到此地址
日常同步只捞「最近有变动」的单,补不回早就发完、之后再没动过的老单 —— 要看几个月前的账就得从这里按下单时间补一次。 补回来的存本地库,已经补过的区间不会重复拉。 这个接口限流很紧(约每分钟 1 次),单量大时要等一两分钟。
日界按美西时间(America/Los_Angeles)划分,与卖家后台一致;金额为订单总额(含税运),取消单不计入。
| SKU | ASIN | 在仓 | 在途 | 预留 | 分拨 | 不可售 | 合计 |
|---|---|---|---|---|---|---|---|
| {{ it.seller_sku }} | {{ it.asin }} | {{ it.fulfillable }} | {{ it.inbound_total }} | {{ it.reserved_total }} | {{ it.reserved_transshipment }} | {{ it.unfulfillable }} | {{ it.total_quantity }} |
没有符合条件的库存
{{ amzAliasEditing.parent_asin }}
父 ASIN 本身记不住,起个自己的叫法,建广告选品时按别名找。留空并保存即删除别名。
| SKU | ASIN | 父 ASIN | 商品名 | 在仓 | 在途 | 预留 | 分拨 | 不可售 | 合计 | 操作 |
|---|---|---|---|---|---|---|---|---|---|---|
| {{ it.seller_sku }} | {{ it.asin }} | {{ it.parent_asin || '—' }} | {{ it.product_name }} | {{ it.fulfillable }} | {{ it.inbound_total }} | {{ it.reserved_total }} | {{ it.reserved_transshipment }} | {{ it.unfulfillable }} | {{ it.total_quantity }} | 已删除 |
没有符合条件的库存
{{ amzOrderRangeLabel }} 计入销售额
{{ fmtUsd(amzOrderSummary.counted.amount) }}
{{ amzOrderSummary.counted.orders }} 单 (含非美元,见下)
其中已发货
{{ fmtUsd(amzOrderSummary.shipped.amount) }}
{{ amzOrderSummary.shipped.orders }} 单
其中等待中
{{ fmtUsd(amzOrderSummary.waiting.amount) }}
{{ amzOrderSummary.waiting.orders }} 单 · 亚马逊对待处理单还没给金额
不计入
{{ fmtUsd(amzOrderSummary.excluded.amount) }}
{{ amzOrderSummary.excluded.orders }} 单 · 取消/发不出去
{{ amzOrderSummary.note }}
| 订单号 | 下单时间(美西) | 状态 | 配送 | 金额 | 州 | 商品 |
|---|---|---|---|---|---|---|
| {{ o.amazon_order_id }} | {{ o.purchase_date_pt }} | {{ o.order_status }} | {{ o.fulfillment_channel==='AFN' ? 'FBA' : '自发货' }} | {{ o.currency }} {{ o.order_total_amount }} | {{ o.ship_state }} |
{{ it.seller_sku }} × {{ it.quantity_ordered }}
{{ o.items_synced ? '—' : '明细待同步' }}
|
该区间没有订单
已归档的活动默认不显示(该账号有 {{ amzAdDist['ARCHIVED'] || 0 }} 个),点上面的「已归档」可查看。
| 类型 | 广告活动 | 归属的款 | 状态 | 投放方式 | 日预算 | 花费(30天) | 广告销售额 | ACOS | 开始 | 广告组 | 操作 | |||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ c.ad_type.toUpperCase() }} | {{ c.name }} | {{ c.parent_alias || c.parent_asin }} — | {{ amzAdStateText(c.state) }} | {{ c.targeting_type || '—' }} | {{ c.budget_amount }} | ${{ c.metrics.cost }} — | ${{ c.metrics.sales }} — | {{ c.metrics.acos }}% — | {{ c.start_date || '—' }} | — | ||||||
|
该活动下没有广告组
|
||||||||||||||||
没有符合条件的广告活动
草稿可以随时保存退出,没填完不会调用任何接口;只有校验通过才能提交创建。
还没有草稿,点右上角「新建草稿」开始
商品与推广内容都是广告的变量,选好两组变量与组合方式, 一次展开成多个广告。展开只生成草稿,确认后才真正创建。
还没有批次,点右上角「新建批次」开始
变量一 · 推广商品 已选 {{ amzBatch.products.length }} 个
先按款筛出子 ASIN,再勾要投的那几个 —— 款(父 ASIN)本身不投放, 只作为广告的归属记录带上。
变量二 · 推广内容 已加 {{ amzBatch.targets.length }} 项
组合方式
占位符:{campaign} {asin} {sku} {target} {index}
展开预览 将生成 {{ amzBatchPreview.total || 0 }} 个广告
已展开的草稿({{ amzBatchDrafts.length }} 份)
| 广告活动 | 动作 | 时间(美西) | 星期 | 上次执行 | 启用 | 操作 |
|---|---|---|---|---|---|---|
| {{ sc.campaign_name || sc.campaign_id }} | {{ sc.action==='enable' ? '启用' : '暂停' }} | {{ sc.run_at }} | {{ amzWeekdayText(sc.weekdays) }} | {{ sc.last_run_at ? (amazonAgo(sc.last_run_at) + ' ' + sc.last_run_result) : '尚未执行' }} |
还没有定时规则
还没有规则。从上面的模板建一条,先让它试算几天。
{{ amzRuleResult.message }}
| 对象 | 花费 | 销售额 | 点击 | ACOS | 动作 |
|---|---|---|---|---|---|
| {{ c.keyword_text || c.campaign_name }} | ${{ (c.metrics || {}).spend }} | ${{ (c.metrics || {}).sales }} | {{ (c.metrics || {}).clicks }} | {{ amzAcosText((c.metrics || {}).acos) }} | {{ c.message }} |
报表由 Amazon 异步生成,提交后通常几分钟完成,后台每 5 分钟自动轮询一次。 每天自动拉取最近几天的数据 —— 广告归因有回溯期,近几天的销售额还会变动,重拉覆盖更准。 当天数据未结算,只统计到昨天。
| 广告活动 | 曝光 | 点击 | CTR | 花费 | CPC | 订单 | 转化率 | 销售额 | ACOS | ROAS |
|---|---|---|---|---|---|---|---|---|---|---|
| {{ m.campaign_name }} | {{ m.impressions.toLocaleString() }} | {{ m.clicks }} | {{ m.ctr !== null ? m.ctr + '%' : '—' }} | ${{ m.cost }} | {{ m.cpc !== null ? ('$' + m.cpc) : '—' }} | {{ m.purchases }} | {{ m.cvr !== null ? m.cvr + '%' : '—' }} | ${{ m.sales }} | {{ m.acos }}% — | {{ m.roas !== null ? m.roas : '—' }} |
该区间没有报表数据。你现有的广告活动都是暂停/归档状态,没有投放就不会产生数据。
最近的报表任务
每步都会自动保存,可以随时关掉,下次接着填
父 ASIN 只是归属记录 —— 用来在广告列表里按款筛选、让规则按款圈范围。 真正投出去的是下面勾选的子 ASIN。起过别名的会显示别名。
已选 {{ amzWizard.selected_skus.length }} 个。在仓为 0 的 SKU 也能建广告,但没库存不会出广告。
关键词没有单独设竞价时用这个值。
品牌创意(SB 广告特有)
{{ amzSbFormatHint }}
素材库里没有标记为品牌 Logo 的素材。可以留空(Amazon 会用品牌注册信息), 也可以在上面直接上传一张。
旗舰店列表接口已停用,地址请从卖家后台的品牌旗舰店页面复制。
视频格式没有落地页配置,点击直接进商品详情页。 已选 {{ (amzWizard.extra.video_asset_ids || []).length }} 个, 素材库共 {{ amzAssets.filter(x => x.is_video).length }} 个视频。
商品定向(SD 特有)
定向自己的商品做防御,或定向竞品做拦截。留空则无法创建。
手动投放至少要一个关键词
还差 {{ amzWizardProblems.length }} 项:
提交后会依次创建:广告活动 → 广告组 → 商品广告 → 关键词。 中途失败可以直接重试,已建好的部分不会重复创建。
这个闸门管什么
国内增值税按季度申报,一个季度的销售额超过 {{ fmtCny(vatGuard.cap_cny) }} 就得申报。 广告是唯一能立刻踩住出单的踏板 —— 季度销售额到 {{ fmtCny(vatGuard.threshold_cny) }} 就把这个店的广告全部暂停,每天北京时间 9 点检查一次。 阈值比申报线低一截是留缓冲:广告停了之后已经进来的单还会继续成交。
{{ (vatGuard.last_detail || {}).quarter || '本季度' }} 已卖
{{ fmtCny(vatGuard.last_sales_cny) }}
{{ (vatGuard.last_detail || {}).orders || 0 }} 单
{{ fmtCny((vatGuard.last_detail || {}).gross_cny) }} − 退货 {{ fmtCny((vatGuard.last_detail || {}).return_cny) }} ({{ (vatGuard.last_detail || {}).return_rate_pct }}%)
没扣退货,这个数偏高
{{ vatGap('headroom_to_threshold').over ? '已超出关广告阈值' : '距关广告的阈值' }}
{{ vatGap('headroom_to_threshold').text }}
阈值 {{ fmtCny(vatGuard.threshold_cny) }}
{{ vatGap('headroom_to_cap').over ? '已超出申报线' : '距增值税申报线' }}
{{ vatGap('headroom_to_cap').text }}
申报线 {{ fmtCny(vatGuard.cap_cny) }}
上次检查
{{ vatGuard.last_check_at ? amazonAgo(vatGuard.last_check_at) : '还没查过' }}
{{ vatGuard.enabled ? (vatGuard.dry_run ? '已启用(只演算)' : '已启用') : '未启用' }}
关掉的话每天不再检查,也不会动广告
新配好时建议先留着,跑几天看日志对不对得上
季度销售额到这个数就把广告全停
只用来算还剩多少余量,不触发动作
订单是美元记的,按这个折人民币。亚马逊报告里用的是当期汇率, 2025Q4 实际是 7.03~7.11 —— 填低了数字会偏小、闸门反应偏晚
亚马逊报告把退货作为负数行冲减销售额,而订单接口给不出退款 (退了款订单仍是 Shipped、金额不变),只能按比例折算。 填 0 就是不扣,算出来偏高、广告会提前停。 这个数每季度从亚马逊税务报告里读一次即可 (该报告 2025Q4 的实际退货率是 15.3%)
两者只在季末那天差十几个小时,对三个月的窗口影响很小
算少了会踩线,算多了只是广告早停几天
默认不开:关广告是省钱,开广告是花钱,让人自己点那一下
| 时间 | 季度 | 销售额 | 阈值 | 状态 | 动作 | 触发 |
|---|---|---|---|---|---|---|
| {{ (g.checked_at || '').replace('T', ' ').slice(0, 19) }} | {{ g.quarter }} | {{ fmtCny(g.sales_cny) }} | {{ fmtCny(g.threshold_cny) }} | {{ vatStatusText(g.status) }} | {{ vatActionText(g.action) }} {{ g.affected }} 条 (演算) | {{ g.trigger==='daily' ? '每日' : '手动' }} |
| 还没有检查记录,点上面的「立即检查一次」试试 | ||||||
还没有单品草稿,点右上角「从图片包起草」开始。多变体商品在「🎨 多变体」里。
还没有变体族,点右上角「从图片包建变体族」开始
当前:{{ amzFam.shared.product_type }}
决定买家在商品页上看到的切换维度
标 * 的是 Amazon 必填。有下拉的必须从选项里选,自己填的值会被拒。 颜色不在这里填 —— 它是每个子变体各自的维度,在下面的子变体表里填。 类型 schema 声明的必填项是不全的,点「问 Amazon 要必填清单」会做一次 只校验不落库的提交,把真正缺的属性全问出来。
{{ amzFamCheck.total_errors ? ('Amazon 校验出 ' + amzFamCheck.total_errors + ' 个问题') : 'Amazon 校验通过,可以提交' }}
子 SKU 报的「找不到父 SKU」是预期内的 —— 父还没真正提交,已忽略。
选好产品类型后点「加载属性」,会按该类型的要求列出需要填的项
没有公共图 —— 父 SKU 也需要图片
共享部分还差:
图片包里没有图片
共 {{ amzOnlineTotal }} 个在线商品,当前列出 {{ amzOnlineItems.length }} 个。 改动走增量补丁,只提交动过的字段,没动的属性 Amazon 那边原样保留。
{{ amzOnlineBusy ? '读取中...' : '没有商品' }}
Amazon 当前报出的问题:
改成 FBA 会取消自发货报价,可售数量由亚马逊仓的实际入库决定
这个商品没有可编辑的属性,点「添加属性」挑要填的
搜一下,或点「常用」看尺寸、重量、包装这些常填的
还没有批次,点右上角「新建批次」开始
图片包 已选 {{ amzLbBatch.package_ids.length }} 个,一个包对应一个商品
点「刷新列表」加载图片包
公共配置 套用到本批次每个商品
占位符:{spu} {model} {index}
已展开 {{ amzLbDrafts.length }} 份草稿
没有可用的图片包
图片核验 主图必选,其余为附图
没有图片
当前:{{ amzListing.product_type }}
文案核验 大模型已生成,请逐项确认
还没有品牌数据,点上面的「从亚马逊同步品牌」拉一次(之后读库,不必每次同步)。
商品属性 {{ amzAttrDefs.length ? (amzAttrDefs.length + ' 项,按产品类型要求') : '选好产品类型后加载' }}
以下属性是上次提交时 Amazon 报出的必填项。有下拉的必须从选项里选, 自己填的值会被拒。
选好产品类型后点「加载属性」,会按该类型的要求列出需要填的项
Amazon 返回的问题:
看最近几天的报表数据来判断
样本太小时 ACOS 是噪声,低于这个数不动
没有条件时,只要过了上面的门槛就算命中(配合「只挑没出单的」用)
防止配置失误一次扫全店,超出的下次再处理
不选 = 全部
定点时间按美西(太平洋)算,与广告数据同口径
暂无店铺,点击右上角「添加店铺」
SP-API 凭据(销售数据)
广告 API 凭据
必须与开发者应用中登记的 redirect_uri 完全一致;该域名需解析到本服务器。 每个店铺用独立子域,避免多店铺共用同一回调域名。
刊登时 Amazon 会从公网来抓商品图,这里填能解析到本服务的域名。 留空使用 .env 里的 PUBLIC_BASE_URL;多店铺想各用一个子域时在此按店铺配。
授权有效期与保活
SP-API 的 refresh token 自授权起一年到期,到期需卖家在 Seller Central 重新授权,程序无法自动续期。填了这个日期才能做到期倒计时。 在此更新 SP Refresh Token 时会自动重置为当天。
LWA client secret 必须每 180 天轮换一次,逾期该应用所有调用会被拒 (AccessDeniedException)。填开发者后台上显示的「轮换截止日期」。 轮换不影响 refresh token,卖家无需重新授权:在后台点轮换后, 7 天宽限期内把新密钥填回上面对应的 Secret 栏即可无缝切换。
| 用户名 | 姓名 | 邮箱 | 角色 | 状态 | 创建时间 | 操作 |
|---|---|---|---|---|---|---|
| {{ u.username }} | {{ u.full_name || '-' }} | {{ u.email || '-' }} | 超级管理员 普通用户 | 启用 禁用 | {{ u.created_at ? u.created_at.slice(0,10) : '-' }} | |
| 暂无用户 | ||||||
{{ cfg.app_id }}
Secret: {{ cfg.app_secret }}
还没有飞书机器人配置
点击右上角「添加配置」开始
| 飞书名称 | 飞书 Open ID | 系统用户 | 绑定时间 |
|---|---|---|---|
| {{ m.feishu_name || '-' }} | {{ m.feishu_open_id }} |
{{ m.system_username }} ({{ m.system_full_name }}) | {{ m.created_at ? m.created_at.slice(0, 10) : '-' }} |
暂无预发布记录
请在「图片包管理」中点击「🏷️ SHEIN预发布」创建
| 属性名 | 值 | 来源 |
|---|---|---|
| {{ a.name }} | {{ a.value_name }} | {{ a.source }} |
正在生成预览...
每行一个供方货号(即商家SKU编码 supplierSku)
打印出来的备货单在「到货」列手写了实际数量,拍照传上来, 系统认出数字后按「到货 − 已下未发」下单
还没有备货单记录。可以直接用上面的「传照片下单」, 或者生成一次每日备货单后再拍照回填。
导入记录保留 7 天,之后连同照片自动清理;也可以随时手动删除。
把手写了「到货」的那张纸拍清楚传上来(正对着拍,别糊)
| 供货方号 | 属性 | 备货 | 已下未发 | 可下单 | 到货 | 下单 | 说明 |
|---|---|---|---|---|---|---|---|
| {{ p.supplier_code }} | {{ p.suffix_zh }} | {{ p.plan_qty }} | {{ p.stay_deliver || '—' }} | {{ p.order_limit === undefined ? '—' : p.order_limit }} | — | — | {{ p.note }} |
口径:商品层次属于备货款A/B、新款、新款A、保证在售款 ,且还在架上、还在正常供货 ,且不在急采中。 退供款、自主停产、清仓款、售完下架一律排除。 拉取销量时会先把这些状态从 SHEIN 刷一遍再筛。
还没有销量数据。点「拉取最新销量」,或者生成一次备货单 —— 备货查询会顺手把销量刷上。
点条形看该 SKU 的走势;上面四个卡片可切换排序口径。
| 供方货号 | 属性 | 层次 | 状态 | 今日 | 昨日 | 近7天 | 近30天 | 日均(7天) | 走势 |
|---|---|---|---|---|---|---|---|---|---|
| {{ r.supplier_code }} | {{ r.suffix_zh }} | {{ r.goods_level }} | {{ r.shelf_status }} {{ r.supply_status }} 急采 正常 | {{ r.today }} | {{ r.yesterday }} | {{ r.sales_7d }} | {{ r.sales_30d }} | {{ (r.sales_7d / 7).toFixed(1) }} |
目前只有 {{ sheinTrend.points.length }} 天的数据。
SHEIN 的销量接口只给「当前的当日/昨日/7天/30天」,没有历史。
系统每天拉一次存一天,攒几天之后这里就能看到走势了。
SHEIN 备货管理
选择店铺后点击「生成每日备货单」或「生成排产单」
每日备货单: 备货+急采 → Excel双Sheet | 排产单: 含图片,系数可调
暂无 TikTok 预发布记录
请在「图片包管理」中点击「🎵 TikTok预发布」创建
| 任务名称 | 任务类型 | 频率 | 执行时间 | 选项 | 状态 | 上次执行 | 下次执行 | 操作 |
|---|---|---|---|---|---|---|---|---|
| {{ st.name }} | {{ scheduledTaskTypeLabel(st.task_type) }} | {{ st.frequency === 'daily' ? '每天' : '单次' }} | {{ st.execute_time }} | 🖨️ 打印 - |
{{ new Date(st.last_run_at).toLocaleString() }}
{{ st.last_run_status === 'success' ? '✓成功' : st.last_run_status === 'failed' ? '✗失败' : '⏳执行中' }}
未执行
|
{{ st.next_run_at ? new Date(st.next_run_at).toLocaleString() : '-' }} |
⏰ 暂无定时任务,点击右上角「新建定时任务」
{{ st.last_run_message }}
任务选项