by Sam Nesler
Syncs assignments and completion states to and fro between Canvas LMS and a Notion database. Automatically triggers every 2 hours during the schoolday by default (meaning 7 times a day), but also supports manual refreshing via webhooks. Setup You'll need a few things to get started: A Canvas API key. You can generate one by going to your Canvas account settings and clicking on the "New Access Token" button. The URL looks like https://canvas.wisc.edu/profile/settings You'll also need to replace URLs in Canvas nodes with your institution's domain, unless you're a student at UW-Madison. Canvas nodes are all the HTTP Request nodes except the one labelled "OpenAI Categorization", which is an OpenAI node and will require a key in a later step. A Notion integration token. You can find this by going to your Notion integrations page and clicking "Create new integration". You can make it a "Internal Integration". A Notion database to sync to. I made a template for use with the workflow, but you can use any database that has the following fields: Status (status): Status with at least the options "Not Started" and "Completed" - assignments start out "Not Started", and are marked "Completed" when they are submitted on Canvas. Estimate (select): Select with at least the options "XS", "S", "M", "L", "XL" - this is where the estimated time to complete the assignment will be stored. Even if you don't use AI, they'll start out as "M" Priority (select): Select with at least the options "Could Do", "Should Do", "Must Do" - assignments start out "Should Do" ID (text): this is where the ID of the assignment will be stored. We use this to sync without having a database on the server Due Date (date): this is where the due date of the assignment will be stored Class (text): this is where the name of the class will be stored Link (URL): this is where the link to the assignment will be stored The ID of the Notion database you want to sync to. You can find this by clicking "Share" in the top right of your database and copying the link. The ID is the part of the link that comes after https://www.notion.so/ and before ?v=. So for https://www.notion.so/tsuniiverse/1976e99d91128076b034e7379464560f?v=1976e99d911281e7bd4b000c2cbec692&pvs=4, the ID would be 1976e99d91128076b034e7379464560f. An OpenAI key for assignment length estimation or disable the node. Manual Refreshing Embed the production URL from the Webhook Trigger inside a "toggle list" or "toggle heading" inside Notion, then expand the heading to refresh, like so:
by Angel Menendez
Upload Public-Facing Images to an S3 Cloudflare Bucket via Slack Modal 🛠 Who is this for? This workflow is for teams that use Slack for internal communication and need a streamlined way to upload public-facing images to an S3 Cloudflare bucket. It's especially beneficial for DevOps, marketing, or content management teams who frequently share assets and require efficient cloud storage integration. 💡 What problem does this workflow solve? Manually uploading images to cloud storage can be time-consuming and disruptive, especially if you're already working in Slack. This workflow automates the process, allowing you to upload images directly from Slack via a modal popup. It reduces friction and keeps your workflow within a single platform. 🔍 What does this workflow do? This workflow connects Slack with an S3 Cloudflare bucket to simplify the image-uploading process: Slack Modal Interaction**: Users trigger a Slack modal to select images for upload. Dynamic Folder Management**: Choose to create a new folder or use an existing one for uploads. S3 Integration**: Automatically uploads the images to a specified S3 Cloudflare bucket. Slack Confirmation**: After upload, Slack sends a confirmation with the uploaded file URLs. 🚀 Setup Instructions Prerequisites Slack Bot with the following permissions: commands files:write files:read chat:write Cloudflare S3 Credentials: Create an API token with write access to your S3 bucket. n8n Instance: Ensure n8n is properly set up with webhook capabilities. Steps Configure Slack Bot: Set up a Slack app and enable the Events API. Add your n8n webhook URL to the Events Subscription section. Add Credentials: Add your Slack API and S3 Cloudflare credentials to n8n. Customize the Workflow: Open the Idea Selector Modal node and update folder options to suit your needs. Update the Post Image to Channel node with your Slack channel ID. Deploy the Workflow: Activate the workflow and test by triggering the Slack modal. 🛠 How to Customize This Workflow Adjust the Slack Modal You can modify the modal layout in the Idea Selector Modal node to add additional fields or adjust the styling. Change the Bucket Structure Update the Upload to S3 Bucket node to customize the folder paths or change naming conventions. 🔗 References and Helpful Links Slack API Documentation Cloudflare S3 Setup n8n Documentation 📓 Workflow Notes Key Features: Slack Integration**: Uses Slack modal interactions to streamline the upload process. Cloud Storage**: Automatically uploads to a Cloudflare S3 bucket. User Feedback**: Sends a Slack message with file URLs upon successful upload. Setup Dependencies: Slack API token Cloudflare S3 credentials n8n webhook configuration Sticky Notes Included Sticky notes are embedded within the workflow to guide you through configuration and explain node functionality. 🌟 Why Use This Workflow? This workflow keeps your image-uploading process intuitive, efficient, and fully integrated with tools you already use. By leveraging n8n's flexibility, you can ensure smooth collaboration and quick sharing of public-facing assets without switching contexts.
by Simon
Address Validation Workflow About This workflow automates the process of validating and correcting client shipping addresses in Billbee, ensuring accurate delivery information. It's ideal for e-commerce businesses looking to save time and reduce errors in their order fulfillment process. The workflow uses Billbee, an order management platform for small to medium-sized online retailers, and the Endereco API for address validation. Who Is This For? E-Commerce Businesses**: Streamline order fulfillment by automatically correcting common shipping address errors. Warehouse Teams**: Reduce manual work and ensure packages are shipped to the correct address. Small to Medium-Sized Retailers**: Businesses using Billbee to manage orders and requiring efficient, automated solutions for address validation. How it Works Trigger: Workflow starts via a Billbee Webhook when an order is imported. Fetch Data: Retrieve the client's shipping address using the Order ID. Validate Address: Send the address to the Endereco API for validation and correction (e.g., house number errors). Conditional Actions: Valid Address: Update the address in Billbee. Invalid Address: Tag the order with "Validation Error." Track Status: Add tags in Billbee for processed orders. Setup Steps API Keys: Obtain Billbee Developer/User API Keys and Endereco API Key. Billbee Rule: Create an automation rule: Trigger: Order imported. Action: Call External URL with OrderId to trigger n8n workflow. Optional: Use a secondary trigger (e.g., order state changes to "gepackt") for manual corrections. Customization Options Filter Delivery Addresses: Customize filters to exclude specific delivery types, such as pickup shops ("Postfiliale," "Paketshop," or "Packstation"). Filters can be adjusted within Billbee or in the workflow. Error Handling: Configure additional actions for orders that fail validation, such as notifying your team or flagging orders for manual review. Order Tags: Define custom tags in Billbee to better track order statuses (e.g., "Address Corrected," "Validation Error"). Trigger Types: Use additional triggers such as changes to order states (e.g., "gepackt" or "In Fulfillment") for manual corrections or validations. Address Fields: Modify the workflow to focus on specific address components, such as postal codes, city names, or country codes. Validation Rules: Adjust Endereco API settings or add custom logic to refine validation criteria based on your business needs. API Documentation Endereco**: Endereco API Docs Billbee**: Billbee API Docs
by Tillman Staffen
Stop reading job listings that aren't a fit. This workflow automatically crawls five major job boards (LinkedIn, Indeed, WeAreDevelopers, Stepstone, and Xing) and scores every listing against your personal applicant profile, and emails you the jobs worth your time. An AI agent rates each job from 0 to 100 based on role, tech stack, salary, location, and deal-breakers you define. Anything below 60 gets dropped. The rest lands in your inbox, formatted and ready to review. What problem is it solving? Job searching is time-consuming and noisy. Most listings are irrelevant, but you still have to read each one to know that. Manually filtering across five platforms for a specific stack, salary band, and working arrangement takes hours a week. This workflow removes that friction entirely. You define your profile once and the crawler does the rest on a schedule. You get a clean digest of only the matches that pass the bar. What this workflow does Triggers on a schedule (or manually via the Firecrawl Execute trigger) Queries LinkedIn (via HTTP + Firecrawl), Indeed, WeAreDevelopers, Stepstone, and Xing in parallel Scrapes each job listing with Firecrawl to extract full content Processes posting dates with an AI agent to normalise inconsistent formats Scores each listing 0–100 against your applicant profile using an OpenAI agent with a structured output parser Filters out anything below 60% suitability Runs detailed research on high-scoring jobs for additional context Sends an HTML email with your curated job list — or a "no jobs" email if nothing passed the threshold Setup Configure your applicant profile — edit the sticky note JSON in the workflow with your role, stack, experience, salary minimum, location preference, and deal-breakers Connect OpenAI credentials — used for suitability scoring and date parsing Connect Firecrawl credentials — used to scrape job board listings Configure email — set your SMTP credentials and recipient address in both email nodes (Job Mail and No Jobs Mail) Adjust the schedule — set how frequently the crawler runs (daily recommended) Activate the workflow How to customize this workflow to your needs Change the scoring threshold** — the filter is set to 60% by default; raise it to 75%+ for tighter results or lower it if you're early in your search Add or remove job boards** — each source (LinkedIn, Indeed, etc.) is modular; you can disable boards by bypassing their query node Modify the applicant profile** — update the JSON sticky note at any time to reflect a new role or changed requirements; no other changes needed Adjust the detail research** — the "Detailed Research" agent runs on high-scoring jobs; you can expand or simplify what it looks for Change the output** — swap the email nodes for a Notion database write, a Slack message, or a Google Sheet if you prefer a different delivery format Filter by posting age** — the max_listing_age_days field in the profile JSON controls how recent listings must be
by isaWOW
Description An AI-powered workflow that analyzes any website to identify missing pages that would improve user experience and business performance. Submit a URL, and the system detects existing pages, researches competitors using Perplexity, and generates a professional gap analysis report with prioritized recommendations—saved directly to Google Docs. What this workflow does This automation delivers a complete website page gap analysis: Smart page detection:** Automatically scans website HTML and identifies 15 common page types (About, Contact, Services, Blog, Portfolio, Pricing, FAQ, Testimonials, Team, Careers, Privacy, Terms, etc.) Business type classification:** Determines if the site is ecommerce, portfolio/agency, blog, SaaS, or service-based to tailor recommendations Competitor research:** Uses Perplexity to research 5-7 top competitors in the same industry and identify their page structures AI gap analysis:** GPT-4.1-mini with web search compares the website against industry standards and competitor best practices Prioritized recommendations:** Generates High/Medium/Low priority suggestions with business value explanations and actionable content ideas Google Docs report:** Saves a professional gap analysis report ready to share with clients or stakeholders Setup requirements Tools you'll need: Active n8n instance (self-hosted or n8n Cloud) Google Docs with OAuth access OpenAI API key (GPT-4.1-mini access with web search) Perplexity API key (for competitor research) Estimated setup time: 15–20 minutes Step-by-step setup 1. Connect Google Docs In n8n: Credentials → Add credential → Google Docs OAuth2 API Complete OAuth authentication Create a new Google Doc for storing reports (or use an existing one) Open "Save Report to Google Docs" node Paste the Google Doc URL in the documentURL field 2. Add OpenAI API credentials Get API key: https://platform.openai.com/api-keys In n8n: Credentials → Add credential → OpenAI API Paste your API key Open "OpenAI GPT-4.1 Mini with Web Search" node Select your OpenAI credential Ensure model is set to gpt-4.1-mini Verify Web Search is enabled in the built-in tools section 3. Add Perplexity API credentials Get API key: https://www.perplexity.ai/settings/api In n8n: Credentials → Add credential → Perplexity API Paste your API key Open "Perplexity Competitor Research Tool" node Select your Perplexity credential 4. Share the form URL Open "Submit Website URL for Analysis" node Copy the Form URL from the node settings Share this URL with anyone who needs to run website audits The form accepts a single field: Website URL 5. Test the workflow Open the Form URL in your browser Enter a test website: https://example.com Submit the form Wait 30-60 seconds for the analysis to complete Check your Google Docs—the gap analysis report should appear Verify that: Existing pages are correctly detected Business type is identified Competitor research is included Recommendations are prioritized and actionable 6. Activate the workflow Toggle the workflow to Active at the top The form will now accept submissions 24/7 Each submission generates a new report appended to your Google Doc How it works 1. URL submission via form User opens the form link and submits a website URL they want to analyze. The form triggers the workflow immediately. 2. HTML fetch and extraction The workflow sends an HTTP request to the submitted URL and retrieves the complete HTML source code of the website's homepage. 3. Automated page detection A code node analyzes the HTML to detect 15 common page types: Navigation pages:** Home, About, Contact, Services, Products Content pages:** Blog, Portfolio, Pricing, FAQ Social proof pages:** Testimonials, Team, Careers Legal pages:** Privacy Policy, Terms of Service The detection works by: Scanning all internal links in the HTML Matching URL patterns (e.g., /about, /contact-us, /services) Searching for navigation keywords in anchor text Normalizing URLs (removing query params, anchors, trailing slashes) 4. Business type classification The code also identifies the website's business type based on HTML content patterns: Ecommerce:** Detects shopping cart, checkout, product pages Portfolio/Agency:** Identifies portfolio, case studies, creative work Blog/Content site:** Finds blog posts, articles, news sections SaaS/Software:** Detects subscription, cloud platform, software keywords Service/Agency:** Identifies consulting, marketing, agency services General:** Default if no specific patterns match 5. Deep competitor research with Perplexity The AI Agent instructs Perplexity to: Crawl the target website thoroughly (navigation, footer, hidden menus) Research 5-7 top competitors in the identified business type Document each competitor's page structure Identify industry-standard pages that successful sites consistently have Perplexity focuses only on user-facing pages and ignores technical files (sitemap.xml, robots.txt, admin pages). 6. AI gap analysis and recommendations GPT-4.1-mini with web search: Compares the website's existing pages against competitor structures Identifies genuinely missing pages (cross-references with detected existing pages) Prioritizes recommendations based on business impact (High/Medium/Low) Provides specific business value explanations for each recommendation Suggests actionable content for each missing page Includes competitor examples showing how others use these pages Critical filtering rules: Never recommends pages already detected Excludes technical files and admin pages Only suggests pages with clear business value Each recommendation must be justified 7. Professional report generation The AI Agent outputs a structured report containing: Website Overview:** URL, business type, analysis date Pages Confirmed as Existing:** Formatted list of detected pages Gap Analysis Summary:** Total pages analyzed, existing vs. missing count Recommended Pages to Add:** Detailed recommendations with priority, business value, content suggestions, and competitor examples Implementation Priority Summary:** Quick-reference lists by priority level Next Steps:** 2-3 actionable implementation steps 8. Save to Google Docs The complete report is inserted into your Google Docs document. Each new analysis appends to the same document, creating a running archive of all audits performed. Key features ✅ Automatic page detection: Scans HTML and identifies 15 common page types without manual input—no need to know the site structure beforehand ✅ Business type intelligence: Classifies websites into 6 business categories to provide industry-relevant recommendations ✅ Perplexity-powered research: Deep competitor analysis covering 5-7 top sites in the same niche with complete page inventories ✅ Smart filtering: Never recommends pages that already exist, even if they use different naming conventions or URL structures ✅ Priority-based recommendations: Every suggestion labeled High/Medium/Low with clear business justification—know what to build first ✅ Actionable content ideas: Not just "add a blog"—specific suggestions for what content should go on each recommended page ✅ Competitor examples: See how successful competitors use each recommended page type in their own sites ✅ Google Docs integration: Professional reports saved automatically—no downloads, no formatting, ready to share ✅ Form-based workflow: Single URL submission—anyone can run audits without touching n8n Troubleshooting HTML fetch fails SSL certificate issues:** Some websites block automated requests. Try adding "rejectUnauthorized": false in HTTP Request options. Cloudflare/bot protection:** Sites with aggressive protection may block the request. Test with a simple site first (like your own). Timeout errors:** Increase timeout setting in HTTP Request node to 30-60 seconds for slow-loading sites. Pages not detected correctly Non-standard URL structure:** The workflow detects pages using common patterns (/about, /contact, etc.). If a site uses unusual URLs like /company-info instead of /about, manual review may be needed. Single-page websites:** Sites built as SPAs (single-page applications) with JavaScript routing may not have distinct page URLs in HTML. The workflow works best with traditional multi-page sites. Check detection details:** The code node outputs detection_details showing exactly what was found. Review this to debug false negatives. Perplexity API errors Rate limits:** Perplexity has usage limits. If you hit them, wait or upgrade your plan. API key invalid:** Verify the key is correct at https://www.perplexity.ai/settings/api Quota exceeded:** Check your Perplexity dashboard for remaining credits. OpenAI web search not working Web search disabled:** Ensure "Web Search" is enabled in the OpenAI Chat Model node under "Built-in Tools" Search context size:** Set to "Medium" for balanced performance Model compatibility:** Web search only works with GPT-4 models, not GPT-3.5 Report not saving to Google Docs Re-authenticate OAuth:** Go to Credentials → Google Docs OAuth2 API → Reconnect Document URL format:** Ensure the URL is a valid Google Docs link (not a folder or Sheets link) Permissions:** Verify the connected Google account has edit access to the document Document locked:** Check if the document is open in another tab with unsaved changes AI recommendations are too generic Perplexity research quality:** The AI relies on Perplexity's research. If competitors have similar structures, recommendations may overlap. Try analyzing a more unique website. Business type misclassification:** Check the detected business_type in the code output. If it's wrong, the recommendations will be off-target. Improve prompt:** Edit the AI Agent system prompt to emphasize more specific or creative recommendations for your niche. Use cases Web design agencies: Audit client websites before proposals. Show exactly which pages are missing compared to competitors, with business justification for each recommendation. Win more projects by demonstrating data-driven insights. SEO consultants: Include page gap analysis in site audits. Identify missing pages that competitors rank for (FAQ, pricing, testimonials). Provide clients with actionable roadmaps for site expansion. In-house marketing teams: Analyze competitor websites quarterly to spot new page types or content strategies. Keep your site competitive by identifying gaps before leadership asks about them. Freelance developers: Offer value-add services to existing clients. Run audits on their sites, identify quick wins (missing FAQ, testimonials, pricing pages), and sell additional development work. Startup founders: Before hiring a design agency, understand what pages you actually need. Get a competitor-researched report showing industry standards for your business type—save time and budget. Content strategists: Identify content opportunities beyond blog posts. See which informational pages (FAQ, case studies, resource libraries) competitors have that you're missing. Expected results Time savings:** 2-3 hours saved per website audit (manual competitor research eliminated) Analysis speed:** Complete gap analysis in 30-60 seconds vs. hours of manual work Competitor coverage:** Research 5-7 competitors automatically vs. 1-2 manual comparisons Report quality:** Professional, shareable reports vs. rough notes or spreadsheets Actionability:** Prioritized recommendations with business value vs. generic "add more pages" advice Scalability:** Run 50+ audits per day without additional effort Support Need help or custom development? 📧 Email: info@isawow.com 🌐 Website: https://isawow.com/
by Daniel Nolde
What it is: An automation to plan→draft→finalize and publish your textual blog post ideas to your wordpress blog Works in stages and hand back control to you in between those You can use a Google Spreadsheet for planning topics and configuring LLM models and prompts What it does: plans→drafts→finalizes blog post topics you specify in a Google Spreadsheet using an LLM with prompts that also ar configured in that spreadsheet (even which model to use) savs the results in the corresponding columns of the "Schedule" sheet in the spreadsheet hands control back to the user for inspecting or changing the results and for setting the next "Action" for th workflow Finally publishes the blog post to your Wordpress instance Limitations Probably slightly over-engineered ;-) No media generation yet some LLM models don't work because of their output format How it works: The Workflow is triggered manually or scheduled every hour It ingests a Google Spreadsheet to get Config for prompts/context tc Blog-Topics and their status and next action Depending on each blog topics "Status" and "Action" it then either uses an LLM for th next action ("plan"→"draft"→"final" actions) or publishes the written content to your Wordpress instance ("publish" actions) Set up steps: Import the workflow Make your own copy of the Google Spreadsheet Update the credentials using your individual credentials for: Google Spreadsheets OpenRouter Edit the "Settings" node and enter your individual values for Your spreadsheet copy URL Your wordpress blog URL Your wordpress blog username Your wordpress blog app password (a 4x4 alphanumeric sequence), that you probably have to create first, for which your wordpress user has to have 2-factor-authentication enabled. In your own copy of the spreadsheet: individualize the "Config" sheet's "Value" column for the prompts/context/etc Populate the "Schedule" sheet with at least one line in which you specify a "Topic" a "Schedulded" date (YYYY-MM-DD HH:mm:ss) a "Status" of "idea" an "Action" of "plan" (to kick off that action)
by Muhammad Asadullah
Document Chat Bot with Automated RAG System This workflow creates a conversational assistant that can answer questions based on your Google Drive documents. It automatically processes various file types and uses Retrieval-Augmented Generation (RAG) to provide accurate answers based on your document content. How It Works Monitors Google Drive for New Documents: Automatically detects when files are created or updated in designated folders Processes Multiple File Types: Handles PDFs, Excel spreadsheets, and Google Docs Builds a Knowledge Base: Converts documents into searchable vector embeddings stored in Supabase Provides Chat Interface: Users can ask questions about their documents through a web interface Retrieves Relevant Information: Uses advanced RAG techniques to find and present the most relevant information Setup Steps (Estimated time: 25-30 minutes) API Credentials: Connect your OpenAI API key for text processing and embeddings Google Drive Integration: Set up Google Drive triggers to monitor specific folders Supabase Configuration: Configure Supabase vector database for document storage Chat Interface Setup: Deploy the web-based chat interface using the provided webhook The workflow automatically chunks documents into manageable segments, generates embeddings, and stores them in a vector database for efficient retrieval. When users ask questions, the system finds the most relevant document sections and uses them to generate accurate, contextual responses.
by Mark Shcherbakov
Video Guide I prepared a detailed guide that illustrates the entire process of building an AI agent using Supabase and Google Drive within N8N workflows. Youtube Link Who is this for? This workflow is designed for developers, data scientists, and business users who wish to automate document management and enable AI-powered interactions over their stored files. It's especially beneficial for scenarios where users need to process, analyze, and retrieve information from uploaded documents rapidly. What problem does this workflow solve? Managing files across multiple platforms often involves tedious manual processes. This workflow facilitates automated file handling, making it easier for users to upload, parse, and interact with documents through an AI agent. It reduces redundancy and enhances the efficiency of data retrieval and management tasks. What this workflow does This workflow integrates Supabase storage with Google Drive and employs an AI agent to manage files effectively. The agent can: Upload files to Supabase storage and activate processes based on file changes in Google Drive. Retrieve and parse documents, converting them into a structured format for easy querying. Utilize an AI agent to answer user queries based on saved document data. Data Collection: The workflow initially gathers files from Supabase storage, ensuring no duplicates are processed in the 'files' table. File Handling: It processes files to be parsed based on their type, leveraging LlamaParse for effective data transformation. Google Drive Integration: The workflow monitors a designated Google Drive folder to upload files automatically and refresh document records in the database with new data. AI Interaction: A webhook is established to enable the AI agent to converse with users, facilitating queries and leveraging stored document knowledge. Setup Supabase Storage Setup: Create a private bucket in Supabase storage, modifying the default name in the URL. Upload your files using the provided upload options. Database Configuration: Establish the 'file' and 'document' tables in Supabase with the necessary fields. Execute any required SQL queries for enabling vector matching features. N8N Workflow Logic: Start with a manual trigger for the initial workflow segment or consider alternative triggers like webhooks. Replace all relevant credentials across nodes with your own to ensure seamless operation. File Processing and Google Drive Monitoring: Set up file processing to take care of downloading and parsing files based on their types. Create triggers to monitor the designated Google Drive folder for file uploads and updates. Integrate AI Agent: Configure the webhook for the AI agent to accept chat inputs while maintaining session context for enhanced user interactions. Utilize PostgreSQL to store user interactions and manage conversation states effectively. Testing and Adjustments: Once everything is set up, run tests with the AI agent to validate its responses based on the documents in your database. Fine-tune the workflow and AI model as needed to achieve desired performance.
by Mateusz Kosiorek
AI powered content creation and WordPress publishing workflow Summary This workflow automates the entire process of blog content creation, from idea generation and article writing using Google Gemini, to sourcing images from Pexels and publishing directly to your WordPress site. It uses Google Sheets as a central hub for managing content ideas and tracking their status, all orchestrated through interactive n8n forms. Key features AI driven content:** Leverages Google Gemini for generating: Full blog articles based on prompts. Relevant keywords for image searching. New blog topic ideas. Automated image sourcing:** Searches Pexels for suitable images based on AI generated keywords and downloads them. WordPress integration:** Creates new posts with AI generated title and content. Uploads sourced images to the WordPress media library. Sets the uploaded image as the featured image for the post. Google Sheets management:** Fetches content ideas (prompts) marked as "not generated". Updates the sheet after a post is generated with the post ID, title, and generation date. Adds newly AI generated blog topic ideas to the sheet. Interactive forms:** Main trigger form to choose between generating content or adding new ideas. Forms to input topics for idea generation. Confirmation forms at the end of processes. Structured output parsing:** Ensures AI responses for topic generation are correctly formatted as JSON. How it works The workflow is initiated via an n8n Form Trigger: Select Action, allowing the user to choose one of two main paths: 1. Generate content path: Fetch idea: The Fetch unprocessed ideas (Google Sheets) node retrieves a row from your sheet where the "Generated" column is "no". Set prompt: The Set prompt node prepares the topic from the sheet for the AI. Generate article: The Generate article AI (Langchain Agent with Google Gemini) node takes the prompt and writes a full article. Generate image keyword: The Generate image keyword AI (Langchain Agent with Google Gemini) node creates a concise search term based on the article topic. Search image: The Search Pexels image (HTTP Request) node uses the generated keyword to find a relevant image via the Pexels API. Create WordPress post: The Create WordPress post node publishes the AI generated article and initial image metadata to your WordPress site. Download and upload image: The Download Pexels image (HTTP Request) node fetches the actual image file, and the Upload image (HTTP Request) node uploads it to your WordPress media library. Set featured image: The Set featured image (HTTP Request) node links the uploaded image as the featured image for the newly created post. Update sheet: The Update Google Sheet node marks the idea as "yes" in your Google Sheet and adds the WordPress post ID and title. Confirmation: A Form: End post generation node displays a completion message. 2. Add ideas path: Input topic: The Form: Enter topic for ideas node prompts the user to enter a general subject. Generate topics: The Generate blog topics AI (Langchain Agent with Google Gemini and Structured Output Parser) node generates five SEO friendly blog topic ideas based on the user's input, formatted as JSON. Process topics: The Split topics node separates the generated list of topics into individual items. Add to sheet: For each topic, the Add ideas to sheet (Google Sheets) node appends it as a new row, marked with "Generated: no". Loop or end: The Form: Add more topics? node asks the user if they want to generate more ideas or end the process. If "NEXT", it loops back to the Form: Enter topic for ideas. If "END", a Form: End idea generation node displays a completion message with the list of added topics. Nodes used Form Trigger If Google Sheets Set Langchain Agent (with Google Gemini Chat Model) Structured Output Parser (Langchain) HTTP Request (for Pexels API and WordPress Media/Post updates) WordPress Split Out Form (for user interaction and completion messages) Sticky Note (for instructions within the workflow) Setup instructions Credentials: Google Sheets: Configure your Google Sheets OAuth2 credentials in the Fetch unprocessed ideas, Update Google Sheet, and Add ideas to sheet nodes. WordPress: Configure your WordPress API credentials in the Create WordPress post, Upload image, and Set featured image nodes. Google Gemini: Configure your Google Gemini (PaLM) API key in the Gemini model for article, Gemini model for image keyword, and Gemini model for topics nodes. API keys and URLs: Pexels: In the Search Pexels image node, replace <YOUR_PEXELS_API_KEY> in the Authorization header with your actual Pexels API key. WordPress URL: In the Upload image and Set featured image nodes, replace <YOUR_WORDPRESS_URL> in the URL field with your WordPress site's domain (e.g., yourblog.com). Google Sheet configuration: Ensure your Google Sheet (specified by Document ID in Google Sheets nodes) has a sheet named Sheet1 (or update the Sheet Name parameter). The sheet should have at least the following columns: Prompt (for the blog idea/topic), Generated (to track status, e.g., "no" or "yes"), row_number (automatically populated by n8n when reading), Date, Title (for the final WordPress post title), Post ID. Activate the workflow. The Form Trigger: Select Action will provide a webhook URL to initiate the process. Customization ideas Modify the AI prompts in the Langchain Agent nodes for different tones, styles, or content structures. Change the Google Gemini models used for different cost/performance balances. Integrate other image sources instead of or in addition to Pexels. Add steps for social media sharing after a post is published. Extend the Google Sheet to track more metrics like word count or target keywords. Implement more sophisticated error handling. Use cases Automating blog content generation for personal or company blogs. Streamlining content marketing efforts. Quickly populating new websites with initial content. Assisting SEO agencies in creating draft content for clients. Helping solo bloggers maintain a consistent publishing schedule.
by Ozgur Karateke
This workflow contains community nodes that are only compatible with the self-hosted version of n8n. 1 — What Does It Do / Which Problem Does It Solve? This workflow turns Google Docs-based contract & form templates into ready-to-sign PDFs in minutes—all from a single chat flow. Automates repetitive document creation.** Instead of copying a rental, sales, or NDA template and filling it by hand every time, the bot asks for the required values and fills them in. Eliminates human error.** It lists every mandatory field so nothing is missed, and removes unnecessary clauses via conditional blocks. Speeds up approvals.** The final draft arrives as a direct PDF link—one click to send for signing. One template → unlimited variations.* Every new template you drop in Drive is auto-listed with *zero workflow edits—**it scales effortlessly. 100 % no-code.** Runs on n8n + Google Apps Script—no extra backend, self-hosted or cloud. 2 — How It Works (Detailed Flow) 📝 Template Discovery 📂 The TemplateList node scans the Drive folder you specify via the ?mode=meta endpoint and returns an id / title / desc list. The bot shows this list in chat. 🎯 Selection & Metadata Fetch The user types a template name. 🔍 GetMetaData opens the chosen Doc, extracts META_JSON, placeholders, and conditional blocks, then lists mandatory & optional fields. 🗣 Data-Collection Loop The bot asks for every placeholder value. For each conditional block it asks 🟢 Yes / 🔴 No. Answers are accumulated in a data JSON object. ✅ Final Confirmation The bot summarizes the inputs → when the user clicks Confirm, the DocProcess sub-workflow starts. ⚙️ DocProcess Sub-Workflow | 🔧 Step | Node | Task | | --- | --- | --- | | 1 | User Choice Match Check | Verifies name–ID match; throws if wrong | | 2 | GetMetaData (renew) | Gets the latest placeholder list | | 3 | Validate JSON Format | Checks for missing / unknown fields | | 4 | CopyTemplate | Copies the Doc via Drive API | | 5 | FillDocument | Apps Script fills placeholders & removes blocks | | 6 | Generate PDF Link | Builds an export?format=pdf URL | 📎 Delivery The master agent sends 🔗 Download PDF & ✏️ Open Google Doc links. 🚫 Error Paths status:"ERROR", missing:[…] → bot lists missing fields and re-asks. unknown:[…] → template list is outdated; rerun TemplateList. Any Apps Script error → the returned message is shown verbatim in chat. 3 — 🚀 Setup Steps (Full Checklist) > Goal: Get a flawless PDF on the first run. > > > Mentally tick the ☑️ in front of every line as you go. > ☁️ A. Google Drive Preparation | Step | Do This | Watch Out For | | --- | --- | --- | | 1 | Create a Templates/ folder → put every template Doc inside | Exactly one folder; no sub-folders | | 2 | Placeholders in every Doc are {{UPPER_CASE}} | No Turkish chars or spaces | | 3 | Wrap optional clauses with [[BLOCK_NAME:START]]…[[BLOCK_NAME:END]] | The START tag must have a blank line above | | 4 | Add a META_JSON block at the very end | Script deletes it automatically after fill | | 5 | Right-click Doc > Details ▸ Description = 1-line human description | Shown by the bot in the list | | 6 | Create a second Generated/ folder (for copies) | Keeps Drive tidy | > 🔑 Folder ID (long alphanumerical) = <TEMPLATE_PARENT_ID> > > > We’ll paste this into the TemplateList node next. > Simple sample template → Template Link 🛠 B. Import the Workflow into n8n Settings ▸ Import Workflow ▸ DocAgent.json If nodes look Broken afterwards → no community-node problem; you only need to select credentials. 📑 C. Customize the TemplateList Node Open Template List node ⚙️ → replace '%3CYOUR_PARENT_ID%3E' in parents with the real folder ID in the URL. Right-click node > Execute Node. Copy the entire JSON response. In the editor paste it into: DocAgent → System Prompt (top) User Choice Match Check → System Prompt (top) Save. > ⚠️ Why manual? Caching the list saves LLM tokens. Whenever you add a template, rerun the node and update the prompts. > 🔗 D. Deploy the Apps Script | Step | Screen | Note | | --- | --- | --- | | 1 | Open Gist files GetMetaData.gs + FillDocument.gs → File ▸ Make a copy | Both files may live in one project | | 2 | Project Settings > enable Google Docs API ✔️ & Google Drive API ✔️ | Otherwise you’ll see 403 errors | | 3 | Deploy ▸ New deployment ▸ Web app | | | • Execute as | Me | | | • Who has access | Anyone | | | 4 | On the consent screen allow scopes:• …/auth/documents• …/auth/drive | Click Advanced › Go if Google warns | | 5 | Copy the Web App URL (e.g. https://script.google.com/macros/s/ABC123/exec) | If this URL changes, update n8n | Apps Script source code → Notion Link 🔧 E. Wire the Script URL in n8n | Node | Field | Action | | --- | --- | --- | | GetMetaData | URL | <WEB_APP_URL>?mode=meta&id={{ $json["id"] }} | | FillDocument | URL | <WEB_APP_URL> | > 💡 Prefer using an .env file? Add GAS_WEBAPP_URL=… and reference it as {{ $env.GAS_WEBAPP_URL }}. > 🔐 F. Add Credentials Google Drive OAuth2* → *Drive API (v3) Full Access Google Docs OAuth2** → same account LLM key** (OpenAI / Gemini) (Optional) Postgres Chat Memory credential for the corresponding node 🧪 G. First Run (Smoke Test) Switch the workflow Active. In the chat panel type /start. Bot lists templates → pick one. Fill mandatory fields, optionally toggle blocks → Confirm. 🔗 Download PDF link appears → ☑️ setup complete. ❌ H. Common Errors & Fixes | 🆘 Error | Likely Cause | Remedy | | --- | --- | --- | | 403: Apps Script permission denied | Web app access set to User | Redeploy as Anyone, re-authorize scopes | | placeholder validation failed | Missing required field | Provide the listed values → rerun DocProcess | | unknown placeholders: … | Template vs. agent mismatch | Check placeholder spelling (UPPER_CASE ASCII) | | Template ID not found | Prompt list is old | Rerun TemplateList → update both prompts | | Cannot find META_JSON | No meta block / wrong tag | Add [[META_JSON_START]] … [[META_JSON_END]], retry | ✅ Final Checklist [ ] Drive folder structure & template rules ready [ ] Workflow imported, folder ID set in node [ ] TemplateList output pasted into both prompts [ ] Apps Script deployed, URL set in nodes [ ] OAuth credentials & LLM key configured [ ] /start test passes, PDF link received 🙋♂️ Need Help with Customizations? Reach out for consulting & support on LinkedIn: Özgür Karateke Full Documentation → Notion Simple sample template → Template Link Apps Script source code → Notion Link
by Julian Kaiser
Startup Funding Research Automation with Claude, Perplexity AI, and Airtable How it works This intelligent workflow automatically discovers and analyzes recently funded startups by: Monitoring multiple news sources (TechCrunch and VentureBeat) for funding announcements Using AI to extract key funding details (company name, amount raised, investors) Conducting automated deep research on each company through perplexity deep research or jina deep search. Organizing all findings into a structured Airtable database for easy access and analysis Set up steps (10-15 minutes) Connect your news feed sources (TechCrunch and VentureBeat). Could be extended. These were easy to scrape and this data can be expensive. Set up your AI service credentials (Claude and Perplexity or jina which has generous free tier) Connect your Airtable account and create a base with appropriate fields (can be imported from my base) or see structure below. Airtable Base Structure Funding Round Base | Field Name | Data Type | Description | |------------|-----------|-------------| | website_url | String | URL of the company website | | company_name | String | Name of the company | | funding_round | String | The funding stage or round (e.g., Series A, Seed, etc.) | | funding_amount | Number | The amount of funding received | | lead_investor | String | The primary investor leading the funding round | | market | String | The market or industry sector the company operates in | | participating_investors | String | List of other investors participating in the funding round | | press_release_url | String | URL to the press release about the funding | | evaluation | Number | The company's valuation | Structure Company Deep Research Base | Field Name | Data Type | Description | |------------|-----------|-------------| | website_url | String | URL of the company website | | company_name | String | Name of the company | | funding_round | String | The funding stage or round (e.g., Series A, Seed, etc.) | | funding_amount | Number | The amount of funding received | | currency | String | Currency of the funding amount | | announcement_date | String | Date when the funding was announced | | lead_investor | String | The primary investor leading the funding round | | participating_investors | String | List of other investors participating in the funding round | | industry | String | The industry sectors the company operates in | | company_description | String | Description of the company's business | | hq_location | String | Company headquarters location | | founding_year | Number | Year the company was founded | | founder_names | String | Names of the company founders | | ceo_name | String | Name of the company CEO | | employee_count | Number | Number of employees at the company | | total_funding | Number | Total funding amount received to date | | total_funding_currency | String | Currency of total funding | | funding_purpose | String | Purpose or use of the funding | | business_model | String | Company's business model | | valuation | Object | Company valuation information | | previous_rounds | Object | Information about previous funding rounds | | source_urls | String | Source URLs for the funding information | | original_report | String | Original report text about the funding | | market | String | The market the company operates in | | press_release_url | String | URL to the press release about the funding | | evaluation | Number | The company's valuation | Notes I found that by using perplexity via open router, we lose access to the sources, as they are not stored in the same location as the report itself so I opted to use perplexity API via HTTP node. For using perplexity and or jina you have to configure header auth as described in Header Auth - n8n Docs What you can learn How to scrape data using sitemaps How to extract strucutred data from unstructured text How to execute parts of the workflow as subworkflow How to use deep research in a practical scenario How to define more complex JSON schemas
by David Ashby
🛠️ Google Cloud Natural Language Tool MCP Server Complete MCP server exposing all Google Cloud Natural Language Tool operations to AI agents. Zero configuration needed - all 1 operations pre-built. ⚡ Quick Setup Need help? Want access to more workflows and even live Q&A sessions with a top verified n8n creator.. All 100% free? Join the community Import this workflow into your n8n instance Activate the workflow to start your MCP server Copy the webhook URL from the MCP trigger node Connect AI agents using the MCP URL 🔧 How it Works • MCP Trigger: Serves as your server endpoint for AI agent requests • Tool Nodes: Pre-configured for every Google Cloud Natural Language Tool operation • AI Expressions: Automatically populate parameters via $fromAI() placeholders • Native Integration: Uses official n8n Google Cloud Natural Language Tool tool with full error handling 📋 Available Operations (1 total) Every possible Google Cloud Natural Language Tool operation is included: 🔧 Document (1 operations) • Analyze sentiment 🤖 AI Integration Parameter Handling: AI agents automatically provide values for: • Resource IDs and identifiers • Search queries and filters • Content and data payloads • Configuration options Response Format: Native Google Cloud Natural Language Tool API responses with full data structure Error Handling: Built-in n8n error management and retry logic 💡 Usage Examples Connect this MCP server to any AI agent or workflow: • Claude Desktop: Add MCP server URL to configuration • Custom AI Apps: Use MCP URL as tool endpoint • Other n8n Workflows: Call MCP tools from any workflow • API Integration: Direct HTTP calls to MCP endpoints ✨ Benefits • Complete Coverage: Every Google Cloud Natural Language Tool operation available • Zero Setup: No parameter mapping or configuration needed • AI-Ready: Built-in $fromAI() expressions for all parameters • Production Ready: Native n8n error handling and logging • Extensible: Easily modify or add custom logic > 🆓 Free for community use! Ready to deploy in under 2 minutes.