这是什么
把搜索词报告交给 JEV(TypeSafe System One 决策模型)做三类判断。每条搜索词一次请求(POST /v1/systemone),三个问题并行评估、一次返回:
| 问题 | 类型 | 官方返回字段 |
| 这个词与产品是什么关系 | Choice 多选一 | choice(胜出选项)+ probabilities(各选项概率,总和为 1)+ confidence(分布集中度 0–1) |
| 购买意向有多强 | Score 四档打分 | score(0–3,可落在两档之间,如 2.3)+ legend(档位说明)+ confidence |
| 加否定是否零风险 | Noul 是非判断 | noul(0–1 概率,越接近 1 越可否定;0.5 表示模型不知道) |
意向分四档定义:0=无购买重叠,1=同类目不同产品,2=可能纳入考虑,3=直接匹配。注意是 0 起始计分,满分 3。
快速上手
- 填 API Key → 点「测试连接」。默认直连官方端点;若提示被浏览器拦截(CORS),按「部署指南」自建 Worker 中转(10 分钟)
- 「载入演示示例」跑 10 个词,在「判定直播」观察判定是否符合直觉
- 按类目修改「判定配置」(每个类目建一个方案),小样本验证后全量
- 按「待复核 → 有转化但建议否定」顺序人工确认,再导出否定清单
连接与安全 · 字段对照
| API 端点 | 官方端点 https://api.typesafe.ai/v1/systemone。浏览器直连可能被跨域(CORS)拦截——是否放行由官方决定,页面无法控制;被拦时表现为所有请求「网络层失败」,此时改用你自建的 Worker 中转地址(结尾同样带 /v1/systemone)。 |
| API Key | console.typesafe.ai 创建,以 Authorization: Bearer 头发送。默认仅内存保存,勾选「记住」才写入本机 localStorage。绝不应出现在代码或仓库里。 |
| 模型 | jev-latest 旗舰别名;jev-1.13.0 锁定版本便于结果复现;jev-preview 预览特性。 |
| 并发数 | 同时进行的请求数。官方限流 1200 请求/分钟;触发 429/529 时页面会自动指数退避重试(最多 3 次),无需手动干预。 |
| 否定阈值 | 「否定概率」≥ 该值才标记建议否定。默认 0.90——宁可漏否(浪费花费)不可误否(伤真实销售)。 |
| 复核阈值 | 分类置信度低于该值时进「待复核」页签。置信度描述概率分布的集中程度(官方定义),低置信不等于判错,但值得人工看一眼。 |
| 代理校验头 | 仅 Worker 中转时生效:页面每次请求带上该头,Worker 校验通过才转发,防陌生人盗用中转地址。两边必须同名同值。 |
导入与列映射
| 搜索词列 | 必需。自动识别 search term / customer search term / 搜索词等表头,可手动指定。 |
| 展现/点击/花费/订单/销售额 | 可选。不参与语义判定,用于:风险标记(有订单却被判否定的高亮)、排序、导出清单附带绩效、统计否定覆盖花费。同名搜索词自动合并汇总。 |
产品上下文 · 字段对照(判定质量的决定因素)
| 产品标题 | 判断锚点,与亚马逊 Listing 标题一致。 |
| 核心卖点 | 分号分隔;「防滑」「加厚」这类卖点词的相关性判断靠它。 |
| 品牌 | 识别品牌词——自有品牌流量要保护,绝不能否定。 |
| 价格定位 | 拦住价格带不匹配的流量($25.99 的产品不该吃「超便宜」流量)。 |
| 主要竞品 | 识别竞品品牌词——用于竞品定投,禁止自动否定。 |
| 目标市场 | 站点语言。美国站写明 English and Spanish,西语词才不会被误判。 |
| 已转化搜索词 | 校准锚点:挑 3–5 个确定出过单的词,让「相关」有具体参照。 |
分类选项 · 默认七桶
| brand_term | 含自己品牌。保留并加固。 |
| asin_search | 搜的是 ASIN 或自家 Listing。保留。 |
| competitor_brand | 含竞品品牌。转竞品定投候选,禁止自动否定。 |
| complementary | 互补品(瑜伽砖之于瑜伽垫)。相关性高但非本产品,否定需谨慎。 |
| relevant | 真实购买意图,核心保留桶,意向分通常 ≥2。 |
| loosely_related | 同类目但意向落在别的产品。小预算测试或观察。 |
| irrelevant | 无购买重叠。唯一允许高置信自动否定的桶。永远保留它作为兜底——缺少兜底时模型遇到陌生词会被迫塞进其他类别。 |
官方错误码 · 页面行为
| 401 Unauthorized | Key 缺失或无效。页面快速失败并提示,不重试——检查 Key。 |
| 422 Unprocessable | 请求体校验失败(如分类选项描述为空、题目格式错误)。页面快速失败并显示官方返回的具体字段错误,不重试。 |
| 429 Too Many Requests | 触发限流。页面自动指数退避重试(0.8s→1.6s→3.2s),最多 3 次;持续出现则调小并发数。 |
| 529 Overloaded | 官方临时过载。同 429,自动退避重试。 |
| 网络层失败 | 多为浏览器 CORS 拦截(直连官方时)或断网。页面提示并引导打开部署指南。 |
结果与页签 · 字段对照
| 判定 | 建议否定 / 建议保留 / 待复核;人工修正后显示「强制否定/强制保留」,导出以修正后为准。 |
| 否定概率 | Noul 返回值:加否定零风险的把握,0–1。 |
| 分类 | Choice 胜出选项;直播区会同时展示前两名概率分布。 |
| 置信度 | Choice/Score 附带的 confidence,由概率分布导出。 |
| 意向分 | Score 的 0–3 加权值,可落在档位之间(如 2.3 = 主要落第 2 档、偏第 3 档)。 |
| 有转化但建议否定 | 红线页签:出过订单却被判否定,必须人工裁决——绩效数据优先于语义判断。 |
常见问题
| 测试连接提示被拦截 | 直连官方被浏览器 CORS 拦截。按部署指南自建 Worker,端点改为中转地址即可。 |
| HTTP 422 | 检查分类选项是否有空名称/空描述、否定标准是否被清空(页面有默认值兜底)。 |
| 改了规则没变化 | 已完成的结果会被跳过,先「清空本方案结果」再重跑。 |
| 判定普遍不准 | 九成是产品上下文太笼统:补竞品、价格定位、已转化词;分类选项定义有重叠会导致置信度普遍偏低。 |
| 隐私自证 | F12 → Network:只出现对 api.typesafe.ai(或你的 Worker)的请求;本页 CSP 已把可请求域白名单写死在页面源码里。 |
何时需要部署
页面默认直连官方端点。先点「测试连接」:成功则什么都不用部署,填 Key 即用。仅当提示被浏览器 CORS 拦截时,才需要下面 10 分钟的自建中转。
架构
你的浏览器(页面)→ 带 Key 与暗号 →你的 Cloudflare Worker(中转)→TypeSafe API
- 页面(前台):纯静态界面,仓库里没有 Key、没有 Worker 地址、没有暗号
- Worker(后台):只有你知道地址与暗号,零日志透传;Key 不落任何仓库
第 1 步 · GitHub 建仓上传页面
- github.com → 右上角加号 → New repository,命名如
jev-workbench,选 Private → Create
- 点 uploading an existing file → 拖入 index.html → Commit changes
第 2 步 · Cloudflare Pages 上线前台
- dash.cloudflare.com → Workers & Pages → Create → Pages → Connect to Git → 选 GitHub 并授权该仓库
- 配置:Framework preset 选 None;Build command 留空;Build output directory 填
/ → Save and Deploy
- 得到
https://项目名.pages.dev,打开即本页面
第 3 步 · 创建 Worker 中转(仅 CORS 被拦时需要)
- Workers & Pages → Create → Create Worker → 命名
jev-proxy → Deploy → Edit code
- 删除默认代码,粘贴下方推荐版,把第一行 SECRET 改成你自己的暗号 → Deploy
- 记下地址:
https://jev-proxy.你的子域.workers.dev
const SECRET = "REPLACE_WITH_YOUR_SECRET"; // 改成你自己的暗号
const cors = {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "POST, OPTIONS",
"Access-Control-Allow-Headers": "Authorization, Content-Type, X-App-Secret",
"Access-Control-Max-Age": "86400"
};
export default {
async fetch(request) {
if (request.method === "OPTIONS") return new Response(null, { status: 204, headers: cors });
if (request.headers.get("X-App-Secret") !== SECRET) {
return new Response("forbidden", { status: 403, headers: cors });
}
try {
const url = new URL(request.url);
const upstream = await fetch("https://api.typesafe.ai" + url.pathname + url.search, {
method: "POST",
headers: {
"Authorization": request.headers.get("Authorization") || "",
"Content-Type": "application/json"
},
body: await request.text()
});
const out = new Response(upstream.body, upstream);
Object.entries(cors).forEach(([k, v]) => out.headers.set(k, v));
return out;
} catch (e) {
return new Response(JSON.stringify({ error: "proxy_error" }),
{ status: 502, headers: { ...cors, "Content-Type": "application/json" } });
}
}
};
第 4 步 · 页面连接中转
- API 端点改为:
https://jev-proxy.你的子域.workers.dev/v1/systemone(结尾必须带路径)
- 校验头名称填
X-App-Secret,值填你的暗号 → 「测试连接」
故障排查
| 403 forbidden | 暗号不一致:Worker 里的 SECRET 与页面校验头值必须完全一致(注意不要把引号复制进值里)。 |
| 直接打开 Worker 显示 forbidden / Not Found / 401 JSON | 都是正常的:分别是门禁拦截、路径不存在、未带 Key。唯一可信验证是页面「测试连接」。 |
| 给 Worker 绑了自定义域名后连不上 | 本页 CSP 白名单只放行 api.typesafe.ai 与 *.workers.dev;用自定义域需编辑 index.html 的 CSP meta,把你的域名加入 connect-src。 |
| pages.dev 打开 404 | 仓库根目录缺 index.html,或构建输出目录没填 /。 |
隐私验证清单
- GitHub 仓库:看不到 Key、暗号、Worker 地址
- 页面 F12 → Network:判定时只有对 api.typesafe.ai(或你的 Worker)的请求
- Worker 不存内容;可在 Cloudflare 控制台关闭日志;公用电脑不勾「记住」,用完点「清除本机全部数据」