Select Page

fal.ai 是一個生成式媒體 API 平台,它把多家圖片、影片、音訊與 3D 模型放在同一套介面下,開發者不必為每一家服務分別串接帳號與 SDK。再把操作規則包成 Codex Skill,就能讓 Codex 根據任務選模型、整理提示詞、上傳參考圖、送出工作、追蹤結果,最後把檔案下載到專案資料夾。

這套方式真正省下的是固定訂閱與切換工具的時間,不是讓付費模型突然變成免費。fal.ai 採預付點數與按量計費,圖片可能依張數或百萬像素計價,影片常依秒數、解析度或單次輸出計價。對偶爾生成、需要跨模型比較的人很有彈性,長期大量生成前則一定要先算成本。

先講結論,fal.ai 適合什麼人

做法適合情況優點要注意什麼
fal.ai Playground偶爾做一兩張圖或測模型不用先寫程式,直接調參數重複任務仍要手動操作
fal.ai 加 Codex Skill固定工作流、批次產出、專案整合能保存規則、命名、目錄與成本檢查需要 API 點數與基本設定
單一平台訂閱高度依賴固定工具與固定模型介面完整,方案可能含較高用量不用時仍可能支付月費
本地 ComfyUI生成量大、重視隱私、已有顯卡沒有每次 API 費用,控制度高需要顯存、硬碟與維護經驗

如果每個月只做少量成品,又想在 Nano Banana、GPT Image、Seedance、Kling、MiniMax 等模型之間切換,按量付費通常比同時維持多個訂閱直覺。若每天大量產圖,或素材不能離開本機,則可以先看 Krea2 與 ComfyUI 圖像編輯工作流,影片生成也可參考 LTX 2.3 本地部署教學

Skill 的價值不是多一個聊天指令

Skill 可以把一套反覆使用的製作規則交給 Codex。它不只是記住「呼叫 fal.ai」,而是先判斷這次是文字生圖、圖片編輯、文字生影片或圖生影片,再選對端點與參數。不同操作通常有不同的模型 ID,文字生圖與圖片編輯即使使用同一模型,也不能假設共用同一個端點。

  • 讀取 參考圖 資料夾,辨認可用素材與用途
  • 先擴寫提示詞,再讓使用者確認內容與預估費用
  • 依圖片、影片、編輯或動畫需求選擇端點
  • 使用日期、模型與任務名稱建立可追蹤檔名
  • 把結果下載到 完成檔,不要只留下暫時網址
  • 保存請求 ID、模型 ID、主要參數與實際輸出

這和用 Codex 製作動畫的思路相同。工具負責執行,Skill 負責把規格、步驟與驗收條件固定下來。想再理解 Skill 如何控制視覺製作,可以延伸閱讀 7 個 AI 動畫 Skills 怎麼選Codex 動態圖表和短影片工作流

建立專案與安裝 Python 套件

先在工作目錄建立 Skill、參考圖與完成檔資料夾,再建立獨立的 Python 環境。

mkdir -p .codex/skills/fal-media/scripts
mkdir -p 參考圖 完成檔
python3 -m venv .venv
source .venv/bin/activate
python -m pip install fal-client python-dotenv

到 fal.ai Dashboard 建立 API Key。只需要呼叫模型時先選 API 權限,不必一開始就給管理權限。金鑰只會完整顯示一次,取得後放進專案根目錄的 .env

FAL_KEY=在這裡填入自己的金鑰

接著把 .env 與輸出資料夾加入 .gitignore。不要把金鑰貼進聊天內容,也不要寫在 Skill、Python 程式或 Git 儲存庫裡。

.env
.venv/
完成檔/

先用圖片完成第一個測試

模型名稱與輸入欄位會隨模型不同而改變,送出前要先看該模型的 API 頁面。下面以 Nano Banana 2 的文字生圖端點示範。第一次先產一張低風險測試圖,確認金鑰、額度與輸出格式都正常。

from pathlib import Path
from urllib.request import urlretrieve

import fal_client
from dotenv import load_dotenv

load_dotenv()

