生活分享
Headless 模式:批次、JSON 與腳本
Headless(非互動)模式適合把 Gemini CLI 接到腳本:輸入一段文字,取得回覆與執行狀態,再由程式決定是否儲存。本篇用虛構公告示範單次摘要與小批次處理,區分 CLI 的 JSON 外層、模型產出的文字,以及真正透過驗證的工作結果。
更新日期: 閱讀時間約 4 分鐘

Headless(非互動)模式適合把 Gemini CLI 接到腳本:輸入一段文字,取得回覆與執行狀態,再由程式決定是否儲存。本篇用虛構公告示範單次摘要與小批次處理,區分 CLI 的 JSON 外層、模型產出的文字,以及真正透過驗證的工作結果。
開始前:先在互動模式完成一次
準備 Gemini CLI 0.59.0 與已完成的登入認證CLI 認證:Google 帳號、API Key 與計費Gemini CLI 的登入方式會影響可使用的服務、額度與計費歸屬。本篇帶你比較 Google 帳號登入、Gemini API Key 與 Vertex AI,完成適合自己的認證,並用最小對話驗證。重點是知道目前到底使用哪個帳號與專案,而不是只看到登入成功就假設所有功能都包含在訂閱裡。閱讀全文。先手動整理同一段公告,確認模型、提示詞與帳號都能正常使用,再移到非互動模式。這樣發生錯誤時,才容易分辨是認證問題、腳本解析問題,還是資料本身缺漏。
本篇不把排程帳號假設成你正在使用的桌面帳號。工作排程器或伺服器可能使用不同家目錄、PATH、環境變數與設定檔;手動登入成功,不代表另一個執行環境也成功。認證資訊應由受控環境提供,不寫進腳本或提交到版本庫,額度與計費請參考API 成本與錯誤處理API 額度與錯誤:費用、重試與成本控制Gemini API 的費用取決於模型、輸入輸出、服務模式及使用的工具;速率限制則決定你的專案在一段時間內能送出多少工作。本篇教你找到真正對應的用量頁面、估算一次檔案處理成本、分類錯誤,並設計有限重試與停止條件,避免把每個失敗都當成多按一次就能解決。閱讀全文及認證篇。
CLI 不需要互動視窗時,可使用 -p 傳入提示詞。-o json 會輸出包含 response、stats 等資訊的 JSON;response 仍可能是一段普通文字。選擇 JSON 輸出,只保證外層可供腳本解析,不會讓活動日期自動變成你設計的資料欄位。
單次執行:先看回覆與退出狀態
在 PowerShell 執行下面命令。提示詞使用固定的虛構資料,並要求不使用工具,先把讀檔權限等變因排除。執行後立即記錄退出碼,再解析輸出;若中間先執行其他外部程式,最後退出碼可能已被改變。
$raw = gemini -p "只使用本段文字,不使用工具。摘要:社群讀書會在青葉中心舉辦,日期未公告。請列出已知資訊與待確認事項。" -o json
$runExitCode = $LASTEXITCODE
if ($runExitCode -ne 0) { throw "Gemini CLI 執行失敗:$runExitCode" }
$result = ($raw -join "`n") | ConvertFrom-Json
if ($result.error -or -not $result.response) { throw "沒有可用回覆" }
$result.response
預期回覆保留活動地點,並指出日期未公告。除了有文字,還要核對它沒有補出年月日。本文提供的是可重跑範例與驗收標準,連線產出取決於讀者的登入、模型與額度;退出碼零也不代表內容事實已通過審查。
小批次流程:先存草稿,再核對結果
- 準備兩份純文字公告,每份資料先去除不需要的個人資訊,並賦予唯一編號。
- 一次只送一份資料,沿用同一提示詞;不要把所有檔案混成一段難以定位的長文字。
- 每次儲存編號、時間、CLI 版本、退出碼與回覆,讓失敗可以單獨重跑。
- 發生錯誤時停止該批次,確認已完成專案,避免重新執行後產生重複成果。
- 抽查原文與摘要,再把合格結果移到正式目錄;初始輸出只當待審草稿。
下面 Python 範例使用引數陣列呼叫程式,資料直接作為標準輸入傳入,不把公告內容串成 shell 命令。GEMINI_BIN 可以指定 CLI 執行入口;Windows 若找到的是 .cmd 啟動器,採 Node 與已安裝 gemini.js 的明確入口,避免用 shell=True 繞過引數處理。第一次先用前面的 PowerShell 範例確認環境。
import json
import os
import subprocess
from pathlib import Path
# GEMINI_BIN 指向可直接執行的 CLI;Windows 可改為 ["node", "實際的 gemini.js 路徑"]。
command = [os.environ.get("GEMINI_BIN", "gemini")]
prompt = "只整理標準輸入的公告,不使用工具。列出已知資訊及待確認事項,不猜測。"
output = Path("drafts")
output.mkdir(exist_ok=True)
for source in sorted(Path("announcements").glob("*.txt")):
destination = output / (source.stem + ".json")
if destination.exists():
raise RuntimeError(f"輸出已存在,請先核對:{destination}")
run = subprocess.run(
command + ["-p", prompt, "-o", "json"],
input=source.read_text(encoding="utf-8"),
text=True, encoding="utf-8", capture_output=True, timeout=180,
)
if run.returncode:
raise RuntimeError(f"{source.name} 執行失敗,退出碼 {run.returncode}")
result = json.loads(run.stdout)
if result.get("error") or not result.get("response"):
raise RuntimeError(f"{source.name} 沒有可用回覆")
destination.write_text(json.dumps(result, ensure_ascii=False, indent=2), encoding="utf-8")
串流與權限:腳本要能處理結束狀態
若使用 -o stream-json,輸出會是逐行 JSON 事件,適合顯示進度或接到其他程式。不能把整份輸出一次交給普通 JSON 物件解析器;應逐行解析,並等到最終結果事件後再標記token(Token)是什麼:AI 如何計算文字長度token 是語言模型處理內容的基本單位,可能是一段單字、標點或中文字的一部分,不能直接當成字數。本文用整理社團公告的情境,說明輸入、輸出與上下文如何計數,為什麼同一段中文換模型後用量可能不同,以及查看分詞器和實際用量時該注意什麼。你會學會估算任務空間、保留必要資訊,並分清楚 token 與登入用的存取權杖。閱讀全文完成。只有收到部分文字、程式被中斷或逾時,都不能當作成功。
需要工具的批次任務,要先在最小範圍確認權限設定CLI 權限:忽略檔案、可信任資料夾與沙箱Gemini CLI 能讀取檔案與呼叫工具,因此開始使用前,要理解忽略檔案、資料夾信任與沙箱各控制什麼。本篇在獨立練習專案中建立 .geminiignore,檢查資料夾信任選項,再辨識啟動沙箱所需條件。完成後,你能說明每一層的用途,而不會把文字規則當成檔案存取的完整隔離。閱讀全文與HooksHooks:在指定事件執行檢查Hooks(事件掛鉤)讓 Gemini CLI 在特定事件發生時執行你寫的程式。本篇用一個小型檢查器示範:在 CLI 準備呼叫 shell 工具前先回傳阻擋原因,讓練習階段保持唯讀。學完後,你會知道事件、設定與程式輸出如何接起來,以及如何分開驗證每一層。閱讀全文。沒有互動介面時,無人能替你回答臨時核准問題。不要只為了讓排程跑完就啟用全部自動核准;把任務拆成能預先驗證的讀取與草稿產出,才容易追蹤每次執行的影響。
常見問題與正式串接前檢查
正式交給排程前,再做一次故意失敗的演練:把輸入檔案留空、指定不存在的執行入口,或讓輸出檔案預先存在。這些情況應留下明確失敗狀態,並停止後續正式提交。確認你的監控是檢查程式與結果,而不是只檢查「今天有沒有建立檔案」,才能避免空白或重複成果被誤收。
「輸出不是合法 JSON」先把 stdout 與 stderr 分開儲存,確認沒有 shell 提示訊息被混進正文。檢查是否真的帶了 -o json,以及是否誤把 stream-json 當成單一物件。解析失敗時保留原始輸出供排查,不直接刪掉所有檔案重來。
「手動能用、排程不能用」比較兩邊的使用者、工作目錄、CLI 路徑與認證來源。用絕對路徑指定輸入目錄及執行入口,讓腳本不依賴當下開在哪個資料夾。先在排程環境跑無工具的小提示詞,成功後再加入檔案處理。
「可以失敗就無限重試嗎」不適合。額度、認證與無效輸入應先分類,只有暫時性失敗才採有限次數與間隔重試。每份公告使用唯一編號,避免重新產生同名成果。需要嚴格欄位、服務端驗證與長期維護的應用,可接著學API 結構化輸出API 檔案與 JSON:結構化輸出及驗證Gemini API 可以讀取 PDF,再把結果整理成指定的 JSON 結構。本篇用虛構活動公告示範檔案輸入、欄位設計與本地驗證。學完後,你會知道「收到合法 JSON」與「內容確實來自檔案」是兩件需要分別檢查的事,並能保留缺漏資訊而不讓模型自行補齊。閱讀全文,用清楚的資料模型管理結果。
完成後的檢核
| 檢查項目 | 通過條件 |
|---|---|
| 操作 | 能依正文重做一次,說明每一步使用的輸入。 |
| 結果 | 能用原始資料或可重現測試核對輸出,而非只看語氣。 |
| 延伸 | 知道下一篇教學解決的問題,以及什麼時候需要它。 |
接著可以閱讀 HooksHooks:在指定事件執行檢查Hooks(事件掛鉤)讓 Gemini CLI 在特定事件發生時執行你寫的程式。本篇用一個小型檢查器示範:在 CLI 準備呼叫 shell 工具前先回傳阻擋原因,讓練習階段保持唯讀。學完後,你會知道事件、設定與程式輸出如何接起來,以及如何分開驗證每一層。閱讀全文、API 額度與錯誤API 額度與錯誤:費用、重試與成本控制Gemini API 的費用取決於模型、輸入輸出、服務模式及使用的工具;速率限制則決定你的專案在一段時間內能送出多少工作。本篇教你找到真正對應的用量頁面、估算一次檔案處理成本、分類錯誤,並設計有限重試與停止條件,避免把每個失敗都當成多按一次就能解決。閱讀全文,把本篇的操作接到下一個工作流程。
返回 Gemini 教學總目錄Gemini 完整教學:電腦、手機、CLI 與 Google AI 應用這裡整理 Gemini、Google AI 與開發工具的教學。可以按分類找功能、按自己的需求走學習路線,也可以搜尋「MD」「手機」「PDF」「/memory」等關鍵字。每篇都提供步驟、可複製範例、結果核對方式與延伸閱讀,不需要從第一篇一路讀到底。閱讀全文
同主題延伸閱讀
生活分享
完整實作:文件摘要與資料擷取工具
這篇把前面學過的提示詞、API 呼叫與 JSON 驗證串成一個可執行的檔案工具。輸入一份 UTF-8 活動公告,程式產生摘要、五個固定欄位、原文引用與待確認問題,再存成待審 JSON。你會練習把模型當作資料處理的一個步驟,讓驗證與儲存仍由程式明確控制。
生活分享
API 檔案與 JSON:結構化輸出及驗證
Gemini API 可以讀取 PDF,再把結果整理成指定的 JSON 結構。本篇用虛構活動公告示範檔案輸入、欄位設計與本地驗證。學完後,你會知道「收到合法 JSON」與「內容確實來自檔案」是兩件需要分別檢查的事,並能保留缺漏資訊而不讓模型自行補齊。
生活分享
AI Studio 與第一個 Gemini API 呼叫
Google AI Studio 是試用模型與建立 Gemini API 金鑰的開發入口。本篇從一個簡單提示詞開始,帶你建立獨立專案環境,分別用 Python 與 JavaScript 呼叫 API。完成後,你會知道網頁試跑、程式執行與帳號用量各自在哪裡確認,不再把消費者版 Gemini 的操作直接套程式式。
引用本文的文章
最新旅遊情報攻略

