ad-campaign

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Ad Campaign — plan → generate → judge → package

广告活动 — 规划→生成→评估→打包

A repeatable pipeline for shipping a set of on-brand image ads at volume. Built from a real 30-ad campaign that went 75/75 accepted at ~7.5 credits per shipped asset, then re-validated cold on a smaller executor model with zero improvisation.
Core loop: copy is judged as text before it costs credits as pixels; every image is judged with eyes before it's called done.
一套可重复的工作流,用于批量产出符合品牌调性的图片广告。基于一个真实的30条广告活动构建,该活动75条广告全部通过审核,每条产出素材约花费7.5 credits,之后在更小的执行模型上重新验证,全程无即兴发挥。
核心循环:文案先以文本形式评估,再花费credits生成像素内容;每张图片在定稿前都需人工视觉评估。

Design note — no improvisation required

设计说明 — 无需即兴发挥

The creative judgment is front-loaded into frozen assets. Execute them, don't re-derive them:
  • Fixed prompt blocks are FROZEN STRINGS (
    references/prompt-template.md
    ). Fill the brand slots once, then only the four per-ad slots ({SCENE}/{hook}/{key}/{support}) change. Never paraphrase, "improve" or re-order the fixed clauses — identical wording across the set is what makes 30 ads read as one campaign.
  • Scenes are built by formula, then remixed from your accepted-scene library (see "Grow the library" below) — not invented from zero each time.
  • Judging is literal rubric application (
    references/judge-rubric.md
    ), not vibes. Uncertain between FLAG and FAIL → FLAG and log. The ignore-list is binding.
  • Decision points are enumerated in Step 0. Anything outside them: reversible → make the obvious call and log it; spends meaningfully beyond the agreed budget or changes brand/copy rules → stop and ask the user.
创意判断已预先固化到固定资产中。只需执行,无需重新推导:
  • 固定提示词块为冻结字符串
    references/prompt-template.md
    )。只需填充一次品牌占位符,之后仅需更改每条广告对应的四个占位符({SCENE}/{hook}/{key}/{support})。绝不要改写、“优化”或调整固定条款的顺序——整套广告使用完全一致的表述,才能让30条广告看起来属于同一活动。
  • 场景按公式构建,再从已通过审核的场景库中混合生成(见下文“扩充库内容”)——不要每次从零开始创建。
  • 评估需严格按照评分标准执行
    references/judge-rubric.md
    ),而非凭感觉。若在标记FLAG和FAIL之间犹豫→标记FLAG并记录日志。忽略列表具有约束力。
  • 决策点已在步骤0中列出。超出范围的情况:可逆转→做出明确决策并记录;若支出明显超出约定预算或更改品牌/文案规则→停止并询问用户。

When to activate

启用时机

  • "build an ad campaign / a set of ads / paid-social creative"
  • A batch of on-brand image ads at volume (10+), with text on-image
  • Re-running the system for a new brand (swap the brand kit, keep the pipeline)
  • 请求“打造广告活动/一组广告/付费社交创意”时
  • 需要批量(10条以上)带图上文案、符合品牌调性的图片广告时
  • 为新品牌重新运行该系统时(替换品牌套件,保留工作流)

Step 0 — Lock the variables (intake)

步骤0 — 锁定变量(需求收集)

