资讯动态

生图API 怎么接进自动化工作流?nano banana pro 的 Webhook 和定时任务写法

发布时间:2026/8/14 8:18:35 来源:尧图企业网站定制
出图不该是人打开脚本手动跑。新商品入库自动出图、每天定时批量补图—— 这些完全可以让工作流自己跑。这篇讲怎么把该服务的图像生成接口接进自动化流程两种触发方式事件触发和定时触发。一、事件触发新商品入库就出图商品入库时发个 webhook出图服务收到就干活// 商品系统新 SKU 入库后通知出图服务 app.post(/api/sku, async (req, res) { const sku await db.sku.create(req.body); res.json(sku); // 先返回别让用户等出图 fetch(http://img-worker/hook/new-sku, { method: POST, headers: { Content-Type: application/json }, body: JSON.stringify({ skuId: sku.id, name: sku.name, category: sku.category }), }).catch(() {}); // 出图失败不该影响入库 });先返回再触发是关键。出图要十几秒让用户在入库时干等着体验极差 而且出图挂了不该导致商品入不了库。出图服务这边按品类套模板const TPL { 数码: {name}白底电商主图正方形构图商品居中柔和顶部打光高光克制, 服饰: {name}白底平铺展示正方形构图自然褶皱柔和均匀光线, 食品: {name}浅木色桌面俯拍构图暖色调自然光画面干净, }; app.post(/hook/new-sku, async (req, res) { const { skuId, name, category } req.body; res.json({ ok: true }); // 立刻应答别让上游超时重发 const prompt (TPL[category] || TPL.数码).replace({name}, name); const data await callTtq(nano-banana-pro, prompt); await db.images.insert({ skuId, url: pickUrl(data), model: nano-banana-pro }); });收到 webhook 立刻应答活儿放后台做。不然上游会因为超时而重发 同一个 SKU 出好几遍图积分白花。二、定时触发每天补齐缺图的商品const cron require(node-cron); // 每天凌晨 2 点把没有主图的商品补上 cron.schedule(0 2 * * *, async () { const missing await db.sku.findMissingImage({ limit: 200 }); console.log(待补图 ${missing.length} 个); await runPool(missing, 12, async (sku) { const data await callTtq(nano-banana2, buildPrompt(sku)); // 跑量用便宜的 await db.images.insert({ skuId: sku.id, url: pickUrl(data), model: nano-banana2 }); }); });三个要点限limit别一次捞出全库。某天数据异常捞出两万条积分一夜烧光跑量用nano-banana28 积分人工挑中的再用 Pro 重出凌晨跑避开业务高峰也避开平台的用图高峰三、统一的调用封装不管哪种触发底层就一个函数async function callTtq(model, content, { timeout 120_000, attempts 3 } {}) { let last; for (let i 0; i attempts; i) { try { const r await fetch(https://API_HOST/v1/chat/completions, { method: POST, headers: { Authorization: Bearer ${process.env.TTQ_API_KEY}, Content-Type: application/json, }, body: JSON.stringify({ model, messages: [{ role: user, content }] }), signal: AbortSignal.timeout(timeout), }); if (r.ok) return r.json(); if (r.status 500 r.status ! 429) throw new Error(不可重试 HTTP r.status); last new Error(HTTP r.status); } catch (e) { last e; } await new Promise((s) setTimeout(s, 2 ** (i 1) * 1000 Math.random() * 1000)); } throw last; }一个函数覆盖生图、抠图、改图、生视频——换能力只改model字符串 不用为每种能力单独写一套。四、别忘了成本护栏自动化最大的风险是没人盯着。加两道护栏// 1) 每日调用上限超了直接停 const todayCount await db.calls.countToday(); if (todayCount DAILY_CAP) { console.warn(已达每日上限跳过); return; } // 2) 单次任务的条数上限 if (items.length 500) { console.warn(单次任务超过 500 条可能是数据异常中止); return; }第二道尤其重要。查询条件写错捞出全库无人值守的定时任务会一路跑到积分见底。五、模型与消耗模型代码定位消耗nano-banana2自动化跑量首选8 积分/次nano-banana-pro主推款终稿1K/2K/4K10 积分/次gpt-image-2细节质感按次计费Veo 3.1 视频生成/Sora 2生视频120 / 130 积分/次六、小结自动化四条webhook 先应答再干活、定时任务限条数、一个封装覆盖所有能力、必须加每日上限和单次条数护栏。该服务兼容 OpenAI 协议、并发高 适合挂进自动化流程跑量模型全nano banana pro、gpt-image-2、Veo 3.1、Sora 2、价格便宜、出图快、稳定。接口服务甜甜圈APIdashengfenshen.cn

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价