result = fal_client.subscribe(
    "fal-ai/nano-banana-2",
    arguments={
        "prompt": "明亮自然光下的現代木質工作桌,畫面乾淨,寫實產品攝影",
        "num_images": 1,
    },
)

output = Path("完成檔/fal-nano-banana-2.png")
output.parent.mkdir(parents=True, exist_ok=True)
urlretrieve(result["images"][0]["url"], output)
print(output)

subscribe() 會自動進入佇列並等待結果,適合圖片與短時間測試。若要做圖片編輯,先用 fal_client.upload_file() 上傳本地參考圖,再依模型文件切換到編輯端點,例如 fal-ai/nano-banana-2/edit。輸入欄位可能是單一圖片或圖片陣列,不能直接把另一個模型的參數名稱搬過來。

影片任務改用佇列

影片生成時間較長,正式流程應使用 submit() 先取得請求 ID,再查狀態或接 webhook。這樣即使終端關閉,仍能用請求 ID 找回工作。下面使用 Seedance 2.0 文字生影片端點,參數依目前官方文件填寫。

from pathlib import Path
from urllib.request import urlretrieve

import fal_client
from dotenv import load_dotenv

load_dotenv()

handler = fal_client.submit(
    "bytedance/seedance-2.0/text-to-video",
    arguments={
        "prompt": "清晨的城市屋頂,一架小型無人機緩慢掠過,電影感廣角鏡頭,自然環境聲",
        "resolution": "720p",
        "duration": "5",
        "aspect_ratio": "16:9",
        "generate_audio": True,
        "bitrate_mode": "standard",
    },
)

print(f"request_id: {handler.request_id}")
result = handler.get()

output = Path("完成檔/fal-seedance-2.mp4")
output.parent.mkdir(parents=True, exist_ok=True)
urlretrieve(result["video"]["url"], output)
print(output)

這個範例最後仍用 handler.get() 等待完成,目的是讓第一次測試保持簡單。大量任務應保存請求 ID,定期查詢狀態,或把 webhook URL 傳給 submit()。新的 fal.ai 帳號通常從較低的同時執行數開始,超出的工作會留在佇列,不需要自己不斷重送。

可以直接交給 Codex 的 Skill 提示詞

先讓 Codex 建立 .codex/skills/fal-media/SKILL.md 與必要腳本。下面這段不是一次性的生圖提示詞,而是用來定義整套工作方式。

請在目前專案建立一個 fal-media Codex Skill,使用 Python fal-client。

工作規則
1. API 金鑰只從環境變數 FAL_KEY 讀取,不得顯示、記錄或寫入程式碼
2. 先判斷任務屬於文字生圖、圖片編輯、文字生影片或圖生影片
3. 呼叫前先讀取對應模型的官方 API 文件,確認端點 ID、必要欄位、輸出格式與目前價格
4. 讀取參考圖資料夾中的素材,列出準備使用的檔名與用途
5. 先把我的簡短需求整理成完整提示詞,但在產生前必須讓我確認提示詞、模型、解析度、時長、數量與預估費用
6. 圖片測試可使用 subscribe,影片與長時間任務使用 submit 並保存 request_id
7. 生成完成後立刻下載到完成檔資料夾
8. 檔名格式為日期時間、模型短名、任務短名
9. 同時保存一份 JSON 紀錄,包含端點 ID、參數、request_id、輸出路徑與執行時間
10. 失敗時先回報錯誤與可能費用,不要自動無限重試

請先建立檔案與顯示差異,不要實際呼叫付費 API。

Skill 建好後,日常任務可以簡化成一段明確需求。

請使用 fal-media Skill,把參考圖中的咖啡機做成 5 秒 16:9 產品影片。
鏡頭從正面特寫緩慢拉遠,保留機身外型與顏色,加入清晨窗光和少量蒸氣。
先比較兩個適合的圖生影片模型,列出各自預估費用、速度與限制。
等我確認模型與完整提示詞後才開始生成。

