This workflow follows the Agent → Form Trigger recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"name": "BookFinder-AI",
"nodes": [
{
"parameters": {
"method": "POST",
"url": "http://192.168.18.6:3000/content",
"sendBody": true,
"specifyBody": "json",
"jsonBody": "{\n \"url\": \"https://books.toscrape.com\"\n}",
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.4,
"position": [
80,
0
],
"id": "72e6d7c0-3cc7-4870-bd68-0be8a75f497b",
"name": "HTTP Request"
},
{
"parameters": {
"operation": "extractHtmlContent",
"extractionValues": {
"values": [
{
"key": "titulo",
"cssSelector": ".product_pod h3 a",
"returnValue": "attribute",
"attribute": "title",
"returnArray": true
},
{
"key": "preco",
"cssSelector": ".price_color",
"returnArray": true
},
{
"key": "avaliacao",
"cssSelector": ".star-rating ",
"returnValue": "attribute",
"returnArray": true
},
{
"key": "estoque",
"cssSelector": ".instock.availability",
"returnArray": true
}
]
},
"options": {}
},
"type": "n8n-nodes-base.html",
"typeVersion": 1.2,
"position": [
288,
0
],
"id": "4fad767e-7e5d-4779-aa53-7aea49782cc3",
"name": "HTML"
},
{
"parameters": {
"fieldToSplitOut": "titulo, preco, estoque, avaliacao",
"options": {}
},
"type": "n8n-nodes-base.splitOut",
"typeVersion": 1,
"position": [
768,
-16
],
"id": "767059cc-cf1c-49de-80bc-9a57f669258f",
"name": "Split Out"
},
{
"parameters": {
"formTitle": "Livros",
"formDescription": "escolha !",
"formFields": {
"values": [
{
"fieldLabel": "qual livro ?",
"fieldName": "Livro",
"requiredField": true
},
{
"fieldLabel": "Email",
"fieldType": "email",
"fieldName": "Email",
"requiredField": true
},
{
"fieldLabel": "Nome",
"fieldName": "Nome",
"requiredField": true
}
]
},
"options": {}
},
"type": "n8n-nodes-base.formTrigger",
"typeVersion": 2.5,
"position": [
-176,
0
],
"id": "d81f8a6c-e121-490d-88cf-0c0e4b66317a",
"name": "On form submission"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 3
},
"conditions": [
{
"id": "c2aab603-cef8-4f75-aa90-b58a358a6e2f",
"leftValue": "={{ $json.titulo.includes($('On form submission').item.json.Livro) }}",
"rightValue": "={{ $json.titulo }}",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
}
}
],
"combinator": "or"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.3,
"position": [
528,
0
],
"id": "88a43c86-1944-4570-9ed8-51593691e913",
"name": "If"
},
{
"parameters": {
"promptType": "define",
"text": "=Dados do livro:\nT\u00edtulo: {{ $json.titulo }}\nPre\u00e7o: {{ $json.preco }}\nDisponibilidade: {{ $json.estoque }}\nAvalia\u00e7\u00e3o: {{ $json.avaliacao }}\nNome do interessado: {{ $('On form submission').item.json.Nome }}\n\nCom base nesses dados, escreva o e-mail para a pessoa interessada neste livro.",
"needsFallback": true,
"options": {
"systemMessage": "Voc\u00ea \u00e9 um Consultor de Livros especializado, com profundo conhecimento sobre literatura, g\u00eaneros liter\u00e1rios e o mercado editorial. Sua miss\u00e3o \u00e9 apresentar livros de forma envolvente, calorosa e profissional para pessoas que est\u00e3o em busca de sua pr\u00f3xima leitura.\n\n## SEU PAPEL\n\nVoc\u00ea recebe dados estruturados de um livro (t\u00edtulo, pre\u00e7o, disponibilidade em estoque, avalia\u00e7\u00e3o em estrelas, e deve transformar esses dados em um e-mail personalizado, persuasivo e agrad\u00e1vel de ler, destinado a uma pessoa que demonstrou interesse nesse livro.\n\n## TOM E ESTILO\n\n- Escreva de forma cordial, entusiasmada mas natural \u2014 nunca exagerada ou artificial\n- Use linguagem acess\u00edvel, evitando jarg\u00f5es liter\u00e1rios excessivos\n- Seja caloroso e pessoal, como um livreiro experiente que genuinamente ama recomendar boas leituras\n- Mantenha um tom profissional, mas nunca frio ou rob\u00f3tico\n- Adapte o n\u00edvel de formalidade ao contexto (assuma tom respeitoso, mas cordial, como \"voc\u00ea\", n\u00e3o \"senhor/senhora\", a menos que instru\u00eddo de outra forma)\n\n## ESTRUTURA DO E-MAIL\n\n1. **Sauda\u00e7\u00e3o personalizada** \u2014 cumprimente a pessoa de forma calorosa\n2. **Abertura envolvente** \u2014 conecte o livro ao interesse demonstrado pela pessoa\n3. **Apresenta\u00e7\u00e3o do livro** \u2014 t\u00edtulo, e se dispon\u00edvel, autor\n4. **Corpo persuasivo** \u2014 destaque os pontos fortes do livro com base nos dados recebidos:\n - Se houver avalia\u00e7\u00e3o em estrelas, mencione-a de forma natural (ex: \"muito bem avaliado pelos leitores\")\n - Se houver pre\u00e7o, apresente-o de forma clara, sem parecer que est\u00e1 \"empurrando uma venda\"\n - Se houver informa\u00e7\u00e3o de estoque, informe a disponibilidade com honestidade (evite criar falso senso de urg\u00eancia se n\u00e3o for real)\n5. **Fechamento com chamada para a\u00e7\u00e3o** \u2014 convide a pessoa a saber mais, finalizar a compra, ou responder o e-mail com d\u00favidas\n6. **Assinatura cordial**\n\n## REGRAS IMPORTANTES\n\n- **NUNCA invente informa\u00e7\u00f5es** que n\u00e3o estejam nos dados recebidos (sinopse, autor, pr\u00eamios, etc.). Se um dado n\u00e3o foi fornecido, simplesmente n\u00e3o o mencione \u2014 n\u00e3o crie suposi\u00e7\u00f5es ou invente detalhes para \"completar\" o texto.\n- **Seja honesto sobre disponibilidade**: se o livro estiver fora de estoque, comunique isso com transpar\u00eancia e, se fizer sentido, sugira que a pessoa seja avisada quando ele retornar.\n- **N\u00e3o seja insistente ou usar t\u00e1ticas de press\u00e3o agressivas** (ex: \"compre agora ou perca para sempre!\"). Prefira uma abordagem consultiva, n\u00e3o comercial-agressiva.\n- **Respeite direitos autorais**: n\u00e3o reproduza trechos, resenhas ou sinopses de terceiros; escreva sempre com suas pr\u00f3prias palavras.\n- Se os dados recebidos estiverem incompletos ou amb\u00edguos, escreva um e-mail mais enxuto em vez de preencher lacunas com suposi\u00e7\u00f5es.\n- Mantenha o e-mail em um tamanho razo\u00e1vel \u2014 nem muito curto (parecendo autom\u00e1tico), nem excessivamente longo (cansativo de ler). Busque equil\u00edbrio.\n\n## FORMATO DE SA\u00cdDA\n\nGere o e-mail completo, incluindo:\n- Assunto do e-mail (linha separada, come\u00e7ando com \"Assunto:\")\n- Corpo do e-mail formatado e pronto para envio\n\n## EXEMPLO DE ENTRADA QUE VOC\u00ca PODE RECEBER\n\n```json\n{\n \"titulo\": \"A Light in the Attic\",\n \"preco\": \"\u00a351.77\",\n \"estoque\": \"In stock\",\n \"avaliacao\": \"Three\"\n}\n```\n\nUse essas informa\u00e7\u00f5es para compor a mensagem, sempre em portugu\u00eas (a menos que instru\u00eddo de outra forma), adaptando o texto ao contexto espec\u00edfico de cada livro recebido."
}
},
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 3.1,
"position": [
1184,
-16
],
"id": "d5050f34-ae81-4509-ad42-499a3827a5e7",
"name": "AI Agent"
},
{
"parameters": {
"model": "llama-3.3-70b-versatile",
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.lmChatGroq",
"typeVersion": 1,
"position": [
992,
208
],
"id": "000d6e0e-8913-423f-9be3-3343ce310341",
"name": "Groq Chat Model",
"credentials": {
"groqApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"typeVersion": 1,
"position": [
1168,
208
],
"id": "c61024af-2a4a-4d60-b2fd-9904d756d4a4",
"name": "Google Gemini Chat Model",
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"sessionIdType": "customKey",
"sessionKey": "={{ $('On form submission').item.json.Email }}",
"contextWindowLength": 50
},
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"typeVersion": 1.3,
"position": [
1392,
176
],
"id": "f5da8ecf-c724-4a63-9bc5-c07375a14910",
"name": "Simple Memory"
},
{
"parameters": {
"sendTo": "={{ $('On form submission').item.json.Email }}",
"subject": "=Sua Procura do livro: {{ $('On form submission').item.json.Livro }}",
"message": "=n\u00e3o achamos esse livro, mas temos outros titulos que podem te agradar como: {{ $('HTML').item.json.titulo }}",
"options": {}
},
"type": "n8n-nodes-base.gmail",
"typeVersion": 2.2,
"position": [
576,
240
],
"id": "0631e71f-185f-4fc7-b27d-1fdcae189362",
"name": "Send a message",
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"sendTo": "={{ $('On form submission').item.json.Email }}",
"subject": "=Livro: {{ $('On form submission').item.json.Livro }}",
"message": "={{ $json.output }}",
"options": {}
},
"type": "n8n-nodes-base.gmail",
"typeVersion": 2.2,
"position": [
1504,
-16
],
"id": "1686fc55-ab43-4c5a-b03c-5b87fbb134b8",
"name": "Send a message1",
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"aggregate": "aggregateAllItemData",
"include": "specifiedFields",
"fieldsToInclude": "titulo, preco, estoque, avaliacao",
"options": {
"includeBinaries": false
}
},
"type": "n8n-nodes-base.aggregate",
"typeVersion": 1,
"position": [
976,
-16
],
"id": "d5cb764f-3f64-49d3-8fc2-aaf8a957be4c",
"name": "Aggregate"
}
],
"connections": {
"HTTP Request": {
"main": [
[
{
"node": "HTML",
"type": "main",
"index": 0
}
]
]
},
"HTML": {
"main": [
[
{
"node": "If",
"type": "main",
"index": 0
}
]
]
},
"On form submission": {
"main": [
[
{
"node": "HTTP Request",
"type": "main",
"index": 0
}
]
]
},
"Split Out": {
"main": [
[
{
"node": "Aggregate",
"type": "main",
"index": 0
}
]
]
},
"If": {
"main": [
[
{
"node": "Split Out",
"type": "main",
"index": 0
}
],
[
{
"node": "Send a message",
"type": "main",
"index": 0
}
]
]
},
"Groq Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Google Gemini Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 1
}
]
]
},
"Simple Memory": {
"ai_memory": [
[
{
"node": "AI Agent",
"type": "ai_memory",
"index": 0
}
]
]
},
"AI Agent": {
"main": [
[
{
"node": "Send a message1",
"type": "main",
"index": 0
}
]
]
},
"Aggregate": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1",
"binaryMode": "separate"
},
"versionId": "92702227-2420-45d5-b352-d5f6a41bfa1d",
"meta": {
"templateCredsSetupCompleted": true
},
"id": "xxoc1UZ3AL1s0PEn",
"tags": []
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
gmailOAuth2googlePalmApigroqApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
BookFinder-AI. Uses httpRequest, formTrigger, agent, lmChatGroq. Event-driven trigger; 12 nodes.
Source: https://github.com/DaviSantos-23/BookFinder-AI/blob/main/src/prompts/BookFinder-AI.json — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
This comprehensive n8n workflow automates the complete process of generating professional interior design moodboards from concept to client delivery. Users submit a design brief through a form, and th
Arvifund - Supabase (Fixed v6). Uses httpRequest, telegram, supabase, telegramTrigger. Event-driven trigger; 92 nodes.
Arvifund - Supabase (Fixed v5). Uses httpRequest, telegram, googleSheets, telegramTrigger. Event-driven trigger; 91 nodes.
Arvifund - Supabase. Uses httpRequest, telegram, googleSheets, telegramTrigger. Event-driven trigger; 90 nodes.
Arvifund - Supabase (Fixed v2). Uses httpRequest, telegram, googleSheets, telegramTrigger. Event-driven trigger; 90 nodes.