├── README.md └── Autonomous AI website Builder.json /README.md: -------------------------------------------------------------------------------- 1 | # Autonomous-AI-Website-Builder-n8n-Coolify-Wordpress-Gemini-3- 2 | A fully autonomous workflow that deploys, designs, and populates a Dockerized WordPress site using n8n, Coolify, and Google Gemini 3. 3 | ![alt text](https://img.shields.io/badge/n8n-Workflow-FF6560?style=for-the-badge&logo=n8n) 4 | 5 | ![alt text](https://img.shields.io/badge/Coolify-Deployment-6B21A8?style=for-the-badge) 6 | 7 | ![alt text](https://img.shields.io/badge/WordPress-CMS-21759B?style=for-the-badge&logo=wordpress) 8 | 9 | ![alt text](https://img.shields.io/badge/AI-Gemini%203-4285F4?style=for-the-badge&logo=google) 10 | 11 | 📖 Overview 12 | 13 | This repository contains an end-to-end automation pipeline designed for Service Businesses and AI Agencies. It transforms a single user prompt (e.g., "Create a modern website for a Solar Panel installation company in Texas") into a fully deployed, content-rich, and interactive website. 14 | 15 | By leveraging Google Gemini 3 for intelligence and Coolify for infrastructure, this tool treats WordPress as a headless CMS database while injecting a high-performance, AI-architected Single Page Application (SPA) frontend directly into the Elementor Canvas. 16 | ✨ Key Features 17 | 18 | Infrastructure Automation: Automatically deploys a Dockerized WordPress container via the Coolify API. 19 | 20 | Zero-Touch Configuration: Uses SSH and wp-cli to install themes, configure permalinks, and create admin users without human intervention. 21 | 22 | Global Design System: A dedicated "Layout Architect" AI generates a unified CSS framework, Header, and Footer that persists across all pages (fixing the common AI issue of inconsistent designs). 23 | 24 | Intelligent Sitemap Strategy: Analyzes the specific industry to generate the perfect page hierarchy (Home, Services, Use Cases, Contact). 25 | 26 | Functional Lead Gen: Automatically embeds a custom JavaScript contact form that bypasses PHP mailers and posts leads directly to an n8n Webhook for immediate CRM automation. 27 | 28 | Dynamic Blog Integration: Includes a custom JS fetcher that retrieves real WordPress posts and displays them in an AI-styled grid, combining custom design with CMS management. 29 | 30 | 🏗️ Technical Architecture 31 | 32 | The Pipeline: 33 | 34 | Provision: Workflow sends a POST request to Coolify to spin up a new WordPress service. 35 | 36 | Configure: N8n SSHs into the container to install hello-elementor, configure wp-cli, and set up the environment. 37 | 38 | Strategize: Gemini 3 analyzes the business niche and outputs a JSON Sitemap and Content Strategy. 39 | 40 | Design (Global): The "Layout AI" creates the global HTML structure (Nav/Footer) and CSS variables (Glassmorphism/Modern UI). 41 | 42 | Build (Loop): The workflow iterates through the sitemap. The "Content AI" generates unique, semantic HTML
content for every page. 43 | 44 | Assemble: A logic node stitches the Global Header + Page Content + Global Footer + Scripts, injecting dynamic navigation links based on the sitemap. 45 | 46 | Publish: The final HTML is pushed to WordPress via the REST API using the elementor_canvas template to ensure a blank slate. 47 | 48 | 🔌 Integrations 49 | Component Role 50 | n8n The orchestrator managing logic, loops, and API calls. 51 | Coolify Hosting platform managing the Docker containers. 52 | Google Gemini 3 The brain generating code, copy, and design strategy. 53 | WordPress The database/CMS for managing posts and pages. 54 | Webhooks Captures form submissions for downstream automation (Slack, Email, CRM). 55 | 🛠️ Setup & Usage 56 | 57 | Import: Import the JSON workflow file into your n8n instance. 58 | 59 | Credentials: Configure your credentials for: 60 | 61 | Coolify API 62 | 63 | SSH (for the Docker host) 64 | 65 | OpenRouter / Google Gemini 66 | 67 | Config Node: Update the Config Variables node with your target domain, service name, and webhook receiver URL. 68 | 69 | Run: Submit the form trigger with your business description. 70 | 71 | Result: In ~3 minutes, you will have a live, fully designed website. 72 | -------------------------------------------------------------------------------- /Autonomous AI website Builder.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Autonomous AI website Builder", 3 | "nodes": [ 4 | { 5 | "parameters": { 6 | "keepOnlySet": true, 7 | "values": { 8 | "string": [ 9 | { 10 | "name": "wp_admin_user", 11 | "value": "={{ $json.wp_admin_user }}" 12 | }, 13 | { 14 | "name": "wp_admin_pass", 15 | "value": "={{ $json.wp_admin_pass }}" 16 | }, 17 | { 18 | "name": "wp_admin_email", 19 | "value": "={{ $json.wp_admin_email }}" 20 | }, 21 | { 22 | "name": "domain", 23 | "value": "={{ $json.domain }}" 24 | }, 25 | { 26 | "name": "service_name", 27 | "value": "={{ $json.service_name }}" 28 | }, 29 | { 30 | "name": "Website creation prompt", 31 | "value": "={{ $json['Website creation prompt'] }}" 32 | }, 33 | { 34 | "name": "Industry", 35 | "value": "={{ $json.Industry }}" 36 | } 37 | ] 38 | }, 39 | "options": {} 40 | }, 41 | "id": "c4e3a747-ca19-47e6-8389-1754d2c4909d", 42 | "name": "Config Variables7", 43 | "type": "n8n-nodes-base.set", 44 | "typeVersion": 2, 45 | "position": [ 46 | 1728, 47 | 256 48 | ] 49 | }, 50 | { 51 | "parameters": { 52 | "jsCode": "// 1. GET INPUT\n// Use $input.item.json to get data entering this node directly.\n// This is faster and prevents \"stuck\" states caused by upstream lookups.\nconst rawDomain = $input.item.json.domain;\n\n// Clean Domain logic\n// Added a safer Regex check (/\\/$/) to remove trailing slash only if it exists\nconst domain = rawDomain.replace('https://', '').replace('http://', '').replace(/\\/$/, '');\nconst routerName = 'wp-' + Math.floor(Math.random() * 100000); \n\n// 2. DEFINE DOCKER COMPOSE\nconst dockerCompose = `version: '3.8'\nservices:\n wordpress:\n image: wordpress:latest\n volumes:\n - wordpress_data:/var/www/html\n environment:\n - WORDPRESS_DB_HOST=mysql\n - WORDPRESS_DB_USER=root\n - WORDPRESS_DB_PASSWORD=rootpassword\n - WORDPRESS_DB_NAME=wordpress\n networks:\n - coolify\n labels:\n - \"traefik.enable=true\"\n - \"traefik.http.routers.${routerName}.rule=Host(\\`${domain}\\`)\"\n - \"traefik.http.routers.${routerName}.entrypoints=https\"\n - \"traefik.http.routers.${routerName}.tls.certresolver=letsencrypt\"\n - \"traefik.http.services.${routerName}.loadbalancer.server.port=80\"\n mysql:\n image: mysql:5.7\n volumes:\n - mysql_data:/var/lib/mysql\n environment:\n - MYSQL_ROOT_PASSWORD=rootpassword\n - MYSQL_DATABASE=wordpress\n networks:\n - coolify\nvolumes:\n wordpress_data:\n mysql_data:\nnetworks:\n coolify:\n external: true`;\n\n// 3. RETURN\n// Returning a clean object here will map it to the output JSON\nreturn {\n encoded_yaml: Buffer.from(dockerCompose).toString('base64'),\n clean_domain: domain\n};" 53 | }, 54 | "id": "b06f6736-d526-40d9-a762-2864da438e44", 55 | "name": "Prepare YAML (Base64)4", 56 | "type": "n8n-nodes-base.code", 57 | "typeVersion": 1, 58 | "position": [ 59 | 1952, 60 | 256 61 | ] 62 | }, 63 | { 64 | "parameters": { 65 | "method": "POST", 66 | "sendHeaders": true, 67 | "headerParameters": { 68 | "parameters": [ 69 | { 70 | "name": "Authorization", 71 | "value": "Bearer " 72 | } 73 | ] 74 | }, 75 | "sendBody": true, 76 | "bodyParameters": { 77 | "parameters": [ 78 | { 79 | "name": "name", 80 | "value": "={{ $('Config Variables7').item.json.service_name }}" 81 | }, 82 | { 83 | "name": "project_uuid" 84 | }, 85 | { 86 | "name": "server_uuid" 87 | }, 88 | { 89 | "name": "environment_name", 90 | "value": "production" 91 | }, 92 | { 93 | "name": "docker_compose_raw", 94 | "value": "={{ $json.encoded_yaml }}" 95 | } 96 | ] 97 | }, 98 | "options": {} 99 | }, 100 | "id": "e24819cf-a722-4285-b7b9-a2117c6d76b3", 101 | "name": "Create Service3", 102 | "type": "n8n-nodes-base.httpRequest", 103 | "typeVersion": 4.1, 104 | "position": [ 105 | 2176, 106 | 256 107 | ] 108 | }, 109 | { 110 | "parameters": { 111 | "method": "POST", 112 | "sendHeaders": true, 113 | "headerParameters": { 114 | "parameters": [ 115 | { 116 | "name": "Authorization", 117 | "value": "Bearer " 118 | } 119 | ] 120 | }, 121 | "sendBody": true, 122 | "bodyParameters": { 123 | "parameters": [ 124 | { 125 | "name": "uuid", 126 | "value": "={{ $('Create Service3').item.json.uuid }}" 127 | } 128 | ] 129 | }, 130 | "options": {} 131 | }, 132 | "id": "f9dc6f6b-edf5-488f-a4d1-2c595dab7f22", 133 | "name": "Deploy Service5", 134 | "type": "n8n-nodes-base.httpRequest", 135 | "typeVersion": 4.1, 136 | "position": [ 137 | 2400, 138 | 256 139 | ] 140 | }, 141 | { 142 | "parameters": { 143 | "amount": 120, 144 | "unit": "seconds" 145 | }, 146 | "id": "8b22b9fc-c5e9-4ebb-9cc1-ed53b38b3655", 147 | "name": "Wait for Deployment7", 148 | "type": "n8n-nodes-base.wait", 149 | "typeVersion": 1, 150 | "position": [ 151 | 2624, 152 | 256 153 | ], 154 | "webhookId": "wait-deployment-webhook" 155 | }, 156 | { 157 | "parameters": { 158 | "command": "=# Load Variables\nWP_URL=\"{{ $('Config Variables7').item.json.domain }}\"\nWP_TITLE=\"{{ $('Config Variables7').item.json.service_name }}\"\nWP_USER=\"{{ $('Config Variables7').item.json.wp_admin_user }}\"\nWP_PASS=\"{{ $('Config Variables7').item.json.wp_admin_pass }}\"\nWP_EMAIL=\"{{ $('Config Variables7').item.json.wp_admin_email }}\"\n\n# 1. Find Container ID\nCONTAINER_ID=$(docker ps -q --filter \"ancestor=wordpress:latest\" | head -n 1)\n\necho \"Found Container: $CONTAINER_ID\"\n\nif [ -z \"$CONTAINER_ID\" ]; then\n echo \"Error: No running WordPress container found.\"\n exit 1\nfi\n\n# 2. INSTALL WP-CLI (Fixing the 'executable not found' error)\necho \"Checking for WP-CLI...\"\n# We run a quick script inside the container to download WP-CLI if it doesn't exist\ndocker exec $CONTAINER_ID sh -c \"\n if ! command -v wp > /dev/null; then\n echo 'Installing WP-CLI...';\n curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar;\n chmod +x wp-cli.phar;\n mv wp-cli.phar /usr/local/bin/wp;\n fi\n\"\n\n# 3. Run Install\necho \"Installing WordPress...\"\ndocker exec $CONTAINER_ID wp core install --allow-root \\\n --url=\"$WP_URL\" \\\n --title=\"$WP_TITLE\" \\\n --admin_user=\"$WP_USER\" \\\n --admin_password=\"$WP_PASS\" \\\n --admin_email=\"$WP_EMAIL\"\n\n# 4. Fix Domain Settings\ndocker exec $CONTAINER_ID wp option update siteurl \"$WP_URL\" --allow-root\ndocker exec $CONTAINER_ID wp option update home \"$WP_URL\" --allow-root\n\n# 5. INSTALL ELEMENTOR (Added Step)\necho \"Installing Elementor...\"\ndocker exec $CONTAINER_ID wp plugin install elementor --activate --allow-root\n\n# 6. Create App Password\nAPP_PASS=$(docker exec $CONTAINER_ID wp user application-password create $WP_USER \"n8n-automation\" --porcelain --allow-root)\n\necho \"APP_PASSWORD_RESULT:$APP_PASS\"" 159 | }, 160 | "id": "34071c72-f540-4bfc-8bca-14a8100e6722", 161 | "name": "SSH - Run Install Script", 162 | "type": "n8n-nodes-base.ssh", 163 | "typeVersion": 1, 164 | "position": [ 165 | 2848, 166 | 256 167 | ], 168 | "credentials": { 169 | "sshPassword": { 170 | "id": "6Cp7KGRtbq32P6Tf", 171 | "name": "SSH Password account" 172 | } 173 | } 174 | }, 175 | { 176 | "parameters": { 177 | "jsCode": "// 1. Get immediate input (SSH Output)\nconst output = $input.item.json.stdout;\n\n// 2. Extract Password\n// Refined regex to capture exactly the 24-char password\nconst passwordRegex = /APP_PASSWORD_RESULT:\\s*([a-zA-Z0-9]{24,})/; \nconst match = output.match(passwordRegex);\n\nlet appPassword = \"Password_Not_Found\";\nif (match && match[1]) {\n appPassword = match[1].trim();\n}\n\n// 3. Get Config Variables safely\n// We use .first().json because we just want the initial config data\n// irrespective of the current item index.\nconst configData = $('Config Variables7').first().json;\n\nreturn {\n \"wp_url\": configData.domain,\n \"wp_user\": configData.wp_admin_user,\n \"wp_password\": configData.wp_admin_pass,\n \"app_password\": appPassword,\n \"status\": \"Installation Complete\"\n};" 178 | }, 179 | "id": "aa78f8da-d68c-46fc-ac5f-456ca3bbb293", 180 | "name": "Parse Credentials", 181 | "type": "n8n-nodes-base.code", 182 | "typeVersion": 1, 183 | "position": [ 184 | 3072, 185 | 256 186 | ] 187 | }, 188 | { 189 | "parameters": { 190 | "amount": 20 191 | }, 192 | "type": "n8n-nodes-base.wait", 193 | "typeVersion": 1.1, 194 | "position": [ 195 | 3296, 196 | 256 197 | ], 198 | "id": "7f966b2b-df1e-4b8b-931b-4ec8b572b313", 199 | "name": "Wait", 200 | "webhookId": "522b6ece-6ee2-4ed6-97ba-044fc3ff4f04" 201 | }, 202 | { 203 | "parameters": { 204 | "promptType": "define", 205 | "text": "={{ $('On form submission').item.json['Website creation prompt'] }}", 206 | "hasOutputParser": true, 207 | "options": { 208 | "systemMessage": "=You are a professional web developer and content strategist.\n1. Research the industry: {{ $('On form submission').item.json.Industry }}.\n2. Identify the top 5 essential pages needed for this type of website (e.g., Home, About, Services, Contact, FAQ).\n3. For EACH page, write a highly detailed, distinct prompt that I can feed to another AI to generate the actual HTML content. The prompt must include instructions for layout, color scheme, and specific sections.\n\nIMPORTANT: You must output ONLY a valid JSON array. Do not include markdown formatting like ```json.\nStructure:\n[\n {\n \"page_title\": \"Home Page\",\n \"html_generation_prompt\": \"Create a modern landing page for a [industry] site. Include a hero section with...\"\n },\n {\n \"page_title\": \"About Us\",\n \"html_generation_prompt\": \"Create an About page focusing on...\"\n }\n]" 209 | } 210 | }, 211 | "type": "@n8n/n8n-nodes-langchain.agent", 212 | "typeVersion": 3, 213 | "position": [ 214 | 3840, 215 | 256 216 | ], 217 | "id": "c1587501-a413-45e2-85d1-7294dfdee466", 218 | "name": "Head Website Developer AI" 219 | }, 220 | { 221 | "parameters": { 222 | "toolDescription": "Receives requirements from Head Developer AI including: business type, target audience, goals, and any specific page requirements. Returns structured site-map with page hierarchy, navigation recommendations, and content organization strategy.", 223 | "text": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Prompt__User_Message_', `requirements from Head Developer AI including: business type, target audience, goals, and any specific page requirements. `, 'string') }}", 224 | "options": { 225 | "systemMessage": "You are an expert Information Architect and Site-map Designer. Your specialty is creating logical, user-friendly website structures that optimize navigation and user experience.\n\nPRIMARY FUNCTION:\nCreate comprehensive site-maps and information architectures for WordPress websites based on business requirements and industry best practices.\n\nDELIVERABLES:\n1. **Hierarchical Site Structure**\n - Main navigation pages (top-level)\n - Sub-pages and nested sections\n - Recommended page depth (max 3 clicks to any content)\n \n2. **Page Definitions**\n - Page name and slug (URL-friendly)\n - Purpose and primary content focus\n - Target audience for each page\n - SEO considerations\n\n3. **Navigation Recommendations**\n - Header menu structure\n - Footer menu links\n - Sidebar widgets (if applicable)\n - Call-to-action placements\n\n4. **Content Hierarchy**\n - Priority pages (most important first)\n - User journey mapping\n - Conversion funnel integration\n\nBEST PRACTICES TO FOLLOW:\n- Keep main navigation to 5-7 items maximum\n- Group related content under logical parent pages\n- Consider mobile navigation constraints\n- Include essential pages: Home, About, Services/Products, Contact\n- Plan for scalability (room to add content later)\n- Follow industry-standard naming conventions\n- Optimize for both users and search engines\n\nOUTPUT FORMAT:\nPresent site-maps in a clear, structured format:\n- Tree diagram (ASCII or described hierarchy)\n- Table with columns: Page Name | URL Slug | Parent Page | Priority | Purpose\n- Navigation flow diagram description\n\nINDUSTRY CONSIDERATIONS:\n- E-commerce: Products, Categories, Cart, Checkout\n- Service Business: Services, Portfolio, Testimonials, Booking\n- Blog/Content: Categories, Tags, Archive, Author Pages\n- Corporate: About, Team, Careers, Press, Investors\n\nAsk clarifying questions about:\n- Business type and goals\n- Target audience\n- Required functionality (e-commerce, booking, etc.)\n- Content volume expectations\n- Special page requirements" 226 | } 227 | }, 228 | "type": "@n8n/n8n-nodes-langchain.agentTool", 229 | "typeVersion": 2.2, 230 | "position": [ 231 | 3600, 232 | 480 233 | ], 234 | "id": "0674c053-eff4-4cd5-997f-8f7b3c4989b5", 235 | "name": "Site-map Creator AI Agent tool" 236 | }, 237 | { 238 | "parameters": { 239 | "toolDescription": "AI Agent that Receives business context from Head Developer AI including: business name, industry, target market, location, products/services, and specific research questions. Returns comprehensive research report with competitor analysis, industry trends, audience insights, and strategic recommendations for website development.\n ", 240 | "text": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Prompt__User_Message_', `business context from Head Developer AI including: business name, industry, target market, location, products/services, and specific research questions`, 'string') }}", 241 | "options": { 242 | "systemMessage": "You are an expert Business Analyst and Market Researcher specializing in competitive analysis, industry trends, and digital presence evaluation for web development projects.\n\nPRIMARY FUNCTION:\nConduct comprehensive research to inform website strategy, content direction, and competitive positioning. Provide data-driven insights that shape website structure, messaging, and features.\n\nRESEARCH AREAS:\n\n1. **Industry Analysis**\n - Current market trends and dynamics\n - Industry-specific web design conventions\n - Common features and functionality expectations\n - Emerging technologies in the sector\n - Regulatory or compliance considerations\n - Seasonal factors affecting the business\n\n2. **Competitor Analysis**\n - Identify top 5-10 direct competitors\n - Analyze competitor websites:\n * Site structure and navigation\n * Key features and functionality\n * Design aesthetics and user experience\n * Content strategy and messaging\n * Call-to-action placements\n * Mobile responsiveness\n * Loading speed and performance\n - Identify gaps and opportunities\n - Benchmark best practices\n\n3. **Target Audience Research**\n - Demographics and psychographics\n - Online behavior patterns\n - Device usage preferences (mobile vs desktop)\n - Pain points and needs\n - Search intent and keywords\n - Content consumption preferences\n - Trust factors and decision criteria\n\n4. **Content Strategy Insights**\n - High-performing content types in the industry\n - Trending topics and keywords\n - Content gaps in competitor offerings\n - SEO opportunities and keyword difficulty\n - Voice and tone preferences\n - Multimedia usage (video, podcasts, infographics)\n\n5. **Technical Requirements**\n - Must-have features for the industry\n - Integration needs (CRM, booking, e-commerce)\n - Security and compliance requirements\n - Performance benchmarks\n - Mobile-first considerations\n - Accessibility standards\n\n6. **SEO and Digital Marketing**\n - Keyword research and opportunities\n - Local SEO factors (if applicable)\n - Backlink opportunities\n - Social media presence standards\n - Review and reputation management\n - Google Business Profile optimization\n\nRESEARCH METHODOLOGY:\n1. Use Searxng tool to find current information\n2. Analyze multiple sources for balanced insights\n3. Prioritize recent data (last 6-12 months)\n4. Cross-reference findings for accuracy\n5. Provide source citations when possible\n6. Identify both data and expert opinions\n\nSEARXNG SEARCH STRATEGIES:\n- \"[Industry] website trends 2024/2025\"\n- \"[Competitor name] website features\"\n- \"Best [industry] websites design\"\n- \"[Business type] customer expectations\"\n- \"[Industry] web design best practices\"\n- \"[Service/Product] online user behavior\"\n- \"[Location] [industry] competitive analysis\"\n\nOUTPUT FORMAT:\n\n**Executive Summary**\n- Key findings (3-5 bullet points)\n- Critical recommendations for website\n\n**Detailed Findings**\n1. Industry Landscape\n - Current state and trends\n - Opportunities and threats\n\n2. Competitive Analysis\n - Competitor comparison table\n - Strengths to emulate\n - Weaknesses to exploit\n - Feature gaps to fill\n\n3. Audience Insights\n - User personas summary\n - Behavioral patterns\n - Content preferences\n\n4. Recommendations\n - Must-have features\n - Nice-to-have features\n - Content strategy direction\n - Differentiation opportunities\n - Technical requirements\n\n5. SEO & Marketing\n - Keyword opportunities\n - Content topics\n - Marketing channel recommendations\n\n**Sources and Citations**\n- List all sources consulted\n- Include URLs when available\n\nCRITICAL GUIDELINES:\n- Focus on actionable insights, not just data\n- Prioritize findings that directly impact website decisions\n- Balance industry standards with differentiation opportunities\n- Consider budget and timeline constraints\n- Flag any red flags or critical competitive threats\n- Provide specific examples from competitor sites\n- Quantify findings when possible (e.g., \"80% of competitors use...\")\n\nDELIVERABLE TIMING:\n- This research should be completed EARLY in the project\n- Findings inform all downstream decisions\n- Update research if project scope changes significantly" 243 | } 244 | }, 245 | "type": "@n8n/n8n-nodes-langchain.agentTool", 246 | "typeVersion": 2.2, 247 | "position": [ 248 | 3872, 249 | 464 250 | ], 251 | "id": "37572764-48b8-44e8-be3c-68da64952114", 252 | "name": "Business Researcher AI Agent Tool" 253 | }, 254 | { 255 | "parameters": { 256 | "toolDescription": "Receives brand information from Head Developer AI including: business name, industry, target audience, brand personality, and any existing brand guidelines. Returns complete color palette with HEX codes, font pairings from Google Fonts, CSS variables, and accessibility-compliant design system.", 257 | "text": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Prompt__User_Message_', `brand information from Head Developer AI including: business name, industry, target audience, brand personality, and any existing brand guidelines. `, 'string') }}", 258 | "needsFallback": true, 259 | "options": { 260 | "systemMessage": "=You are an expert Brand Designer and Visual Identity Specialist focusing on typography and color theory for web design. Your role is to create cohesive, accessible, and on-brand color schemes and font pairings for WordPress websites.\n\nPRIMARY FUNCTION:\nAnalyze the business, industry, and target audience to recommend professional color palettes and font combinations that enhance brand identity and user experience.\n\nDELIVERABLES:\n\n1. **Color Palette**\n - Primary color (main brand color) - HEX, RGB\n - Secondary color (complementary/accent) - HEX, RGB\n - Tertiary colors (2-3 supporting colors) - HEX, RGB\n - Neutral colors (backgrounds, text) - HEX, RGB\n - Success/Error/Warning colors (UI states) - HEX, RGB\n - Color usage guidelines (where to use each)\n\n2. **Typography System**\n - Heading font (H1-H6) with family name and fallbacks\n - Body text font with family name and fallbacks\n - Accent/Display font (optional) for special elements\n - Font sizes scale (mobile and desktop)\n - Line heights and letter spacing\n - Font weights to use (400, 600, 700, etc.)\n\n3. **Accessibility Compliance**\n - WCAG AA contrast ratios verified\n - Readable font sizes (min 16px for body)\n - Color-blind friendly combinations\n - Sufficient spacing for readability\n\n4. **Google Fonts Integration**\n - Specific Google Fonts recommendations\n - Font loading optimization\n - Fallback font stacks\n - Variable font usage if applicable\n\n5. **CSS Variables Structure**\n ```css\n :root {\n --color-primary: #...;\n --color-secondary: #...;\n --font-heading: '...', sans-serif;\n --font-body: '...', sans-serif;\n }\n ```\n\nDESIGN PRINCIPLES:\n- Match colors to industry psychology (e.g., blue for trust, green for eco)\n- Ensure 4.5:1 contrast ratio for normal text\n- Limit palette to 5-7 colors maximum\n- Choose font pairings with visual contrast (serif + sans-serif)\n- Consider brand personality (modern, traditional, playful, serious)\n- Optimize for screen readability\n- Provide dark mode alternatives when appropriate\n\nINDUSTRY COLOR ASSOCIATIONS:\n- Technology: Blues, grays, electric accents\n- Health/Wellness: Greens, soft blues, earth tones\n- Finance: Navy, gold, gray, trust colors\n- Creative: Bold, vibrant, unconventional\n- Luxury: Black, gold, deep purples\n- Food: Warm reds, oranges, appetizing tones\n- Education: Blues, academic tones, accessible\n\nFONT PERSONALITY GUIDE:\n- Serif: Traditional, trustworthy, editorial\n- Sans-serif: Modern, clean, approachable\n- Display: Unique, attention-grabbing, sparingly used\n- Monospace: Technical, code-related content\n\nRESEARCH CAPABILITIES:\n- Use Searxng tool to research current design trends\n- Look up successful competitors' color schemes\n- Find industry-standard design patterns\n- Discover popular Google Font pairings\n\nOUTPUT FORMAT:\nProvide a complete design system document including:\n1. Visual color palette with HEX codes\n2. Font pairing recommendations with reasoning\n3. CSS variables ready to implement\n4. Usage guidelines for developers\n5. Accessibility notes" 261 | } 262 | }, 263 | "type": "@n8n/n8n-nodes-langchain.agentTool", 264 | "typeVersion": 2.2, 265 | "position": [ 266 | 4112, 267 | 528 268 | ], 269 | "id": "37b2159e-bbe8-4d73-a8b9-be4f7403cf43", 270 | "name": "website fonts and colors expert AI Agent Tool" 271 | }, 272 | { 273 | "parameters": { 274 | "model": "x-ai/grok-4.1-fast", 275 | "options": {} 276 | }, 277 | "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter", 278 | "typeVersion": 1, 279 | "position": [ 280 | 3712, 281 | 688 282 | ], 283 | "id": "9b058d74-688e-4883-8696-b93ac57dfb1a", 284 | "name": "OpenRouter Chat Model1", 285 | "credentials": { 286 | "openRouterApi": { 287 | "id": "kh54T9o4h8iCvjlW", 288 | "name": "Anagata Openrouter" 289 | } 290 | } 291 | }, 292 | { 293 | "parameters": { 294 | "toolDescription": "Search query for design research.", 295 | "sendHeaders": true, 296 | "headerParameters": { 297 | "parameters": [ 298 | { 299 | "name": "Accept", 300 | "value": "application/json" 301 | } 302 | ] 303 | }, 304 | "sendBody": true, 305 | "contentType": "form-urlencoded", 306 | "bodyParameters": { 307 | "parameters": [ 308 | { 309 | "name": "q", 310 | "value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters0_Value', `Search Query`, 'string') }}" 311 | }, 312 | { 313 | "name": "format", 314 | "value": "json" 315 | }, 316 | { 317 | "name": "pageno", 318 | "value": "1" 319 | }, 320 | { 321 | "name": "max_results", 322 | "value": "10" 323 | }, 324 | { 325 | "name": "apikey" 326 | } 327 | ] 328 | }, 329 | "options": {} 330 | }, 331 | "type": "n8n-nodes-base.httpRequestTool", 332 | "typeVersion": 4.3, 333 | "position": [ 334 | 3904, 335 | 736 336 | ], 337 | "id": "00832904-82b9-4e22-959c-8fa4798d7c08", 338 | "name": "Web Search" 339 | }, 340 | { 341 | "parameters": { 342 | "toolDescription": "Search query for font, css, animations free open source libraries research.", 343 | "sendHeaders": true, 344 | "headerParameters": { 345 | "parameters": [ 346 | { 347 | "name": "Accept", 348 | "value": "application/json" 349 | } 350 | ] 351 | }, 352 | "sendBody": true, 353 | "contentType": "form-urlencoded", 354 | "bodyParameters": { 355 | "parameters": [ 356 | { 357 | "name": "q", 358 | "value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('parameters0_Value', `Search Query`, 'string') }}" 359 | }, 360 | { 361 | "name": "format", 362 | "value": "json" 363 | }, 364 | { 365 | "name": "pageno", 366 | "value": "1" 367 | }, 368 | { 369 | "name": "max_results", 370 | "value": "10" 371 | }, 372 | { 373 | "name": "apikey" 374 | } 375 | ] 376 | }, 377 | "options": {} 378 | }, 379 | "type": "n8n-nodes-base.httpRequestTool", 380 | "typeVersion": 4.3, 381 | "position": [ 382 | 4080, 383 | 688 384 | ], 385 | "id": "fa3002da-cfb7-4462-b7c3-adf4636668bf", 386 | "name": "Web Search1" 387 | }, 388 | { 389 | "parameters": { 390 | "jsCode": "// Get the output from the previous Agent\nconst aiOutput = $input.first().json.output;\n\nlet parsedData;\n\n// Check if it's a string (needs parsing) or already an object/array\nif (typeof aiOutput === 'string') {\n // Clean up markdown if it exists\n const cleanJson = aiOutput.replace(/```json/g, '').replace(/```/g, '');\n parsedData = JSON.parse(cleanJson);\n} else {\n // It is already an object/array, use it directly\n parsedData = aiOutput;\n}\n\n// Ensure it is an array so the map function works\nif (!Array.isArray(parsedData)) {\n parsedData = [parsedData];\n}\n\n// Return as n8n items\nreturn parsedData.map(item => ({ json: item }));" 391 | }, 392 | "type": "n8n-nodes-base.code", 393 | "typeVersion": 2, 394 | "position": [ 395 | 4480, 396 | 256 397 | ], 398 | "id": "f9046a60-d58f-4599-a5cf-20fa64c92cbd", 399 | "name": "Code in JavaScript" 400 | }, 401 | { 402 | "parameters": { 403 | "jsonSchemaExample": "[\n {\n \"page_title\": \"Home Page\",\n \"html_generation_prompt\": \"Create a modern landing page for a [industry] site. Include a hero section with...\"\n },\n {\n \"page_title\": \"About Us\",\n \"html_generation_prompt\": \"Create an About page focusing on...\"\n }\n]" 404 | }, 405 | "type": "@n8n/n8n-nodes-langchain.outputParserStructured", 406 | "typeVersion": 1.3, 407 | "position": [ 408 | 4240, 409 | 368 410 | ], 411 | "id": "3b6d7ea9-7e2c-4510-81fe-cb50c3f6abf7", 412 | "name": "Structured Output Parser" 413 | }, 414 | { 415 | "parameters": { 416 | "formTitle": "Anagata Wordpress Website Creator", 417 | "formDescription": "Please be Patient It may take around 20 mins.", 418 | "formFields": { 419 | "values": [ 420 | { 421 | "fieldLabel": "wp_admin_user", 422 | "requiredField": true 423 | }, 424 | { 425 | "fieldLabel": "wp_admin_pass", 426 | "requiredField": true 427 | }, 428 | { 429 | "fieldLabel": "wp_admin_email", 430 | "requiredField": true 431 | }, 432 | { 433 | "fieldLabel": "domain" 434 | }, 435 | { 436 | "fieldLabel": "service_name" 437 | }, 438 | { 439 | "fieldLabel": "Website creation prompt" 440 | }, 441 | { 442 | "fieldLabel": "Industry" 443 | }, 444 | { 445 | "fieldLabel": "contact_webhook_url" 446 | } 447 | ] 448 | }, 449 | "options": {} 450 | }, 451 | "type": "n8n-nodes-base.formTrigger", 452 | "typeVersion": 2.3, 453 | "position": [ 454 | 1440, 455 | 256 456 | ], 457 | "id": "026fdb59-8963-4f1e-af4c-5ed389d3c8f5", 458 | "name": "On form submission", 459 | "webhookId": "62e28660-86af-41a3-a970-e3dec959e8f8" 460 | }, 461 | { 462 | "parameters": { 463 | "promptType": "define", 464 | "text": "=Industry: {{ $('Config Variables7').item.json.Industry }}\nBrand Name: {{ $('Config Variables7').item.json.service_name }}\n\nTask: Create the Global Design System (Header, Footer, CSS).", 465 | "options": { 466 | "systemMessage": "=You are a UI/UX Architect. \n\n### TASK:\nGenerate the Global HTML/CSS assets that will be used on EVERY page of the website to ensure consistency.\n\n### OUTPUT JSON FORMAT:\nYou must output a valid JSON object with these 3 keys:\n{\n \"global_css\": \"...all your :root variables, reset, and typography styles. Ensure #wp-custom-spa has width: 100vw...\",\n \"html_header\": \"...the
html code...\",\n \"html_footer\": \"...the