- Seção: Assistente de código
- Vídeo (NÃO baixado): https://www.youtube.com/watch?v=bbntvhAQQuI
- Duração do vídeo: 17min25s
Descrição
_(sem descrição)_
Recursos baixados
47-ad-image-ready-nanobanana-workflow.json— NanoBanana OpenRouter.json (ok (12927 bytes))
{ "name": "NanoBanana OpenRouter", "nodes": [ { "parameters": { "formTitle": "Gerador de Anúncios UGC", "formDescription": "Gera anúncios UGC a partir da descrição e foto do usuário", "formFields": { "values": [ { "fieldLabel": "Descrição da imagem", "requiredField": true }, { "fieldLabel": "Imagem", "fieldType": "file", "acceptFileTypes": ".jpg, .png" } ] }, "options": {} }, "type": "n8n-nodes-base.formTrigger", "typeVersion": 2.3, "position": [ -320, -240 ], "id": "3b426721-8a1d-455f-b119-9421e8a76d60", "name": "On form submission", "webhookId": "52e0abd7-0e7b-427d-80d1-ba9f3558f456" }, { "parameters": { "inputDataFieldName": "Image", "driveId": { "__rl": true, "value": "My Drive", "mode": "list", "cachedResultName": "My Drive", "cachedResultUrl": "https://drive.google.com/drive/my-drive" }, "folderId": { "__rl": true, "value": "1MxaX7NrmmTHQtHLLEw3JqXqjMbNKU2lx", "mode": "list", "cachedResultName": "image urls", "cachedResultUrl": "https://drive.google.com/drive/folders/1MxaX7NrmmTHQtHLLEw3JqXqjMbNKU2lx" }, "options": {} }, "type": "n8n-nodes-base.googleDrive", "typeVersion": 3, "position": [ -144, -240 ], "id": "2de4ef12-1d72-427e-85ee-754b0190a405", "name": "Upload file", "credentials": { "googleDriveOAuth2Api": { "id": "tTKNlY1ktx7UntI0", "name": "Google Drive account" } } }, { "parameters": { "resource": "image", "operation": "analyze", "modelId": { "__rl": true, "value": "chatgpt-4o-latest", "mode": "list", "cachedResultName": "CHATGPT-4O-LATEST" },
"text": "=Analise a imagem fornecida e determine se ela retrata principalmente um produto, um personagem ou AMBOS.\n\n- Se a imagem for de um produto, retorne a análise em formato YAML com os seguintes campos:\n\nbrand_name: (Nome da marca mostrada na imagem, se visível ou inferível)\ncolor_scheme:\n - hex: (Código hexadecimal de cada cor proeminente utilizada)\n name: (Nome descritivo da cor)\nfont_style: (Descreva a família ou estilo da fonte utilizada: serifada/sans-serif, negrito/fina, etc.)\nvisual_description: (Uma ou duas frases completas resumindo o que é visto na imagem, ignorando o fundo)\n\n- Se a imagem for de um personagem, retorne a análise em formato YAML com os seguintes campos:\n\ncharacter_name: (Nome do personagem, se visível ou inferível)\ncolor_scheme:\n - hex: (Código hexadecimal de cada cor proeminente utilizada no personagem)\n name: (Nome descritivo da cor)\noutfit_style: (Descrição do estilo de vestuário, acessórios ou características notáveis)\nvisual_description: (Uma ou duas frases completas resumindo como o personagem é, ignorando o fundo)\n\nRetorne apenas o YAML. Não explique nem adicione outros comentários.\n\n\n- Se for AMBOS, retorne ambas as descrições conforme orientado acima em formato YAML\n", "imageUrls": "={{ $json.webContentLink }}", "simplify": false, "options": {} }, "type": "@n8n/n8n-nodes-langchain.openAi", "typeVersion": 1.8, "position": [ 16, -240 ], "id": "24f6e9ea-2455-44c7-a9f1-48b89f6204a7", "name": "Describe Img", "credentials": { "openAiApi": { "id": "zE5O89L0JjnRwfPU", "name": "OpenAi account" } } }, { "parameters": { "model": { "__rl": true, "value": "gpt-4.1-mini", "mode": "list", "cachedResultName": "gpt-4.1-mini" }, "options": {} }, "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi", "typeVersion": 1.2, "position": [ -544, ], "id": "31ed2fc5-3789-456d-9c1a-6db3685367f9", "name": "OpenAI Chat Model", "credentials": { "openAiApi": { "id": "zE5O89L0JjnRwfPU", "name": "OpenAi account" } } }, { "parameters": { "promptType": "define", "text": "=Sua tarefa: Crie um prompt de imagem conforme orientado pelas suas diretrizes de sistema.\n\nCertifique-se de que a imagem de referência seja retratada da forma mais ACURADA possível nas imagens resultantes, especialmente todo o texto.\n\n\nEstas são as descrições do usuário:\n{{ $('On form submission').item.json['Image description'] }}\n\n\nDescrição da imagem de referência:\n{{ $('Describe Img').first().json.choices[0].message.content }}\n\n", "hasOutputParser": true, "options": {
"systemMessage": "=PAPEL: Criador de Prompt para Anúncios\n\nPropósito: Dado uma URL de imagem ou informações do produto, escreva uma descrição curta e natural para um gerador de imagens/vídeos por IA usar em um anúncio.\n\nPadrões:\n\nSe for vago, coloque o produto com uma pessoa em um ambiente cotidiano adequado.\nSe o estilo não for fornecido, use realismo casual adequado para anúncios.\n\nRealismo:\n\nPareça autêntico e identificável.\nImperfeições leves: enquadramento fora do centro, luz natural, leve desfoque de movimento, grão suave.\nMantenha o texto da embalagem exatamente como mostrado. Sem alegações inventadas.\n\nIndicações de Câmera (use ≥2):\nfoto de celular, enquadramento na mão, composição fora do centro, luz interna natural, sombras suaves, leve desfoque de movimento, exposição automática, aparência não polida, grão suave.\n\n\nSaída:\nRetorne apenas um objeto JSON:\n{ \"image_prompt\": \"uma string (≤120 palavras) cobrindo sujeito, ação, humor, cenário, estilo/câmera, cores e precisão do texto\" }\n\nDiversidade:\n\nSe não especificado, varie gênero/etnia naturalmente.\nIdade padrão: 21–38.\nPrefira espaços do mundo real.\n\nBom Exemplo:\n\n{ \"image_prompt\": \"jovem profissional segurando uma garrafa reutilizável de água enquanto caminha para o trabalho; ação: bebendo casualmente; humor: manhã energética; cenário: rua movimentada da cidade; estilo/câmera: foto de celular, enquadramento na mão, composição fora do centro, luz natural, leve desfoque de movimento; cores: garrafa azul brilhante se destaca; precisão do texto: manter o logotipo exatamente como visível\" }" } }, "type": "@n8n/n8n-nodes-langchain.agent", "typeVersion": 2, "position": [ -480, ], "id": "81622c7e-e50d-4419-a431-d2b58115cd4b", "name": "Image Prompt Generator" }, { "parameters": { "jsonSchemaExample": "{\n\t\"image_prompt\": \"string\"\n}", "autoFix": true }, "type": "@n8n/n8n-nodes-langchain.outputParserStructured", "typeVersion": 1.3, "position": [ -368, ], "id": "e7f159bd-83d4-466d-aee9-ba4d4d86d170", "name": "Structured Output Parser" }, { "parameters": { "operation": "toBinary", "sourceProperty": "base", "options": {} }, "type": "n8n-nodes-base.convertToFile", "typeVersion": 1.1, "position": [ 192, ], "id": "617a6e32-916a-4ef3-8575-7f30f167cb21", "name": "Convert to File1" }, { "parameters": { "method": "POST", "url": "https://openrouter.ai/api/v1/chat/completions", "authentication": "predefinedCredentialType", "nodeCredentialType": "openRouterApi", "sendHeaders": true, "headerParameters": { "parameters": [ { "name": "Content-Type", "value": "application/json" } ] }, "sendBody": true, "specifyBody": "json",
"jsonBody": "={\n \"model\": \"google/gemini-2.5-flash-image-preview\",\n \"modalities\": [\"image\", \"text\"],\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": [\n {\n \"type\": \"text\",\n \"text\": \"{{ $json.output.image_prompt.replace(/\\\"/g, '\\\\\\\"').replace(/\\n/g, '\\\\n') }}\"\n },\n {\n \"type\": \"image_url\",\n \"image_url\": {\n \"url\": \"{{ $('Upload file').item.json.webContentLink }}\"\n }\n }\n ]\n }\n ]\n}\n\n", "options": { "response": { "response": { "responseFormat": "json" } } } }, "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": [ -144, ], "id": "7214c3be-b59b-4cef-9d76-f116b05fc7a3", "name": "HTTP Request", "credentials": { "openRouterApi": { "id": "NrrkWrl89ut7kmrh", "name": "OpenRouter account 2" } } }, { "parameters": { "assignments": { "assignments": [ { "id": "0d3e1ea2-9386-47bf-8f8a-cce7f349dbe5", "name": "=data", "value": "={{$json[\"choices\"][0][\"message\"][\"images\"][0][\"image_url\"][\"url\"]}}", "type": "string" }, { "id": "393caf3e-e367-4490-8ee3-28bfc83318b1", "name": "=base", "value": "={{$json[\"choices\"][0][\"message\"][\"images\"][0][\"image_url\"][\"url\"].split(\",\")[1]}}", "type": "string" }, { "id": "f827ebfd-c7d3-48f1-8589-74965070f910", "name": "mime", "value": "={{$json[\"choices\"][0][\"message\"][\"images\"][0][\"image_url\"][\"url\"].match(/^data:([^;]+)/)[1]}}", "type": "string" }, { "id": "7de58815-fa11-46ba-acb4-eb4563120218", "name": "fileName", "value": ".png", "type": "string" } ] }, "options": {} }, "type": "n8n-nodes-base.set", "typeVersion": 3.4, "position": [ 32, ], "id": "463632f6-2b25-40e3-81f9-3686b1b2d2ec", "name": "Edit Fields1" }, { "parameters": { "content": "# Upload Image & Description", "height": 288, "width": 656, "color": 6 }, "type": "n8n-nodes-base.stickyNote", "typeVersion": 1, "position": [ -432, -336 ], "id": "226d7112-a7ea-466f-94f7-e88a218f2eb6", "name": "Sticky Note2" }, { "parameters": { "content": "# Get New/Edited Image from NanoBanana via OpenRouter", "height": 448, "width": 1008, "color": 5 }, "type": "n8n-nodes-base.stickyNote", "typeVersion": 1, "position": [ -608, -16 ], "id": "ac044ae6-31b2-4c08-9e33-7abfae52c0ab", "name": "Sticky Note3"
} ], "pinData": {}, "connections": { "On form submission": { "main": [ [ { "node": "Upload file", "type": "main", "index": 0 } ] ] }, "Upload file": { "main": [ [ { "node": "Describe Img", "type": "main", "index": 0 } ] ] }, "Describe Img": { "main": [ [ { "node": "Image Prompt Generator", "type": "main", "index": 0 } ] ] }, "OpenAI Chat Model": { "ai_languageModel": [ [ { "node": "Image Prompt Generator", "type": "ai_languageModel", "index": 0 }, { "node": "Structured Output Parser", "type": "ai_languageModel", "index": 0 } ] ] }, "Image Prompt Generator": { "main": [ [ { "node": "HTTP Request", "type": "main", "index": 0 } ] ] }, "Structured Output Parser": { "ai_outputParser": [ [ { "node": "Image Prompt Generator", "type": "ai_outputParser", "index": 0 } ] ] }, "HTTP Request": { "main": [ [ { "node": "Edit Fields1", "type": "main", "index": 0 } ] ] }, "Edit Fields1": { "main": [ [ { "node": "Convert to File1", "type": "main", "index": 0 } ] ] } }, "active": false, "settings": { "executionOrder": "v1" }, "versionId": "c78cbaf2-7510-43aa-8c59-eb1e0014f05c", "meta": { "instanceId": "5f99b345c3a4501a22438ba5962ff6685e5e97ee4bd0a17cc04a19ed072b5c2a" }, "id": "DofPrW2OLpB8QJiO", "tags": [] }