店小秘多平台铺货配方:7 平台建品脚本 + 静默拦截诊断法 + 项目状态
- TikTok/Shopee/速卖通/Walmart 各 46-47 条已在待发布 - Ozon 47 条已建、改价 40/47 - SHEIN 配方跑通第一条;Temu 差「预览图」一步 - 核心产出:MYJ.message.error 钩子诊断法(解开了三个平台的保存静默拦截) - 含下一轮提示词 NEXT-ROUND-PROMPT.md
This commit is contained in:
commit
f5720ad613
94 files changed
+21561
No files matched your search
@@ -0,0 +1,39 @@
|
||||
import { attach } from '/tmp/cdp3.mjs';
|
||||
const wait = ms => new Promise(z => setTimeout(z, ms));
|
||||
const c = await attach('/web/temu/add') || await attach('dianxiaomi.com');
|
||||
// 1. 主规格/变种区结构
|
||||
const o1 = await c.evalJS(`(()=>{const p=document.querySelector('#app').__vue_app__.config.globalProperties.$pinia;
|
||||
const a=JSON.parse(JSON.stringify(p._s.get('temuAddSkuAttrStore').$state));
|
||||
const at=(a.formState.skuAttrs||[])[0]||{};
|
||||
return JSON.stringify({attrKeys:Object.keys(at), attr:{type:at.type,parentSpecId:at.parentSpecId,parentSpecName:at.parentSpecName,
|
||||
optCount:(at.options||[]).length, opt0:(at.options||[])[0], vals:at.values||at.checked||null},
|
||||
customs:(a.dataState.customThemeOptions||[]).slice(0,2)});})()`);
|
||||
console.log('变种属性:', String(o1).slice(0,900));
|
||||
// 2. 页面里变种可点元素
|
||||
const o2 = await c.evalJS(`(()=>{const boxes=[...document.querySelectorAll('*')].filter(e=>e.offsetParent!==null&&/颜色|Color/.test(e.innerText||'')&&e.querySelectorAll('*').length<200);
|
||||
const box=boxes[boxes.length-1]; if(!box)return'nf';
|
||||
const opts=[...box.querySelectorAll('.ant-tag,.ant-checkbox-wrapper,[class*=option],[class*=spec]')].filter(e=>e.offsetParent!==null).slice(0,8)
|
||||
.map(e=>({tag:e.tagName,cls:String(e.className||'').slice(0,45),t:(e.innerText||'').trim().slice(0,14)}));
|
||||
const inputs=[...box.querySelectorAll('input')].slice(0,4).map(i=>({ph:i.placeholder||'',cls:String(i.className||'').slice(0,40)}));
|
||||
return JSON.stringify({opts, inputs});})()`);
|
||||
console.log('变种区:', String(o2).slice(0,800));
|
||||
// 3. 外包装形状/类型 的选项
|
||||
await c.evalJS(`document.body.click()`); await wait(700);
|
||||
for (const lab of ['外包装形状','外包装类型']) {
|
||||
const pos = JSON.parse(String(await c.evalJS(`(()=>{const it=[...document.querySelectorAll('.ant-form-item')].filter(e=>e.offsetParent!==null)
|
||||
.find(x=>{const l=x.querySelector('label'); return l&&new RegExp(${JSON.stringify(lab)}).test(l.innerText||'');});
|
||||
if(!it)return'[]'; const s=it.querySelector('.ant-select-selector'); if(!s)return'[]';
|
||||
s.scrollIntoView({block:'center'}); const r=s.getBoundingClientRect();
|
||||
return JSON.stringify([Math.round(r.x+r.width/2),Math.round(r.y+r.height/2)]);})()`)));
|
||||
if(pos.length){ for(const t of ['mousePressed','mouseReleased']) await c.send('Input.dispatchMouseEvent',{type:t,x:pos[0],y:pos[1],button:'left',clickCount:1}); await wait(2500); }
|
||||
const o = await c.evalJS(`(()=>{const dd=[...document.querySelectorAll('.ant-select-dropdown')].filter(e=>e.offsetParent!==null).pop();
|
||||
if(!dd)return'no-dd'; return JSON.stringify([...dd.querySelectorAll('.ant-select-item-option')].map(e=>(e.innerText||'').trim()).slice(0,12));})()`);
|
||||
console.log(lab+':', String(o).slice(0,300));
|
||||
await c.evalJS(`document.body.click()`); await wait(700);
|
||||
}
|
||||
// 4. 图片字段类型
|
||||
const o4 = await c.evalJS(`(()=>{const p=document.querySelector('#app').__vue_app__.config.globalProperties.$pinia;
|
||||
const f=p._s.get('temuAddProductStore').$state.formState;
|
||||
return JSON.stringify({mainImageType:typeof f.mainImage, mainImage:String(f.mainImage).slice(0,60)});})()`);
|
||||
console.log('图片字段:', String(o4).slice(0,300));
|
||||
process.exit(0);
|
||||
Reference in new issue
Block a user