提示詞要固定哪些資訊

  • 目的與輸出類型,例如商品首圖、社群短片或角色動作測試
  • 主體、場景、動作與必須保留的特徵
  • 構圖、鏡頭、光線、材質與色彩
  • 尺寸、比例、時長、解析度與輸出數量
  • 參考圖的用途,例如保留人物、只取服裝或只參考構圖
  • 避免事項,例如不要改 Logo、不要增加文字、不要改變產品比例
  • 成本上限與開始前是否需要人工確認

擴寫提示詞不是把形容詞堆得越多越好。對圖片而言,主體、構圖、光線與限制比華麗文字重要。對影片而言,還要明確交代起始狀態、動作順序、鏡頭移動、時間長度與聲音。一次只測一個主要變因,才能知道品質改變來自模型、提示詞還是參數。

不是免費,只是把固定月費改成按量計費

fal.ai 使用預付點數。依官方說明,成功輸出才會依模型單位計費,排隊時間與伺服器錯誤通常不計費,但若使用者端錯誤發生前已經啟動 GPU 工作,仍可能產生費用。已購買點數目前有期限,模型價格也可能調整,所以文章裡的舊價格不能代替每次執行前的模型頁面。

  • 圖片先用一張與較低解析度測試
  • 影片先做 4 到 5 秒,再決定是否延長
  • 送出前顯示模型單價、數量、秒數與預估總額
  • 設定單次成本上限,超過就停止並要求確認
  • 不要在失敗後自動切換更貴模型
  • 保存 request_id,避免誤以為失敗而重複送出

對只想偶爾試一張圖的人,直接使用 Playground 會更省事。對已經每天用 Codex 管專案的人,Skill 的價值才會明顯,因為相同的命名、資料夾、模型選擇與確認規則都能重複使用。至於高頻生成,應把 fal.ai、固定訂閱與本地工作流的實際月成本放在一起比較。

API 金鑰、參考圖與成品都要保護

前端網頁或桌面 App 不能把 FAL_KEY 直接打包進程式。瀏覽器程式碼可被查看,應由自己的後端代理請求,再由伺服器附加金鑰。桌面工具也應使用系統安全儲存區或後端,而不是把金鑰放在可讀取的設定檔。

資料保留同樣不能忽略。fal.ai 文件目前指出,JSON 請求與回應預設可能保留一段時間,可透過 X-Fal-Store-IO 控制平台不要保存這部分內容。但生成的媒體網址屬於另一件事,拿到網址的人可能可以存取,且 CDN 檔案不是永久保存。敏感素材應先確認模型與平台政策,完成後立刻下載,並依需求設定媒體生命週期。

我的建議工作流

  1. 先在 fal.ai Playground 用同一段需求比較兩個模型
  2. 確認畫質、速度、授權、輸入格式與目前單價
  3. 把選定端點寫進 Skill 的模型對照表
  4. 讓 Codex 擴寫提示詞並列出預估成本
  5. 人工確認後只做一張圖或 5 秒影片
  6. 檢查主體一致性、文字、構圖、聲音與瑕疵
  7. 通過後才增加解析度、時長或數量
  8. 下載成品並保存參數與 request_id

如果最後還要把多段素材組成完整內容,可以把生成素材交給 OpenMontage 本地影片工作流或 HyperFrames。

fal.ai 比較像生成引擎與模型入口,Skill 負責製作規則,剪輯與編排工具則負責把素材變成能交付的作品。

FAQ

fal.ai 是免費的嗎

不是。它主要採預付點數與按量計費,不同模型、解析度、秒數與輸出數量會影響費用。少量使用可能比維持多個月費訂閱划算,但不代表零成本。

一定要建立 Codex Skill 嗎

不一定。只測一次模型,直接用 Playground 最快。需要反覆處理參考圖、提示詞、模型選擇、成本確認、下載與命名時,Skill 才能省下大量重複操作。

可以把 API Key 貼給 Codex 嗎

不要。把金鑰存成 FAL_KEY 環境變數,並讓程式直接讀取。對瀏覽器與公開 App,必須透過後端代理,不能把金鑰放在前端。

生成完成後可以只保存網址嗎

不建議。CDN 有保留期限,且媒體網址可能被持有網址的人存取。完成後應立即下載到自己的儲存空間,並保存請求 ID 與模型參數。

官方資源