嗨,你好,我在嘗試複製 Nick Saraev 的工作流程 (https://youtu.be/2GZ2SNXWK-c?si=vEHZO8dGKFWNXLMq),它可以從 Google Sheets 的數據出發,通過 OpenAI 向公司發送電子郵件。我不知道我做錯了什麼,即使和 AI 交流也沒有找到任何解決方案。如果有任何建議或幫助,請發送至電子郵件:pabloserranovasquez2006@gmail.com,我將不勝感激。非常感謝!!!
n8n.io - Workflow Automation
嘿 @Pablo_Serrano,在等待回應時,這些資源可能對你有幫助:
@solomon、@Jekylls - 你們之前幫助過類似的問題,能看一下嗎?
由 n8n 社群機器人自動建議。這是試點計畫 - 請在此分享回饋。
嗨 @Pablo_Serrano 歡迎!
那是你自己的編輯器網址,它只會在你的帳戶上開啟,所以這裡的任何人都看不到工作流程。用 Ctrl+A 選取畫布上的所有節點,用 Ctrl+C 複製它們,然後將 JSON 貼到此處回覆中的程式碼區塊。首先從中移除認證名稱,複製時會附帶這些名稱。
將失敗節點的錯誤文字與其輸入和輸出面板一起貼出來。沒有失敗的節點和它的錯誤訊息,就沒有具體的東西可以除錯。
將其保留在執行緒上,而不是透過電子郵件,這樣以後遇到相同問題的任何人都能找到解決方案。
更多關於獲得回答的資訊:
Hi @Pablo_Serrano 為了幫助你,我們需要更多具體的細節,因為工作流程的連結對其他使用者無法存取(因為這是你個人的雲端實例)。你能否分享以下資訊:
它在哪個具體的節點上失敗或停止?
你收到了什麼確切的錯誤訊息?請提供螢幕截圖或文字說明。
你期望發生什麼事,實際上又發生了什麼事?
有了這些資訊,就會有人能夠真正幫助你。另外,你可能想要編輯你的貼文以移除個人電子郵件,最好將對話保留在論壇上,這樣可以幫助將來遇到同樣問題的其他人。
嗨 Pablo_Serrano,
請提供你的工作流程 json 檔案,這樣我就能幫你修復它,對我來說幫助別人是一個很好的做法,謝謝。
注意:請將其保留在此討論串中,而不是透過電子郵件發送,這樣如果其他人日後遇到相同問題,他們也能看到修復方案。
嗨,我想要執行 Nick Saraev 的工作流程(https://youtu.be/2GZ2SNXWK-c?si=vEHZO8dGKFWNXLMq),從 Google Sheets 中的數據開始,通過 OpenAI 向公司發送電子郵件。我不知道我做錯了什麼,即使與 AI 交談也找不到任何解決方案。任何建議或幫助都將不勝感激。非常感謝!!!
JSON 格式的工作流程:
{
“nodes”: [
{
“parameters”: {},
“type”: “n8n-nodes-base.manualTrigger”,
“typeVersion”: 1,
“position”: [
-96,
496
],
“id”: “815388b3-0e10-4c2c-8312-4e5180dfa21f”,
“name”: “When clicking ‘Execute workflow’”
},
{
“parameters”: {
“documentId”: {
“__rl”: true,
“mode”: “id”,
“value”: “1yZnRCCrx6_8iA_SHacH_wLsz3aPYSn9yJMDvtFK6wuU”
},
“sheetName”: {
“__rl”: true,
“value”: “gid=0”,
“mode”: “list”,
“cachedResultName”: “Hoja 1”,
“cachedResultUrl”: " prueban8n - Google Sheets "
},
“options”: {}
},
“type”: “n8n-nodes-base.googleSheets”,
“typeVersion”: 4.7,
“position”: [
112,
496
],
“id”: “1deb068f-842a-47f3-82ef-483114838d22”,
“name”: “Get row(s) in sheet”,
“credentials”: {
“googleSheetsOAuth2Api”: {
“id”: “l91Lg09x9gnLmisB”,
“name”: “Google Sheets account”
}
}
},
{
“parameters”: {
“modelId”: {
“__rl”: true,
“value”: “gpt-5.1”,
“mode”: “list”,
“cachedResultName”: “GPT-5.1”
},
“responses”: {
“values”: [
{
“role”: “assistant”,
“content”: “Eres un asistente inteligente de escribir correos.”
},
{
“role”: “=user”,
“content”: “=Tu tarea es escribir un correo personalizado. Recibirás como input un URL de Linkedin {{ $json.UrlLinkedin }}Quiero que adaptes estas 5 plantillas para las diferentes partes del correo:\n\nSubject LIne: Hola {Nombre}, creo que tengo algo para ti sobre: {Compañía}.\n\nIcebreaker: Sé que estás trabajando en {{ $json[‘descripcionCompañía’] }} y he estado siguiendo {relateddescripcionComapñia} desde hace un tiempo, así que pensé que tenía sentido charla contigo.\n\nElevator Pitch: En resumen: Creo que puedo añadir unos 5.000 $/mes a {descripcionCompañiaParaphrased} con un par de sistemas automatizados.\n\nCall to Action: Acabo de hacer esto mismo para una empresa muy similar en {RelationedCompañía} y alcanzamos los 28.350 $ en unos pocos meses —ellos hacen {descripcionCompañíaSimilar} — así que estoy muy seguro de que puedo duplicarlo como mínimo con vosotros. Sería 100% sin riesgo, te garantizo un 60% de los resultados, si no lo consigo, no pagas nada\n\nPostdata (PS): Incluso si solo charlamos un rato, me encantaría saber más sobre lo que estás haciendo con {Compañía}.\n\nAhora te voy a dar una guía para la redacción del correo:\n\n1. Debes usar un tono cercano, como si estuvieses en una conversación de bar, se PRIORIZA que el correo parezca que lo ha escrito un amigo antes que una gran agencia de marketing\n\n2, Debes buscar y exponer a lo largo del correo conexiones REALES en tre lo que vende la empresa y lo que vendemos nosotros (automatizaciones)\n\n3. No puedes BAJO NINGÚN CONCEPTO poner información idéntica de la empresa que esté en el perfil de Linkedin o en Internet, en toodo lo caso lo parafraseas, Cada correo debe ser único\n\n4. El SubJect Line debe ir en minúsculas.\n\n5. El output debes expresarlo en formato JSON siguiendo la siguiente estructura:\n\n{{ $json.SubjectLine }},{{ $json.Icebreaker }}, {{ $json.ElevatorPitch }},{{ $json.callToAction }}, {{ $json.PS }}\n”
}
]
},
“builtInTools”: {},
“options”: {}
},
“type”: “@n8n/n8n-nodes-langchain.openAi”,
“typeVersion”: 2.3,
“position”: [
320,
496
],
“id”: “72eb8b2e-2ca9-46ae-9a32-a1a907fc865d”,
“name”: “Message a model1”,
“credentials”: {}
}
],
“connections”: {
“When clicking ‘Execute workflow’”: {
“main”: [
[
{
“node”: “Get row(s) in sheet”,
“type”: “main”,
“index”: 0
}
]
]
},
“Get row(s) in sheet”: {
“main”: [
[
{
“node”: “Message a model1”,
“type”: “main”,
“index”: 0
}
]
]
}
},
“pinData”: {},
“meta”: {
“templateCredsSetupCompleted”: true,
“instanceId”: “de8c734c1dc0e7ee34a192c3342867821f37e3e023d4f63a26811d820d59caa0”
}
}
修正:
-
將第一條訊息的角色從 Assistant 改為 System。同時移除第二條訊息中
"role": "=user"中的多餘=。 -
重寫提示結尾。目前你有
{{ $json.SubjectLine }}, {{ $json.Icebreaker }}...— 這些欄位還不存在,所以它們會解析為空白,模型無法獲得任何格式。替換為字面文字:
Return ONLY this JSON, nothing else:
{
"SubjectLine": "...",
"Icebreaker": "...",
"ElevatorPitch": "...",
"CallToAction": "...",
"PS": "..."
}
同時將你的 {curly} 佔位符改為 [square] — {{ 是 n8n 表達式語法,會誤觸。
- 單獨執行 Google Sheets 節點,並從輸出面板中精確複製你的欄名。
{{ $json.UrlLinkedin }}和{{ $json.companyDescription }}必須逐字符與你的標題相符。
太感謝你了,幫了我大忙!!
不客氣,如果有幫助的話請標記為解決方案,謝謝。