情報
2026 韓國楓葉預測:雪嶽山 10 月 20 日、首爾近郊 10 月底、內藏山與漢拏山 11 月上旬
韓國山林廳 2026 年 9 月 22 日公布的楓紅高峰預測:雪嶽山 10 月 20 日,春川、國立樹木園到首爾植物園落在 10 月 28 日到 11 月 2 日,內藏山 11 月 4 日、漢拏山 11 月 6 日,整體比最近 5 年晚約 0.8 天。整理各地楓樹與銀杏的預測日、首爾出發怎麼排,以及出發前去哪裡看即時楓況。2026 年 10 月查證。
- 季節活動
- 自然
- 觀景

攻略胡志明市
胡志明市到頭頓一日遊:白藤碼頭搭高速船、船票與班次,下船就是胡梅纜車與耶穌基督像
人在胡志明市挪一天去頭頓看海:市中心的白藤高速船碼頭搭船,航程 120 分鐘到頭頓的胡梅碼頭,平日成人 320,000 越南盾、週末 350,000,回程末班平日 15:00。下船就是胡梅纜車站,同一條路上有白宮,小山頂上是耶穌基督像。平日一天只有兩班船,整天要從末班船倒推著排。
- 交通
- 行程範例
- 海灘

攻略沖繩
沖繩不開車攻略:單軌只到浦添,美麗海水族館要坐兩個多小時的巴士,回那霸的最後一班直達車 17:22 就開走
不租車的沖繩怎麼移動:那霸市區靠沖繩都市單軌電車(ゆいレール),那霸機場站到終點てだこ浦西 19 站、17 公里、37 分鐘,一日券 1,000 日圓;美麗海水族館有那霸機場直達的高速巴士,單程 2,000 日圓起、官方時刻表上 2 小時上下,下車後還要走 10 分鐘;古宇利島要在今帰仁村役場轉車,當天來回光坐車就六個半小時;回程的最後一班直達車 17:22 就從記念公園前開走(2026 年 9 月查證)。
- 交通
- 行程範例
- 預算
資料來源
- Gemini CLI:Headless 輸出與退出碼 · 查證日期:
- Gemini CLI:批次自動化 · 查證日期: