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": "AI Book Advisor: Reviews & Recommendations (Monetization Ready)",
"nodes": [
{
"parameters": {
"content": "## 1. Input & Config\nSet up your API keys here. You can also add your **Amazon Affiliate Tag** to monetize the recommendations sent via email.",
"height": 300,
"width": 480,
"color": 7
},
"id": "db48b675-4ba6-4add-afca-0dd63e4ed63d",
"name": "Sticky Note Input",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-2240,
-192
]
},
{
"parameters": {
"content": "## 2. Data Enrichment\nFetches metadata (Cover, ISBN) from Google Books and searches for real-world reviews using Google Custom Search.",
"height": 300,
"width": 1000,
"color": 7
},
"id": "a9c81cfd-3ea2-4676-b9f0-786d3e88cf25",
"name": "Sticky Note Enrichment",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-1664,
-192
]
},
{
"parameters": {
"content": "## 3. AI Analysis\n**GPT-4o** analyzes the reviews to generate a summary and suggests 3 related books in a structured JSON format.",
"height": 460,
"width": 600,
"color": 7
},
"id": "0d241a1f-e8ad-4752-a528-663387634538",
"name": "Sticky Note AI",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-576,
-192
]
},
{
"parameters": {
"content": "## 4. Delivery & Database\nGenerates a rich HTML email with affiliate links, sends it to the user, and logs the request to Google Sheets.",
"height": 460,
"width": 750,
"color": 7
},
"id": "b22cf7c7-08f1-42c0-ba32-9830a1930f8b",
"name": "Sticky Note Delivery",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
112,
-192
]
},
{
"parameters": {
"formTitle": "\ud83d\udcda Book Reading Advisor",
"formDescription": "Enter a book title. AI will research it and send you a summary with recommendations.",
"formFields": {
"values": [
{
"fieldLabel": "\u66f8\u540d (Book Title)",
"requiredField": true
},
{
"fieldLabel": "\u8457\u8005\u540d (Author Name - Optional)"
},
{
"fieldLabel": "\u30e1\u30fc\u30eb\u9001\u4fe1\u5148 (Email Address)",
"fieldType": "email",
"requiredField": true
}
]
},
"options": {
"buttonLabel": "Start Research"
}
},
"id": "149dd9ea-ce51-4c6b-b0b1-ddec4516b76f",
"name": "Book Input Form",
"type": "n8n-nodes-base.formTrigger",
"typeVersion": 2.3,
"position": [
-2176,
-96
]
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "id-1",
"name": "googleBooksApiUrl",
"value": "https://www.googleapis.com/books/v1/volumes",
"type": "string"
},
{
"id": "id-2",
"name": "googleCustomSearchApiUrl",
"value": "https://www.googleapis.com/customsearch/v1",
"type": "string"
},
{
"id": "id-3",
"name": "googleCustomSearchApiKey",
"value": "<__PLACEHOLDER_VALUE__Google_Custom_Search_API_Key__>",
"type": "string"
},
{
"id": "id-4",
"name": "googleCustomSearchEngineId",
"value": "<__PLACEHOLDER_VALUE__Search_Engine_ID__>",
"type": "string"
},
{
"id": "id-5",
"name": "userEmail",
"value": "={{ $json['\u30e1\u30fc\u30eb\u9001\u4fe1\u5148 (Email Address)'] }}",
"type": "string"
},
{
"id": "id-6",
"name": "sheetId",
"value": "<__PLACEHOLDER_VALUE__Google_Sheet_ID__>",
"type": "string"
},
{
"id": "id-7",
"name": "amazonAffiliateTag",
"value": "<__PLACEHOLDER_VALUE__Amazon_Associate_Tag__>",
"type": "string"
}
]
},
"includeOtherFields": true,
"options": {}
},
"id": "f952e1d0-2b8e-4983-abc6-d1b4f2ac5d99",
"name": "Workflow Configuration",
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
-1952,
-96
]
},
{
"parameters": {
"url": "={{ $('Workflow Configuration').first().json.googleBooksApiUrl }}?q=intitle:{{ encodeURIComponent($json.bookTitle) }}{{ $json.authorName ? '+inauthor:' + encodeURIComponent($json.authorName) : '' }}&maxResults=1&langRestrict=ja",
"options": {
"response": {
"response": {
"responseFormat": "json"
}
}
}
},
"id": "a95844a8-84b1-4343-8461-6f4ab4e69c78",
"name": "Search Book on Google Books API",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.3,
"position": [
-1600,
-96
]
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "loose"
},
"conditions": [
{
"id": "id-1",
"leftValue": "={{ $json.totalItems }}",
"rightValue": "0",
"operator": {
"type": "number",
"operation": "gt"
}
}
],
"combinator": "and"
},
"options": {}
},
"id": "2e0644a7-52ed-41c5-ae5b-85c998fdf009",
"name": "Check if Book Found",
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
-1376,
-96
]
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "id-1",
"name": "bookTitle",
"value": "={{ $json.items[0].volumeInfo.title }}",
"type": "string"
},
{
"id": "id-2",
"name": "bookAuthors",
"value": "={{ $json.items[0].volumeInfo.authors ? $json.items[0].volumeInfo.authors.join(', ') : 'Unknown' }}",
"type": "string"
},
{
"id": "id-3",
"name": "bookDescription",
"value": "={{ $json.items[0].volumeInfo.description || 'No description available' }}",
"type": "string"
},
{
"id": "id-4",
"name": "bookIsbn",
"value": "={{ $json.items[0].volumeInfo.industryIdentifiers ? $json.items[0].volumeInfo.industryIdentifiers.find(id => id.type === 'ISBN_13')?.identifier || $json.items[0].volumeInfo.industryIdentifiers[0]?.identifier : 'N/A' }}",
"type": "string"
},
{
"id": "id-5",
"name": "bookCoverImage",
"value": "={{ $json.items[0].volumeInfo.imageLinks?.thumbnail || '' }}",
"type": "string"
},
{
"id": "id-6",
"name": "bookPublisher",
"value": "={{ $json.items[0].volumeInfo.publisher || 'Unknown' }}",
"type": "string"
},
{
"id": "id-7",
"name": "bookPublishedDate",
"value": "={{ $json.items[0].volumeInfo.publishedDate || 'Unknown' }}",
"type": "string"
}
]
},
"includeOtherFields": true,
"options": {}
},
"id": "08a7b76f-27d5-4617-8bd1-5932d99661bf",
"name": "Extract Book Details",
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
-1136,
-96
]
},
{
"parameters": {
"url": "={{ $('Workflow Configuration').first().json.googleCustomSearchApiUrl }}?key={{ $('Workflow Configuration').first().json.googleCustomSearchApiKey }}&cx={{ $('Workflow Configuration').first().json.googleCustomSearchEngineId }}&q={{ encodeURIComponent($json.bookTitle + ' \u66f8\u8a55 \u611f\u60f3') }}&num=5",
"options": {
"response": {
"response": {
"responseFormat": "json"
}
}
}
},
"id": "9000298d-79ef-4c71-b33c-bef2909c2c62",
"name": "Search Book Reviews on Google",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.3,
"position": [
-912,
-96
]
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "id-1",
"name": "reviewSnippets",
"value": "={{ $json.items ? $json.items.map(item => item.snippet).join('\\n\\n') : 'No reviews found' }}",
"type": "string"
}
]
},
"includeOtherFields": true,
"options": {}
},
"id": "1718e01c-419e-4555-bfe9-59b8a9a2a2dd",
"name": "Prepare AI Input",
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
-720,
-96
]
},
{
"parameters": {
"promptType": "define",
"text": "=\u66f8\u7c4d\u60c5\u5831:\n\u66f8\u540d: {{ $json.bookTitle }}\n\u8457\u8005: {{ $json.bookAuthors }}\n\n\u3042\u3089\u3059\u3058:\n{{ $json.bookDescription }}\n\nWeb\u4e0a\u306e\u30ec\u30d3\u30e5\u30fc:\n{{ $json.reviewSnippets }}",
"hasOutputParser": true,
"options": {
"systemMessage": "\u3042\u306a\u305f\u306f\u30d7\u30ed\u306e\u30d6\u30c3\u30af\u30fb\u30ad\u30e5\u30ec\u30fc\u30bf\u30fc\u3067\u3059\u3002\u8aad\u8005\u306e\u9078\u66f8\u3092\u652f\u63f4\u3057\u3001\u8aad\u66f8\u4f53\u9a13\u3092\u6df1\u3081\u308b\u305f\u3081\u306e\u63a8\u85a6\u3092\u884c\u3044\u307e\u3059\u3002\n\n\u3042\u306a\u305f\u306e\u30bf\u30b9\u30af:\n1. \u63d0\u4f9b\u3055\u308c\u305f\u66f8\u7c4d\u60c5\u5831\u3068\u30ec\u30d3\u30e5\u30fc\u3092\u5206\u6790\u3057\u3001\u3053\u306e\u672c\u306e\u9b45\u529b\u3092150\u6587\u5b57\u4ee5\u5185\u3067\u89e3\u8aac\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n2. \u3053\u306e\u672c\u306b\u95a2\u5fc3\u304c\u3042\u308b\u4eba\u304c\u3001\u3055\u3089\u306b\u7406\u89e3\u3092\u6df1\u3081\u308b\u305f\u3081\u306b\u8aad\u3080\u3079\u304d\u300c\u95a2\u9023\u66f8\u7c4d\u300d\u30923\u518a\u6319\u3052\u3066\u304f\u3060\u3055\u3044\u3002\n\n\u51fa\u529b\u306f\u5fc5\u305aJSON\u5f62\u5f0f\u3067\u884c\u3063\u3066\u304f\u3060\u3055\u3044\u3002"
}
},
"id": "25927407-e447-4987-be8c-eb3feb91c712",
"name": "Book Curator AI Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 3,
"position": [
-496,
-96
]
},
{
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o"
},
"options": {}
},
"id": "a4990d33-ad4e-4b4a-9dd6-7d8988f09a75",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1.2,
"position": [
-512,
144
],
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"jsCode": "// Build HTML Email with Book Cover, AI Recommendations, and Purchase Links\n\nconst items = $input.all();\nconst results = [];\n\n// Get Affiliate Tag from Config\nconst configItem = $('Workflow Configuration').first();\nconst affiliateTag = configItem ? configItem.json.amazonAffiliateTag : '';\n\nfor (const item of items) {\n const aiData = item.json;\n const bookDetails = $('Extract Book Details').first().json;\n \n const bookTitle = bookDetails.bookTitle || 'Unknown Title';\n const bookAuthor = bookDetails.bookAuthors || 'Unknown Author';\n const bookCover = bookDetails.bookCoverImage || '';\n const isbn = bookDetails.bookIsbn;\n\n // Data from AI (Structured)\n const aiComment = aiData.review_summary || 'No review available.';\n const relatedBooks = aiData.related_books || [];\n\n // Generate Main Book Links (with Affiliate Tag Support)\n let mainAmazonLink = isbn && isbn !== 'N/A' \n ? `https://www.amazon.co.jp/s?k=${isbn}` \n : `https://www.amazon.co.jp/s?k=${encodeURIComponent(bookTitle + ' ' + bookAuthor)}`;\n \n if (affiliateTag && affiliateTag !== '<__PLACEHOLDER_VALUE__Amazon_Associate_Tag__>') {\n mainAmazonLink += `&tag=${affiliateTag}`;\n }\n \n const mainRakutenLink = isbn && isbn !== 'N/A'\n ? `https://books.rakuten.co.jp/search?sitem=${isbn}`\n : `https://books.rakuten.co.jp/search?sitem=${encodeURIComponent(bookTitle + ' ' + bookAuthor)}`;\n\n // Helper to generate related book rows\n let relatedBooksHtml = '';\n relatedBooks.forEach(book => {\n let rAmazon = `https://www.amazon.co.jp/s?k=${encodeURIComponent(book.title + ' ' + book.author)}`;\n if (affiliateTag && affiliateTag !== '<__PLACEHOLDER_VALUE__Amazon_Associate_Tag__>') {\n rAmazon += `&tag=${affiliateTag}`;\n }\n\n relatedBooksHtml += `\n <div style=\"margin-bottom: 15px; padding-bottom: 15px; border-bottom: 1px dashed #ccc;\">\n <p style=\"margin: 0; font-weight: bold;\">\u300e${book.title}\u300f</p>\n <p style=\"margin: 0; font-size: 0.9em; color: #666;\">${book.author}</p>\n <p style=\"margin: 5px 0;\">${book.reason}</p>\n <a href=\"${rAmazon}\" style=\"font-size: 0.8em; color: #4CAF50; text-decoration: none;\">Amazon\u3067\u63a2\u3059 →</a>\n </div>\n `;\n });\n\n // Build rich HTML email\n const htmlContent = `\n<!DOCTYPE html>\n<html lang=\"ja\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title>\u8aad\u66f8\u30a2\u30c9\u30d0\u30a4\u30b6\u30fc</title>\n <style>\n body { font-family: sans-serif; line-height: 1.6; color: #333; max-width: 600px; margin: 0 auto; padding: 20px; background-color: #f9f9f9; }\n .container { background-color: #ffffff; border-radius: 10px; padding: 30px; box-shadow: 0 4px 6px rgba(0,0,0,0.1); }\n .header { text-align: center; border-bottom: 3px solid #4CAF50; padding-bottom: 20px; margin-bottom: 30px; }\n .book-cover { text-align: center; margin: 20px 0; }\n .book-cover img { max-width: 150px; border-radius: 5px; box-shadow: 0 4px 8px rgba(0,0,0,0.1); }\n .section { margin: 25px 0; padding: 15px; background-color: #f4f4f4; border-left: 4px solid #4CAF50; }\n .button { display: inline-block; padding: 10px 20px; margin: 5px; background-color: #FF9900; color: white; text-decoration: none; border-radius: 5px; font-weight: bold; }\n </style>\n</head>\n<body>\n <div class=\"container\">\n <div class=\"header\"><h1>\ud83d\udcda \u8aad\u66f8\u30a2\u30c9\u30d0\u30a4\u30b6\u30fc</h1></div>\n ${bookCover ? `<div class=\"book-cover\"><img src=\"${bookCover}\"></div>` : ''}\n <h2>${bookTitle}</h2>\n <p>\u8457\u8005: ${bookAuthor}</p>\n <div class=\"section\"><h4>\ud83e\udd16 AI\u30ad\u30e5\u30ec\u30fc\u30bf\u30fc\u306e\u89e3\u8aac</h4><p>${aiComment}</p></div>\n <div class=\"section\"><h4>\ud83d\udd17 \u304a\u3059\u3059\u3081\u95a2\u9023\u66f8\u7c4d</h4>${relatedBooksHtml}</div>\n <div style=\"text-align: center;\">\n <a href=\"${mainAmazonLink}\" class=\"button\">Amazon\u3067\u8cfc\u5165</a>\n </div>\n </div>\n</body>\n</html>\n `;\n \n results.push({\n json: {\n htmlEmail: htmlContent,\n emailSubject: `\ud83d\udcda \u66f8\u7c4d\u30ec\u30dd\u30fc\u30c8: ${bookTitle}`\n }\n });\n}\n\nreturn results;"
},
"id": "c1539010-d774-48d0-9603-e92a5bd6612a",
"name": "Build HTML Email",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
176,
-96
]
},
{
"parameters": {
"sendTo": "={{ $('Workflow Configuration').first().json.userEmail }}",
"subject": "={{ $json.emailSubject }}",
"message": "={{ $json.htmlEmail }}",
"options": {}
},
"id": "abf0cb68-6d2f-4b45-9b22-d8b2d541dd42",
"name": "Send Email Notification",
"type": "n8n-nodes-base.gmail",
"typeVersion": 2.1,
"position": [
384,
-96
],
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "appendOrUpdate",
"documentId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Workflow Configuration').first().json.sheetId }}"
},
"sheetName": {
"__rl": true,
"mode": "name",
"value": "History"
},
"columns": {
"mappingMode": "defineBelow",
"value": {
"date": "={{ $now.format('yyyy-MM-dd HH:mm') }}",
"book_title": "={{ $('Extract Book Details').first().json.bookTitle }}",
"author": "={{ $('Extract Book Details').first().json.bookAuthors }}",
"ai_comment": "={{ $('Book Curator AI Agent').first().json.review_summary }}",
"user_email": "={{ $('Workflow Configuration').first().json.userEmail }}"
}
},
"options": {}
},
"id": "ad521204-49aa-4cfc-8009-22500f5d8d77",
"name": "Log to Google Sheets",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.7,
"position": [
608,
-96
],
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"sendTo": "={{ $('Workflow Configuration').first().json.userEmail }}",
"subject": "\ud83d\udcda \u8aad\u66f8\u30a2\u30c9\u30d0\u30a4\u30b6\u30fc: \u66f8\u7c4d\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f",
"emailType": "text",
"message": "=\u7533\u3057\u8a33\u3054\u3056\u3044\u307e\u305b\u3093\u3002\n\n\u5165\u529b\u3055\u308c\u305f\u66f8\u540d\u300c{{ $('Workflow Configuration').first().json.bookTitle }}\u300d\u306b\u8a72\u5f53\u3059\u308b\u66f8\u7c4d\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002\n\n\u4ee5\u4e0b\u3092\u3054\u78ba\u8a8d\u304f\u3060\u3055\u3044\uff1a\n- \u66f8\u540d\u306e\u30b9\u30da\u30eb\u304c\u6b63\u3057\u3044\u304b\n- \u6b63\u5f0f\u306a\u66f8\u540d\u3067\u691c\u7d22\u3057\u3066\u3044\u308b\u304b\n- \u8457\u8005\u540d\u3092\u8ffd\u52a0\u3057\u3066\u307f\u308b\n\n\u3082\u3046\u4e00\u5ea6\u304a\u8a66\u3057\u304f\u3060\u3055\u3044\u3002",
"options": {}
},
"id": "3457e3dd-98c3-4880-ac5a-70a09b205b8e",
"name": "Send Not Found Email",
"type": "n8n-nodes-base.gmail",
"typeVersion": 2.1,
"position": [
-1136,
176
],
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"jsonSchemaExample": "{\n \"review_summary\": \"This book is a masterpiece of...\",\n \"related_books\": [\n {\n \"title\": \"Related Book 1\",\n \"author\": \"Author A\",\n \"reason\": \"Similar themes of...\"\n },\n {\n \"title\": \"Related Book 2\",\n \"author\": \"Author B\",\n \"reason\": \"Explores the concept of...\"\n }\n ]\n}"
},
"id": "86c0c80a-2ad4-47c8-931f-a4c83491b043",
"name": "Structured Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"typeVersion": 1.3,
"position": [
-336,
144
]
},
{
"parameters": {
"content": "# AI Book Advisor: Reviews & Recommendations\n\n## Overview\n**AI Book Curator with Monetization Support.** \ud83d\udcda\ud83d\udcb0\nTakes a book request, researches reviews, and sends an AI-curated summary with recommendations. Now includes **Amazon Affiliate Tag** support for monetization.\n\n## How it works\n1. **Input:** Form accepts Title & Email.\n2. **Enrich:** Fetches metadata (Google Books) & reviews (Google Search).\n3. **Analyze:** AI Agent summarizes appeal and suggests 3 related books.\n4. **Deliver:** Sends an HTML email with **Affiliate Links** and logs history to Sheets.\n\n## Setup Steps\n1. **Sheets:** Create columns: `date`, `book_title`, `author`, `ai_comment`, `user_email`.\n2. **Config:** Open **\"Sticky Note Input\"** section. Enter API Keys and optional `amazonAffiliateTag`.\n\n## Requirements\n- OpenAI & Google Custom Search API\n- Gmail & Google Sheets",
"height": 550,
"width": 500
},
"id": "09c4911c-c4d1-4106-bb0e-d5d40294034d",
"name": "Sticky Note Main",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
-2800,
-192
]
}
],
"connections": {
"Book Input Form": {
"main": [
[
{
"node": "Workflow Configuration",
"type": "main",
"index": 0
}
]
]
},
"Workflow Configuration": {
"main": [
[
{
"node": "Search Book on Google Books API",
"type": "main",
"index": 0
}
]
]
},
"Search Book on Google Books API": {
"main": [
[
{
"node": "Check if Book Found",
"type": "main",
"index": 0
}
]
]
},
"Check if Book Found": {
"main": [
[
{
"node": "Extract Book Details",
"type": "main",
"index": 0
}
],
[
{
"node": "Send Not Found Email",
"type": "main",
"index": 0
}
]
]
},
"Extract Book Details": {
"main": [
[
{
"node": "Search Book Reviews on Google",
"type": "main",
"index": 0
}
]
]
},
"Search Book Reviews on Google": {
"main": [
[
{
"node": "Prepare AI Input",
"type": "main",
"index": 0
}
]
]
},
"Prepare AI Input": {
"main": [
[
{
"node": "Book Curator AI Agent",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "Book Curator AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Book Curator AI Agent": {
"main": [
[
{
"node": "Build HTML Email",
"type": "main",
"index": 0
}
]
]
},
"Build HTML Email": {
"main": [
[
{
"node": "Send Email Notification",
"type": "main",
"index": 0
}
]
]
},
"Send Email Notification": {
"main": [
[
{
"node": "Log to Google Sheets",
"type": "main",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "Book Curator AI Agent",
"type": "ai_outputParser",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "df03b6d9-aad5-4885-9760-0e12d5c2100c",
"meta": {
"templateCredsSetupCompleted": true
},
"id": "Ys1mX5cL0i3lwaJB",
"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.
gmailOAuth2googleSheetsOAuth2ApiopenAiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
AI Book Advisor: Reviews & Recommendations (Monetization Ready). Uses formTrigger, httpRequest, agent, lmChatOpenAi. Event-driven trigger; 19 nodes.
Source: https://github.com/alternativescom/n8n-automation-workflows/blob/main/01-ai-book-advisor/workflow.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.
🎯 Create viral TikToks, Shorts, Reels, podcasts, and ASMR videos in minutes — all on autopilot.
Digistars - Scrape & Crawl. Uses httpRequest, n8n-nodes-firecrawl-scraper, googleSheets, lmChatOpenAi. Event-driven trigger; 63 nodes.
22-Automate_Multi_Platform_Social_Media_Content_Creation. Uses outputParserStructured, lmChatGoogleGemini, lmChatOpenAi, httpRequest. Event-driven trigger; 57 nodes.
🧠 Automate end-to-end SEO blog creation and WordPress publishing using a GPT-5 multi-agent workflow with real-time research, metadata generation, and optional featured images.
This workflow automates end-to-end contract and invoice management using AI intelligence. It processes proposals through intelligent contract generation, approval workflows, and automated invoicing. O