Ask the user; if they're unavailable, lock the recommended defaults, state them as veto-able, and keep moving.
VariableRecommended default
AnglesThe brand's active sales angles/offers, from wherever the brand keeps them. A NEW angle gets written into the brand doc FIRST, then used — brand context outlives the campaign.
Volume30 masters = 1/day for a month. Direction gate of 2–3 before the rest.
PlacementsMeta feed + story. gpt_image_2 has NO 4:5 → generate 3:4 composed to survive a TOP-trim crop (headline upper-third, CTA/footer at the bottom edge).
Story twinsDefault OFF. If feed posts get reposted to stories anyway, 9:16 twins double the credit spend for the same creative. If a one-off vertical is explicitly requested, re-stage it (see template), never resize.
SequencesOne 3-frame 9:16 arc per angle (distinct creative, not a twin): hook (no button) → turn (no button) → CTA (prominent pill). Button only on f3 is what makes it an arc.
CTA registerADS ARE ASSERTIVE: solid accent-colored {CTA_TEXT} pill + cost-of-inaction urgency. Soft asks ("worth a quick chat?") belong in email — never on paid placements.
AudienceBROAD + diverse visual worlds, enforced by quota (Step 2). Never let one niche dominate.
Footer/domain{FOOTER_TEXT} tiny mono at the extreme bottom edge.
CaptionsFull pack per ad: hook as first line, founder-voice body, CTA → domain, 4–6 real hashtags.
Budget7 credits/image at quality high + 2k. Check
higgsfield account status
before and after.
询问用户;若用户无法回应,锁定推荐默认值,说明这些值可被否决,然后继续推进。
变量推荐默认值
营销角度品牌当前的销售角度/优惠信息,取自品牌存储该内容的渠道。新角度需先写入品牌文档,再投入使用——品牌上下文的生命周期长于单个广告活动。
数量30条主广告=每月1条。批量生成前先进行2–3条的方向审核。
投放位置Meta信息流+故事。gpt_image_2不支持4:5比例→生成3:4比例的素材,确保裁剪顶部后仍能正常展示(标题位于上三分之一,CTA/页脚位于底部边缘)。
故事版适配默认关闭。若信息流帖子会被重新发布到故事版,生成9:16的适配版本会使credits花费翻倍,但创意内容相同。若明确要求单独的竖版素材,需重新制作(参考模板),绝不要直接调整尺寸。
故事序列每个营销角度对应一个9:16比例的三帧故事弧:钩子(无按钮)→转折(无按钮)→CTA(显眼按钮)。仅在第三帧添加按钮,才构成完整的故事弧。
CTA风格广告需态度明确:纯色强调色的{CTA_TEXT}按钮+不作为的代价类紧迫感。柔和请求(“值得快速聊聊吗?”)适合邮件场景——绝不要用于付费投放位置。
受众广泛+多样化视觉风格,通过配额强制实现(步骤2)。绝不要让单一细分领域占据主导。
页脚/域名{FOOTER_TEXT}以小号等宽字体放在最底部边缘。
文案每条广告配套完整文案:首行是钩子,创始人语气的正文,CTA→域名,4–6个真实话题标签。
预算高质量+2k分辨率的图片每条花费7 credits。生成前后需检查
higgsfield account status

Step 1 — Fill the brand kit (once per brand)

步骤1 — 填充品牌套件(每个品牌仅需一次)

These slot into the frozen template and then get treated as frozen themselves:
SlotWhat it isExample
{BG_HEX}
Deep near-black base grade
#0A0A0B
{TEXT_HEX}
Off-white text color
#F4F4F0
{ACCENT_HEX}
The ONE accent color
#E4572E
{CTA_TEXT}
Ad CTA label, lowercase
book a call
{FOOTER_TEXT}
Brand — domain footer line
ACME — acmestudio.com
  • Read the brand's positioning/ICP/voice docs if they exist; the pipeline is brand-agnostic, the taste bar isn't.
  • Exactly ONE accent color — restraint is what makes a set read premium.
  • The template's type classes (heavy lowercase grotesque headline + monospace support) are part of the proven recipe. Swap them for the brand's own type only if you must — and re-run the direction gate if you do.
这些内容会填入冻结模板,之后也会被视为冻结内容:
占位符说明示例
{BG_HEX}
深近黑色底色
#0A0A0B
{TEXT_HEX}
米白色文本颜色
#F4F4F0
{ACCENT_HEX}
唯一强调色
#E4572E
{CTA_TEXT}
广告CTA标签,小写
book a call
{FOOTER_TEXT}
品牌——域名页脚文字
ACME — acmestudio.com
  • 若品牌有定位/理想客户画像/语气文档,请阅读;工作流是品牌无关的,但审美标准不是。
  • 仅使用一种强调色——克制才能让整套广告看起来高端。
  • 模板中的字体类别(粗体无衬线小写标题+等宽辅助文字)是经过验证的方案。仅在必要时替换为品牌自有字体——若替换,需重新进行方向审核。

Step 2 — Campaign plan + copy matrix (before any prompt)

步骤2 — 活动规划+文案矩阵(生成提示词前)

Write
plan/campaign-plan.md
+
plan/copy-matrix.md
. Every ad exists as a row first: id · angle · hook · key · support · world.
Copy rules (voice-checked as text, cheap):
  • Hook ≤9 words, lowercase, blunt. Support ≤12 words. No exclamation marks, no AI-tell words, no fake urgency (cost-of-inaction urgency OK).
  • Exactly ONE keyword per hook in the accent color.
  • Never name the niche out loud — the visual world codes who-it's-for (a docket rail says "restaurant" without saying it). World-cue NOUNS inside the pain are fine ("service ends at ten"); niche LABELS are not ("for restaurant owners").
  • No client names. Sell WHAT it does / the outcome, never HOW / the internal mechanics. No domain in headlines.
  • World-spread quota, written down before generating: across a 30-ad set, no world more than ~3×, cap your most-tempting world, include several universal metaphors and at most 2 type-only ads. For a sub-batch apply the spirit: every world distinct, no repeats of recent campaigns' worlds.
  • Mix day and night scenes across the set; grime is banned — premium-worn yes (patina, aged brass, worn oak), filthy never (dirt/mud/stains/crusted = judge FAIL). A dark grade holds in daylight too.
