現在每一款 AI 創意工具都在賣同一個想像:輸入一個關鍵字,另一端就自動吐出廣告影片。這個說法很吸引人,也最容易讓人誤以為中間的問題都已經被解決。
但只要真的跑過一次流程,就會發現「自動化」底下藏著一堆沒人替你回答的判斷題。關鍵字太冷門,搜尋不到自然內容,商業素材庫也沒有資料時,系統該停下來回報「沒有證據」,還是硬塞一份空白 brief 去生成一支從未被驗證過的影片?又或者流程跑到一半,某個管道不在帳號可存取的範圍內,資料根本回不來。這算是「沒有結果」,還是「根本沒查到」?兩種情況的下一步完全相反,但大多數一鍵式工具只會給你同一個轉圈中的載入畫面。
真正能上線營運、而不只是拿來 demo 的創意流程,價值不在最後那顆「生成」按鈕,而在於每一個階段都能誠實交代自己目前處於什麼狀態。這決定了它能不能進入正式環境,也決定了某次沒有產出時,你能不能找出究竟斷在哪裡。
先界定範圍。這套流程的研究階段,會以你自己的帳號登入各平台,讀取平台對所有廣告主公開的廣告資料庫與創意中心資料。沒有簽章、沒有繞過任何機制。本文談的是如何把這些公開資料整理成可執行的決策與素材,不討論如何取得資料。
先搭骨架:關鍵字到廣告影片的五個階段
一個關鍵字要變成廣告影片,必須依序經過五個階段。它們不是鬆散的「步驟」,而是前一階段輸出、下一階段接手的串接流程:
需求探索。 以市場搜尋詞查找自然內容,確認這個主題是否真的在使用者之間具備熱度。輸出的是自然內容訊號。
商業驗證。 同時檢查兩類商業訊號:一類是關鍵字機會,例如搜尋量、競爭度與投放端資料;另一類是創意中心中表現良好的 Top Ads。兩者都代表有人實際投入預算,且已經過市場驗證,因此和自然內容是不同層次的訊號。
創作者媒合。 在 influencer library 中尋找符合此主題與目標市場的創作者。
創意 brief。 將前面三個階段篩選出的合格證據整合成結構化規格,可直接餵給生成模型。敘事架構、開場 hook 的形式與目標市場,都在這裡定下來。
生成。 把 brief 交給影片生成模型,產出一支 9:16 直式原生廣告。
整條流程的重心其實都在第四步。前三步負責蒐集證據,第五步開始花錢,而 brief 是唯一把證據轉成決策的地方。前三步若蒐集得粗糙,brief 就只能根據雜訊下判斷,最後生成的影片也建立在雜訊上。這件事不會顯示在載入動畫裡;只有把每一階段的狀態攤開,你才看得出來。
前三個階段各自都值得獨立展開。像是如何解讀逐秒留存曲線、如何把關鍵字機會轉成單一預算數字,以及如何交叉比對 influencer library 與素材庫,而不是只看粉絲數挑創作者,都已有其他文章專門討論。本文要處理的是:當你把它們串成一條線後,才會浮現的額外問題。
六種階段狀態:為什麼「失敗」必須拆開來看
這是全文最重要的部分。
多數流程只替每個階段定義兩種結果:成功或失敗。在一兩個階段時或許還能使用,但流程拉長到五個階段就會失效,因為「失敗」把四種需要完全不同處置方式的情況混成了一團。
在這條流程中,每個階段的結果都應落在以下六種狀態之一:
completed:已執行,取得合格結果,可以往下走。empty:已執行,管道可用,但沒有任何合格結果。查了,卻找不到。skipped:你自行把該階段的 quota 設為 0,因此它根本沒有執行。unavailable:想執行但無法執行。可能是管道不在帳號可存取範圍內,例如關鍵字機會只涵蓋部分市場語言;也可能是相依服務暫時故障。blocked:上游證據不足,閘門刻意將它攔下。這不是該階段自己失敗,而是前面的輸入不夠。ready:只用於生成的中間狀態。預檢已通過,但你尚未要求提交;它已具備產出影片的條件,正在等待你的指令。
重點不是蒐集六個名稱,而是只要把 empty、skipped、unavailable 與 blocked 全部壓成同一個「失敗」,這套系統就無法營運。它們都意味著「這次沒有影片」,但你該採取的動作截然不同:
empty是資料問題。市場可能缺乏需求量,或關鍵字設得太窄。你該換詞或放寬門檻,不必改任何一行程式。skipped是你自己的選擇。不需要採取動作,但它必須和empty分開,否則你可能花半天除錯一個根本沒被開啟的階段。unavailable是管道或設定問題。應該檢查帳號涵蓋範圍或稍後重試,而不是一直調整關鍵字。blocked是上游問題。這一層本身沒壞,是某個前置階段回傳空結果。正確作法是回頭找哪個階段是empty,不是和被攔下的那一層糾纏。
一個不透明的「失敗」會把這四條排查路徑全堵住,讓你只能猜。這也是為什麼只給結果、不給狀態的流程跑不久:每次出問題,你都得重跑整個流程,才能知道發生了什麼。
證據漏斗:自然訊號與商業訊號不能直接相加
需求探索不是「找到幾支內容」就算完成。原始結果必須經過一個逐層計數的漏斗:回傳多少筆、多少超出時間範圍、多少語言不符、多少偏離主題、多少觀看量不足以構成樣本,以及最後真正合格的有多少。當這個階段回傳 empty 時,漏斗能告訴你證據是在何處流失。完全找不到內容、找到很多但全都過期、有內容但沒有一支達到樣本門檻,這是三種不同的空結果,也有三種不同的下一步。沒有漏斗,empty 就只是一個空陣列,你甚至不知道它怎麼變空的。
比計數更重要的是一條原則:自然內容訊號與商業訊號必須分開計算,絕不能合成單一的「證據分數」。Top Ad 是有人真金白銀投放、平台也判定表現良好的素材;十支再熱門的自然影片,最多只能說明「人們願意免費觀看」。如果採用加權總分,十支自然影片可能靠數量淹沒一支 Top Ad,但後者的商業價值遠高得多。正確做法是先分桶、再排序:先看商業訊號;若沒有,再看合格自然內容;再沒有,才回退到創作者。排序依據應該是可信度,不是數量。
這條原則甚至適用於單支影片。評估自然內容時,按讚加留言是一類訊號,分享加收藏則是另一類。分享與收藏更接近商業意圖,代表「值得保留、值得轉傳」,排名時應比一般互動更有權重。互動量說明內容值得看;分享與收藏則表示它可能真的能帶動商品。即使看的是同一支影片,兩者也必須分開解讀。
(順帶一提,在歸因階段把相關性當因果、把出現頻率當成效果,是模型最容易犯的錯,因此 prompt 必須強制它提出反例。這和指紋辨識那篇文章中,要求模型持續檢驗自己剛辨識出的模式,是同一種 prompt 紀律。那篇談的是逆向工程中的反證區段;這裡談的是廣告歸因中的反例。機制相同。)
生成前要過兩道關:平台能生成,不等於這支片該生成
生成前有一個很容易被合併、卻絕對不該合併的判斷:平台能不能生成影片,和這支特定影片是否值得生成,是兩道不同的閘門。
第一道是平台預檢是否 ready:生成服務是否正常、quota 是否足夠、prompt 是否允許送出。這是基礎設施層級的檢查。第二道是研究證據是否 ready:已蒐集資料中,是否至少存在一筆合格的一手證據。這是內容層級的檢查。提交前兩道閘門都必須通過;任一未通過,狀態就是 blocked。
兩者都在回答「能不能生成」,所以很容易想合併。但一合併,就會遇到最昂貴的失敗類型:平台正常、quota 充足、prompt 合規,預檢也「通過」,結果卻生成了一支建立在零證據上的影片。這比乾淨地失敗更糟,因為它看似成功,你甚至可能真的拿去投放。拆成兩道閘門後,這種情況會安全地停在 blocked,並明確告訴你缺的是證據,不是 quota。「可以產出」從來不等於「應該產出」;把兩者寫進同一個條件,是這類流程最常見的設計錯誤。
brief 只能讀合格證據:競品文案留在研究,不該進生成 prompt
創意 brief 是整條流程中對文字模型要求最高的環節,也是去敏感化最容易失控的地方。
它的工作,是從合格證據中萃取已驗證的結構:Top Ads 中反覆出現的是哪種 hook、留存曲線在哪一秒達到高峰、表現好的自然內容採用了「提出問題、展示結果、行動呼籲」中的哪一種骨架。接著再把這些結構綜合成生成規格。
不過有一條硬性限制:競品素材的原始文字只用來判斷結構,絕不能進入最終生成 prompt。競品 hook 裡的品牌名稱、供應商數量、quota、價格與成效宣稱,都是對方的特定主張,不是結構的一部分。它們應原樣保留在研究結果裡,讓你可以檢閱,也能追溯是哪個素材觸發靈感;但建構生成 prompt 時必須明確排除。生成模型收到的應是「用這個敘事骨架與 hook 形式,為我自己的產品製作影片」,而不是「複製這句話」。
這個限制值得多花功夫。直接把競品文案倒進生成 prompt,產出的影片可能夾帶別人的品牌名稱與價格承諾,輕則形成法律風險素材,重則直接構成抄襲。只提供去除特定主張後的結構,生成的影片便能重用已驗證的結構,卻說自己的故事。研究資料要忠實保留,生成輸入則必須乾淨;同一批證據,兩種用途,也要用兩種讀法。
「從一堆證據中抽出真正經過驗證的結構、主動排除競品主張,並為每個『有效結構』提出反例」,考驗的正是嚴謹推理能力,以及願不願意反駁自己的結論。這和模型在逆向工程中該做與不該做的事有相同分工:模型擅長提出假設,卻不擅長驗證事實;驗證仍必須回到你的證據與測試。
不同階段,該用不同模型
這條流程中的文字模型並不是只做一件事,而是要負責四種需求截然不同的工作,最後還有影像與影片生成。全程只用一個模型,不是批次工作燒錢,就是 brief 的精準度下降:
階段 | 需要的能力 | 建議選擇 | model id |
|---|---|---|---|
批次閱讀完整證據包(一次處理數十個素材與逐秒曲線) | 長上下文 | Kimi K3 |
|
逐一擷取素材的結構化欄位(hook、承諾類型、緊迫感設計) | 低成本、可高併發執行數百次呼叫 | Claude Sonnet 5 |
|
撰寫 brief:挑選結構、排除競品主張、提出反例 | 強推理能力,願意反駁自身判斷 | Claude Opus 5 |
|
階段歸因(某階段為 empty 或 blocked 時,閱讀漏斗並指出證據在哪一層流失) | 中等推理能力,能根據數字說明 | GPT-5.6 Sol |
|
生成影片(9:16 直式廣告) | 影像與影片生成 | 站內生成 | 見 |
最值得單獨測試的是 brief 層,因為這是換模型後最能明顯看出結果差異的一步。測試方式很具體,也是本文唯一需要你親自跑一次的地方:
從一個確實完成的 pipeline run 中,取出一份合格證據包,包括 Top Ads hooks、留存曲線重點、創作者資料、關鍵字機會,以及幾支表現優異的自然內容。
使用相同的 brief prompt,規則為:只使用素材結構;明確排除品牌名稱、價格、quota、成效宣稱;每個「有效結構」都要提出一個反例假設。接著分別餵給
claude-opus-5與gpt-5.6-sol。只看兩件事:它是否把競品的特定主張洩漏進生成 prompt 中,洩漏即代表失敗;以及它宣稱「這個結構有效」時,有沒有提出反例,還是直接把高頻出現當成效果好。
這兩項的表現就是你的選擇標準,並直接決定生成影片究竟是「抄了競品腳本」,還是「重用了經驗證的結構」。
跑一輪就能看出差異,比任何 benchmark 都直接。批次欄位擷取層(Sonnet)幾乎不用太挑,能穩定跑就好;長上下文層(Kimi)則是為了省下你自行撰寫分塊檢索的工作。
生成階段的正確做法:提交、等待終態,逾時也要保留 task_id
生成不是「呼叫後就拿到影片」。影片生成是慢速任務:你先提交,任務進入佇列,接著必須輪詢到終態,才能確定結果。這個階段有三種結局,必須清楚區分:
提交後立即返回。 任務進入佇列,你取得一個
task_id,狀態為processing。不必原地等待,可以先去做別的事。等待終態。 持續輪詢,直到狀態成為
completed或failed。這才是你真正要取得的結果。輪詢逾時。 你為輪詢設定了時間預算,但在取得結果前用完。這時絕對不能把任務當成失敗丟掉。正確做法是保留
task_id,標記為「已逾時、尚未完成」,之後可用這個 id 繼續等待,而不是重新提交。重新提交就是再花一次錢。
第三種最容易實作錯誤。很多實作會把「輪詢逾時」等同於「任務失敗」,於是一個實際上還在渲染、只是比預期慢的任務就被丟棄。分清「任務失敗」與「我這次等得不夠久」,正是此階段的核心。前者是終態;後者只代表這次停止等待。任務仍在,id 也還在,繼續恢復即可。
所有證據皆空時別提交:知道何時不跑,才是最大價值
把前面的限制全部收斂成一條規則,這套流程最反直覺、也最有價值的結論就是:所有證據都是空的時候,不要提交生成。
需求探索是 empty、商業驗證是 empty、創作者媒合也是 empty。三條路徑裡沒有任何一筆合格的一手證據。brief 應為 blocked,生成預檢中的研究就緒閘門不通過,整條流程停在 blocked,連一格畫面都不該生成。
這聽起來像是「什麼都沒做」,卻是最難做對、也最省錢的一步。只懂得一路往前衝的流程,面對全空證據時會回退到通用 brief,生成一支對誰都打不中的影片,然後回報「成功」。你以為流程完成了,實際上卻是花了一次生成費用,換來零資訊與一個假成功訊號。
一條流程一半的價值在於它能生成,另一半則在於它知道什麼時候不該生成。前者是能力,後者是紀律。而這份紀律的前提,就是前面定義的六種狀態。沒有 empty 與 blocked 的區分,你就沒有乾淨的「全空」訊號,也無從做出「不要提交」的判斷。
一把 key,同時串起分析與生成
流程設計到這裡已經完成。接下來剩下的是純工程摩擦,而這恰好是大多數人真正卡住的地方。
這條流程所需的模型橫跨兩類供應商。文字模型層包括讀取證據、擷取欄位、撰寫 brief 與歸因,分別來自不同供應商;生成層則是另一套影像與影片服務。你可以為每一層各自串接 SDK、驗證機制與錯誤格式;或者像多數人一樣,勉強用同一個模型處理全部工作,讓批次步驟變貴、brief 精準度變差,然後還得額外串接影片平台。為了省整合功夫,整條流程的品質卻降了一級。
AIReiter 把這一層拿掉了。一把 key、一個 OpenAI 相容介面,背後包含全部四個文字模型層;只要在請求 body 中切換 model 欄位即可。影像與影片生成也在同一個網站、使用同一把 key,因此 brief 完成後,你可以直接在/chat 嘗試生成。
# 撰寫 brief:使用推理層
curl https://aireiter.com/api/v1/chat/completions \
-H "Authorization: Bearer $AIREITER_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-opus-5",
"messages": [{"role": "user", "content": "<brief prompt + qualified evidence bundle>"}]
}'
# 批次擷取欄位:只改 model 欄位,其餘不動
# "model": "claude-sonnet-5"
# 階段歸因: "model": "gpt-5.6-sol"
# 一次讀取長篇證據: "model": "kimi-k3"
如果你已經在使用 OpenAI SDK,只要把 base_url 指向 https://aireiter.com/api/v1,其他設定都不用改。若使用 Anthropic SDK,則以同一把 key 呼叫 POST /api/v1/messages。
價格結構也正好對應這條流程的成本分布。呼叫最密集的是批次欄位擷取:數十到數百個素材,每個素材一次呼叫,構成文字端的大宗成本;Claude 提供 30% off,剛好對應這一層(Sonnet 跑批次,Opus 迭代 brief,兩個 Claude 層級都涵蓋)。歸因使用 GPT-5.6,價格減半。長篇證據則用同一把 key 下的 Kimi K3。生成是另一條成本線,按次計費,但只有證據閘門通過、確實該製作影片時才會觸發。「全空時不提交」這條規則,本身就在替你節省生成費用。
免註冊試用:手動把一份合格證據包餵給 brief prompt,觀察它是否將競品品牌名稱與價格洩漏到生成輸入中;等結果穩定後,再把它寫成腳本。
結語
在「從關鍵字到完成廣告」這件事裡,真正的工程難點不在「完成廣告」,而在中間那段:把公開資料轉換成合格證據,再轉換成乾淨的 brief。
這段能否真正營運,取決於三件事。第一,每個階段的結果落入六種狀態,而非只分成功與失敗,讓 empty、skipped、unavailable 與 blocked 都能指向清楚的下一步。第二,證據先分桶、再分層,而不是直接加總,避免強訊號被大量弱訊號淹沒。第三,把「能不能產出」與「該不該產出」拆成兩道閘門,讓全空證據在生成前安全停下。
模型在這條流程中是做事的工具,不是主導者。它讀取證據、擷取欄位、撰寫 brief、解釋歸因,最後由生成模型產出影片。決定「是否應繼續」的,永遠是狀態與閘門,而不是模型看起來有多自信。把這套設計建立起來,再用一把 key 串接四個文字模型層與站內生成,這條從關鍵字到完成廣告的流程才真的能跑起來。