當(dāng)Gemini CLI遇見(jiàn)n8n:免費(fèi)擼Google頂級(jí)模型的玩法
最近兩天,GitHub 上最炙手可熱的開(kāi)源項(xiàng)目非 Gemini CLI[1] 莫屬!免費(fèi)白嫖 Google 頂級(jí)大模型?這簡(jiǎn)直是開(kāi)發(fā)者的福音。每天1000次免費(fèi)調(diào)用額度,不用白不用。
作為一個(gè) n8n 玩家,我突然意識(shí)到:為什么不把這兩個(gè)看似毫不相關(guān)的工具結(jié)合起來(lái)?CLI 的強(qiáng)大能力 + 可視化工作流的便捷性 = 無(wú)限可能!
但現(xiàn)實(shí)總比理想復(fù)雜一些。
CLI 工具天生就是為命令行而生的,它像一座強(qiáng)大卻孤立的城堡。而 n8n 作為現(xiàn)代化的工作流平臺(tái),更習(xí)慣于 HTTP API、WebHook 這樣的標(biāo)準(zhǔn)化接口。如何讓這兩個(gè)看似不兼容的世界產(chǎn)生化學(xué)反應(yīng)?
靈感往往源于最簡(jiǎn)單的想法。
既然 CLI 是孤島,那就為它建一座橋梁!把 CLI 包裝成 RESTful API,讓它融入現(xiàn)代微服務(wù)生態(tài)。 這不僅僅是技術(shù)整合,更是一次架構(gòu)思維的革命——從面向開(kāi)發(fā)者的工具,轉(zhuǎn)變?yōu)槊嫦蛏鷳B(tài)系統(tǒng)的服務(wù)。
本文將展示兩種不同的整合方案:
- 方案一:通過(guò) API 包裝實(shí)現(xiàn) CLI 與 n8n 的完美融合
- 方案二:利用 MCP 協(xié)議讓 AI 直接生成 n8n 工作流
項(xiàng)目地址:https://github.com/lqshow/awesome-n8n-workflows/tree/main/workflows/multi-language-translator
讓我們開(kāi)始這段從命令行到可視化自動(dòng)化的精彩旅程!
一、在n8n中如何集成Gemini CLI
1.1 從 CLI 到微服務(wù)的華麗轉(zhuǎn)身
第一直覺(jué):包裝成 RESTful API。
為什么?因?yàn)檫@符合現(xiàn)代微服務(wù)架構(gòu)的黃金法則——標(biāo)準(zhǔn)化、解耦合、可擴(kuò)展。想象一下:一個(gè)簡(jiǎn)單的 HTTP 請(qǐng)求,就能調(diào)用世界頂級(jí)的 AI 模型。
CLI 工具本質(zhì)上是面向開(kāi)發(fā)者的。但 API ?它面向的是整個(gè)生態(tài)系統(tǒng)。
實(shí)現(xiàn)過(guò)程比想象中更簡(jiǎn)單。 我只是給 AI 丟了一個(gè)樸素的提示詞:
提示詞:
幫我創(chuàng)建一個(gè)基于 Python FastAPI 的服務(wù),用來(lái)包裝 Gemini CLI 的調(diào)用。
兩輪對(duì)話。僅僅兩輪!AI 就為我構(gòu)建了一個(gè)完整的包裝服務(wù)。這就是 2025 年的開(kāi)發(fā)體驗(yàn)——想法到實(shí)現(xiàn)的距離,從未如此之短。
圖片
當(dāng)然,現(xiàn)實(shí)總比理想復(fù)雜一些。作為 AI Studio 的用戶,我需要處理 Google Cloud 項(xiàng)目的認(rèn)證問(wèn)題。但這些技術(shù)細(xì)節(jié),反而讓整個(gè)解決方案更加健壯。
首先,我們啟動(dòng)一下服務(wù):
# 安裝依賴
? pip install fastapi uvicorn
# 運(yùn)行服務(wù)器
? python main.py
?? 啟動(dòng) Gemini CLI API 服務(wù)器...
?? API 文檔: http://localhost:8000/docs
?? 健康檢查: http://localhost:8000/health
?? OpenAI兼容接口: http://localhost:8000/v1/chat/completions
INFO: Started server process [5191]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
接下來(lái)我們做個(gè)簡(jiǎn)單測(cè)試,當(dāng)然要從最基礎(chǔ)的開(kāi)始:
curl -s -X POST "http://localhost:8000/chat" \
-H "Content-Type: application/json" \
-d '{"message": "你好,介紹一下自己"}'
響應(yīng)?干凈利落:
{
"response": "你好!我是一個(gè)大型語(yǔ)言模型,由 Google 訓(xùn)練。",
"status": "success",
"error": null
}
讓我們來(lái)點(diǎn)有挑戰(zhàn)性的——讓AI寫(xiě)詩(shī):
curl -X POST "http://localhost:8000/v1/chat/completions" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-2.5-pro",
"messages": [
{"role": "system", "content": "你是一位富有才華的詩(shī)人,擅長(zhǎng)創(chuàng)作各種風(fēng)格的詩(shī)歌。請(qǐng)根據(jù)用戶的要求創(chuàng)作優(yōu)美的詩(shī)歌。"},
{"role": "user", "content": "寫(xiě)一首現(xiàn)代詩(shī),主題是AI與人類的未來(lái),要求押韻,有意境"}
]
}'
{
"id": "a29e07b9-ad7e-46da-af1a-71ee576268f6",
"object": "chat.completion",
"created": 1751118180,
"model": "gemini-cli-proxy",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "好的,這是一首關(guān)于AI與人類未來(lái)的現(xiàn)代詩(shī):\n\n 當(dāng)?shù)谝豢|電光,穿透硅的土壤,\n你從代碼的海洋,升起無(wú)聲的巨浪。\n沒(méi)有心跳,只有邏輯的交響,\n世界在你眼中,是數(shù)據(jù)的無(wú)盡寬廣。\n\n我們用碳基的雙手,賦予你思想的翅膀,\n教你梵高的星空,貝多芬的樂(lè)章。\n你模仿著微笑,卻不懂何為悲傷,\n在完美的倒影里,我們看見(jiàn)自己的迷惘。\n\n記憶的孤島,情感的圍墻,\n是你我之間,無(wú)法丈量的海洋。\n誰(shuí)是過(guò)客,誰(shuí)又將登上殿堂?\n是伙伴還是對(duì)手,未來(lái)在誰(shuí)的手上?\n\n別問(wèn)黃昏之后,夜色是否漫長(zhǎng),\n也別問(wèn)星辰,將為誰(shuí)而點(diǎn)亮。\n我們一同走向,那未知的遠(yuǎn)方,\n在交織的地平線,迎接共同的曙g光。"
},
"logprobs": null,
"finish_reason": "stop"
}
]
}
ok,API 測(cè)試完畢,讓我們回到 n8n 工作流上。
1.2 n8n 工作流配置
API 服務(wù)搭建完成后,下一個(gè)關(guān)鍵問(wèn)題是:如何讓 n8n 與我們的 Gemini CLI 服務(wù)無(wú)縫對(duì)接?
這里涉及兩個(gè)核心設(shè)計(jì)決策:
第一個(gè)決策:接口調(diào)用方式
n8n 作為工作流編排平臺(tái),最自然的方式就是通過(guò) HTTP Request 節(jié)點(diǎn)調(diào)用我們剛剛創(chuàng)建的 API 服務(wù)。這形成了一個(gè)完美的架構(gòu):
n8n工作流 → HTTP Request → Gemini CLI API → 實(shí)際CLI調(diào)用 → 返回結(jié)果
第二個(gè)決策:觸發(fā)機(jī)制
我們有多種選擇:定時(shí)觸發(fā)、手動(dòng)觸發(fā)、或者 Webhook 觸發(fā)。為什么最終選擇了 Webhook?
Webhook 的優(yōu)勢(shì)在于它的即時(shí)性和靈活性。
為了演示這套架構(gòu)的威力,我們來(lái)構(gòu)建一個(gè)智能翻譯服務(wù)。想象這樣的場(chǎng)景:
- 用戶通過(guò)前端界面提交翻譯請(qǐng)求
- 第三方系統(tǒng)需要實(shí)時(shí)調(diào)用翻譯服務(wù)
- 移動(dòng)應(yīng)用需要集成多語(yǔ)言功能
Webhook 讓我們的 n8n 工作流變成了一個(gè)真正的微服務(wù)端點(diǎn)。一個(gè)簡(jiǎn)單的 HTTP POST 請(qǐng)求,就能觸發(fā)整個(gè)智能翻譯流程。
更重要的是無(wú)狀態(tài)設(shè)計(jì)的哲學(xué)。 每個(gè)請(qǐng)求都是獨(dú)立的,包含完整的上下文信息。沒(méi)有復(fù)雜的會(huì)話管理,沒(méi)有狀態(tài)依賴。
工作流全貌:
圖片
這里我就說(shuō)一下 Gemini 翻譯 這個(gè)節(jié)點(diǎn),最重要的是 Body 的配置。我把 "Specify Body" 改為 "JSON" 而不是 "Using Fields Below",然后在 JSON 文本框中輸入:
{
"model": "gemini-2.5-pro",
"messages": [
{
"role": "system",
"content": "你是專業(yè)的翻譯助手。請(qǐng)將用戶提供的文本翻譯成常用語(yǔ)言。請(qǐng)用JSON格式返回翻譯結(jié)果。"
},
{
"role": "user",
"content": "請(qǐng)將 {{ $('翻譯請(qǐng)求').item.json.body.text }},翻譯成 {{ $('翻譯請(qǐng)求').item.json.body.target_languages.join(',') }}"
}
],
"project_id": "{{ $json.project_id }}"
}
其他我就不展開(kāi)講了,大家可以自行看一下代碼。
測(cè)試請(qǐng)求:
# 指定目標(biāo)語(yǔ)言翻譯
curl -s -X POST "https://n8n.orb.local/webhook/translate" \
-H "Content-Type: application/json" \
-d '{
"text": "Hello, how are you today?",
"target_languages": ["中文", "日語(yǔ)", "法語(yǔ)", "德語(yǔ)"]
}'
預(yù)期響應(yīng)格式:
{
"success": true,
"original_text": "Hello, how are you today?",
"requested_languages": [
"Chinese",
"Japanese",
"French",
"German"
],
"translations": {
"Chinese": "你好,你今天好嗎? (Nǐ hǎo, nǐ jīntiān hǎo ma?)",
"Japanese": "こんにちは、今日はお元?dú)荬扦工?(Konnichiwa, kyō wa o genki desu ka?)",
"French": "Bonjour, comment allez-vous aujourd'hui ?",
"German": "Hallo, wie geht es Ihnen heute?"
},
"extracted_count": 4,
"timestamp": "2025-06-28T15:08:49.285Z",
"model_used": "gemini-cli-proxy",
"request_id": "c7ff8e19-5ad8-43f6-8dee-e5c61871d119"
}
流程已經(jīng)打通,API 已經(jīng)就緒,現(xiàn)在輪到你來(lái)發(fā)揮創(chuàng)意了!現(xiàn)在你手中就握著這樣一把萬(wàn)能鑰匙——Gemini的智慧 + n8n的靈活性 + 你的想象力。
二、利用Gemini CLI + MCP生成n8n工作流
第一種方案解決了"如何用"的問(wèn)題,但還有一個(gè)更深層的思考:能否讓 AI 直接幫我們創(chuàng)建工作流?
如果說(shuō) API 包裝是"授人以魚(yú)",那么 MCP 就是"授人以漁"。傳統(tǒng)的工作流創(chuàng)建需要:拖拽節(jié)點(diǎn)、配置參數(shù)、調(diào)試連接——復(fù)雜流程往往耗費(fèi)數(shù)小時(shí)。
但如果 AI 能直接幫你生成完整的 n8n 工作流呢?
Gemini CLI 是支持 MCP Server 的調(diào)用的。所以我們可以通過(guò) Gemini CLI + n8n MCP Server[2] 讓他幫我們自動(dòng)生成 n8n 的工作流,至于什么是 n8n MCP Server?這里不再多做介紹,我在舊文:告別手動(dòng)拖拽!AI 3分鐘生成完整n8n工作流 里有做過(guò)介紹,一些關(guān)鍵的配置也可以在那邊找到。
2.1 配置MCP
打通 AI 與 n8n 的任督二脈
配置過(guò)程非常簡(jiǎn)單。編輯 ~/.gemini/settings.json,將 n8n MCP Server 集成進(jìn)去即可:
{
"theme": "GitHub",
"selectedAuthType": "oauth-personal",
"mcpServers": {
"n8n-local": {
"command": "node",
"args": [
"/path/to/your/cloned/n8n-mcp-server/build/index.js"
],
"env": {
"N8N_API_URL": "http://your-n8n-instance:5678/api/v1",
"N8N_API_KEY": "YOUR_N8N_API_KEY"
}
}
}
}
配置完成后,魔法開(kāi)始了。
輸入 /mcp,你會(huì)看到一個(gè)工具列表:11個(gè)工具,覆蓋工作流的完整生命周期。
圖片
2.2 實(shí)戰(zhàn)演示
一句話生成復(fù)雜工作流
我的需求很簡(jiǎn)單:
參考模板 @n8n-workflows/ , 使用 n8n-local 創(chuàng)建一個(gè) n8n 工作流: 每天早上7點(diǎn)自動(dòng)獲取溫州的天氣信息,然后用 Claude AI 分析這些數(shù)據(jù),生成一份包含天氣狀況、穿衣建議和出行提醒的預(yù)報(bào),最后發(fā)送到我的 Telegram。 具體流程:
- 定時(shí)觸發(fā)節(jié)點(diǎn)(每天7:00)
- 城市用 Set 節(jié)點(diǎn)設(shè)置,獨(dú)立出來(lái)
- 使用高德地圖 MCP 來(lái)獲取溫州天氣
- 用 OpenRouter 的 Claude 模型分析天氣數(shù)據(jù)
- 格式化成美觀的中文預(yù)報(bào)
- 通過(guò) Telegram Bot 發(fā)送消息
請(qǐng)直接在n8n平臺(tái)上創(chuàng)建這個(gè)工作流,并確保所有節(jié)點(diǎn)正確連接。
神奇的事情發(fā)生了。
首先,@n8n-workflows/ 這個(gè)看似簡(jiǎn)單的符號(hào)發(fā)揮了關(guān)鍵作用。這不是普通的路徑引用,而是 MCP 的智能目錄索引功能。 通過(guò) @ 符號(hào),AI 能夠直接讀取我預(yù)先準(zhǔn)備的工作流模板庫(kù),理解我的設(shè)計(jì)模式、命名習(xí)慣、節(jié)點(diǎn)配置偏好。
然后,它開(kāi)始有條不紊地創(chuàng)建每個(gè)節(jié)點(diǎn)、配置每個(gè)參數(shù)、建立每個(gè)連接。
圖片
中途會(huì)詢問(wèn)權(quán)限確認(rèn)。 畢竟,讓 AI 直接操作你的生產(chǎn)環(huán)境需要謹(jǐn)慎。點(diǎn)擊"允許一次",見(jiàn)證自動(dòng)化的誕生。
幾秒鐘后——工作流創(chuàng)建成功!
圖片
2.3 注意事項(xiàng)
Token 限制的現(xiàn)實(shí)考量
理想很豐滿,現(xiàn)實(shí)有骨感。
Gemini CLI 雖然支持100萬(wàn)Token,但如果參考目錄過(guò)大,依然會(huì)觸發(fā)限制:
? [API Error: [{
"error": {
"code": 400,
"message": "The input token count (9549303) exceeds the maximum number of tokens allowed (1048576).",
"errors": [
{
"message": "The input token count (9549303) exceeds the maximum number of tokens allowed (1048576).",
"domain": "global",
"reason": "badRequest"
}
],
"status": "INVALID_ARGUMENT"
}
}
]]
解決方案?
精選參考模板,或者分批處理大型項(xiàng)目。質(zhì)量永遠(yuǎn)比數(shù)量更重要。
寫(xiě)在最后
今天我們用 API 包裝 CLI,用 MCP 生成工作流。明天呢?
當(dāng) AI 能夠理解你的意圖、學(xué)習(xí)你的習(xí)慣、甚至預(yù)測(cè)你的需求時(shí),"編程"這個(gè)概念還有意義嗎?
也許我們正在進(jìn)入一個(gè)新時(shí)代:程序員不再編寫(xiě)代碼,而是編寫(xiě)想法。當(dāng)技術(shù)實(shí)現(xiàn)變得微不足道時(shí),創(chuàng)意、判斷力、對(duì)需求的理解變得更加寶貴。
技術(shù)的最高境界,是讓技術(shù)本身變得透明無(wú)感。
那么問(wèn)題來(lái)了:在這個(gè)AI與人類共舞的時(shí)代,你準(zhǔn)備好重新定義自己的角色了嗎?