撰写
plan/campaign-plan.md
+
plan/copy-matrix.md
。每条广告先以行形式存在:id · 营销角度 · 钩子 · 核心信息 · 辅助信息 · 视觉风格
文案规则(以文本形式检查语气,成本低):
  • 钩子≤9个单词,小写,直白。辅助信息≤12个单词。无感叹号,无AI生成痕迹的词汇,无虚假紧迫感(不作为的代价类紧迫感可接受)。
  • 每个钩子中恰好有一个关键词使用强调色。
  • 绝不要直接说出细分领域——视觉风格会暗示目标受众(比如案卷轨道代表“餐厅”,无需明说)。痛点中的场景提示名词可接受(“服务10点结束”);但细分领域标签不可接受(“面向餐厅老板”)。
  • 不要提及客户名称。推销产品功能/结果,绝不要推销实现方式/内部机制。标题中不要出现域名。
  • 提前记录视觉风格分布配额:30条广告的套装中,同一种视觉风格出现不超过~3次,限制最常用的风格,加入几个通用隐喻,最多包含2条纯文字广告。对于子批次,遵循此原则:每种视觉风格都不同,不要重复近期活动的风格。
  • 套装中混合日景和夜景;禁止脏乱元素——允许有使用痕迹的质感(铜绿、旧黄铜、磨损橡木),但绝对禁止肮脏元素(灰尘/泥土/污渍/结痂=评估FAIL)。深色底色在日光下也能保持效果。

Step 3 — Build prompts from the template

步骤3 — 从模板构建提示词

One
.txt
per ad:
prompts/final/{id}.txt
(3:4 masters),
prompts/seq/{angle}seq-f{1,2,3}.txt
(9:16 sequences). The full template with clause-by-clause reasoning:
references/prompt-template.md
. Non-negotiable clauses: all on-image text quoted + "exactly as quoted"; any incidental surface text forced to "illegible blur"; ends with "No other readable text anywhere, no watermark, no logo, no border."
每条广告对应一个
.txt
文件:
prompts/final/{id}.txt
(3:4主广告),
prompts/seq/{angle}seq-f{1,2,3}.txt
(9:16序列)。带有逐条理由的完整模板:
references/prompt-template.md
。不可协商的条款:所有图上文案需加引号并标注“严格按照引号内内容”;任何附带的表面文本需强制设置为“模糊不可读”;结尾需标注“无其他可读文本,无水印,无logo,无边框”。

Step 4 — Direction gate (before spending the batch)

步骤4 — 方向审核(批量生成前)

Render 2–3 covering the distinct visual modes (one human scene, one macro metaphor, one type-only). Judge them (Step 6 rubric). Only a pass on all modes unlocks the full batch. If the user is present, show them the gate renders.
渲染2–3条覆盖不同视觉模式的广告(一个人物场景,一个宏观隐喻,一个纯文字)。按照步骤6的评分标准评估。只有所有模式都通过审核,才能解锁完整批量生成。若用户在场,展示审核用的渲染图。

Step 5 — Generate

步骤5 — 生成

bash
higgsfield generate create gpt_image_2 \
  --prompt "$(cat prompts/final/a1.txt)" \
  --aspect_ratio 3:4 --quality high --resolution 2k \
  --wait --json > generated/a1-r1.json
  • Full-wave runs: batch sequentially inside a background task. Tight-cap runs (dry runs, gates, ≤5 gens): serialize in the foreground and inspect each JSON before firing the next call — a failed generation still counts against a hard cap.
  • Extract
    [0]['result_url']
    from each JSON → curl to
    generated/{id}-{ratio}-r{round}.png
    . Inspect the JSON before curling — a 502 writes HTML into the file, and an empty result_url means the render failed server-side.
  • Auth dies occasionally:
    higgsfield auth login
    (device flow) — surface the URL to the user (copy it to their clipboard if you can). Balance:
    higgsfield account status
    .
bash
higgsfield generate create gpt_image_2 \
  --prompt "$(cat prompts/final/a1.txt)" \
  --aspect_ratio 3:4 --quality high --resolution 2k \
  --wait --json > generated/a1-r1.json
  • 全量运行:在后台任务中按顺序批量生成。限量运行(试运行、审核、≤5条生成):在前台序列化执行,每生成一个JSON就检查一次,再执行下一个请求——生成失败仍会占用硬上限额度。
  • 从每个JSON中提取
    [0]['result_url']
    →通过curl保存到
    generated/{id}-{ratio}-r{round}.png
    在curl前务必检查JSON——502错误会将HTML写入文件,空的result_url表示服务器端渲染失败。
  • 认证偶尔会失效:执行
    higgsfield auth login
    (设备流)——将URL展示给用户(若可以,复制到用户剪贴板)。余额查询:
    higgsfield account status

Step 6 — Judge loop (eyes on every image)

步骤6 — 评估循环(每张图片都要人工查看)

Read every PNG with vision. Score 7 criteria: text accuracy · instant read · who-is-this-for · no slop · brand world · slap factor · craft. Verdict per image with reasons →
judgement-log.md
. Full rubric, thresholds, and the known-nits ignore list:
references/judge-rubric.md
.
  • Accept = zero FAIL and ≤1 FLAG. Rejects regen ≤2 rounds, then the concept is cut, not forced.
  • Credit discipline: set-level nits invisible at delivery size (apostrophe glyphs, pill drift, footer under platform chrome) are logged, never regenned.
  • Known failure modes: 502 → re-run same command; content filter (empty result_url twice) → de-brand the object noun ("whiskey cask" → "oak barrel aging cellar").
用视觉检查每张PNG图片。评估7项标准:文本准确性 · 即时可读性 · 目标受众清晰度 · 无瑕疵 · 品牌风格匹配 · 吸引力 · 制作质量。为每张图片给出评估结论及理由→写入
judgement-log.md
。完整评分标准、阈值、已知问题忽略列表:
references/judge-rubric.md
  • 通过=0项FAIL且≤1项FLAG。被拒绝的素材最多重新生成2轮,之后放弃该创意,不要强行推进。
  • credits管控:交付尺寸下不可见的套装级小问题(撇号字形、按钮偏移、页脚被平台栏遮挡)只需记录,无需重新生成。
  • 已知失败模式:502错误→重新运行相同命令;内容过滤(连续两次空result_url)→移除品牌相关的名词(“威士忌桶”→“橡木桶陈酿窖”)。

Step 7 — File + package

步骤7 — 文件整理+打包

  • Accepted →
    accepted/
    (flat archive), then
    final/
    per-angle folders: masters +
    sequence/
    + that angle's
    captions.md
    + top-level
    README.md
    (cadence, ad-button choice, crop rules, honest flags, provenance).
  • Captions: hook as line 1 (captions truncate), founder-voice body,
    {CTA_TEXT} → domain
    , 4–6 hashtags. Meta button: Contact Us / Get Quote.
  • 通过审核的素材→存入
    accepted/
    (扁平归档),之后按营销角度存入
    final/
    文件夹:主广告+
    sequence/
    +对应角度的
    captions.md
    +顶层
    README.md
    (发布节奏、广告按钮选择、裁剪规则、明确标记的问题、来源说明)。
  • 文案:首行是钩子(文案会被截断),创始人语气的正文,
    {CTA_TEXT} → 域名
    ,4–6个话题标签。Meta平台按钮:联系我们/获取报价。

Step 8 — Honest report

步骤8 — 如实报告

Accepted/rejected counts with reasons, every flag surfaced (never buried), credit spend before/after, paths. Give paths — don't auto-open files.
Running as a SUBAGENT: harness guardrails may block writing a REPORT.md file — return the full report as your final text instead. The on-disk artifacts (plan/copy-matrix.md, judgement-log.md, prompts/, generated/) write fine and are the audit trail.
包含通过/拒绝数量及原因,所有标记的问题都要列出(绝不要隐藏),生成前后的credits花费,操作路径。提供路径——不要自动打开文件。
作为SUBAGENT运行时:防护规则可能会阻止写入REPORT.md文件→将完整报告作为最终文本返回。磁盘上的 artifacts(plan/copy-matrix.md, judgement-log.md, prompts/, generated/)可正常写入,作为审计追踪记录。

Grow the library

扩充库内容

Keep every accepted ad's
{SCENE}
sentence and its verdict from
judgement-log.md
. That corpus is the next campaign's scene library — remix proven scenes instead of inventing from zero, and the judge log becomes training data for what your brand accepts.
保存每条通过审核的广告的
{SCENE}
语句及其在
judgement-log.md
中的评估结论。该语料库将作为下一次广告活动的场景库——混合已验证的场景,而非从零开始创建,评估日志也会成为品牌接受标准的训练数据。

References

参考文件

FileContents
references/prompt-template.md
Master template + sequence rules, clause-by-clause WHY
references/judge-rubric.md
7 criteria, accept thresholds, regen policy, ignore-list, filter/502 fixes
文件内容
references/prompt-template.md
主模板+序列规则,逐条说明设计理由
references/judge-rubric.md
7项评估标准、通过阈值、重新生成规则、忽略列表、过滤/502错误修复方案