by Emilio Loewenstein
Description Save hours of manual reporting with this end-to-end automation. This workflow pulls campaign performance data (demo or live), generates a clear AI-powered executive summary, and compiles everything into a polished weekly report. The report is formatted in Markdown, automatically stored in Google Docs, and instantly shared with your team via Slack — no spreadsheets, no copy-paste, no delays. What it does ⏰ Runs on a schedule (e.g. every Monday morning) 📊 Collects performance metrics (Google Ads, Meta, TikTok, YouTube – demo data included) 🤖 Uses AI to summarize wins, issues, and recommendations 📝 Builds a structured Markdown report (totals, channel performance, top campaigns) 📄 Creates and updates a Google Doc with the report 💬 Notifies your team in Slack with topline numbers + direct report link 📧 Optionally email the report to stakeholders or clients Why it’s valuable Saves time** – no manual data aggregation Standardizes reporting** – same format and quality every week Adds insights** – AI highlights what matters most Improves transparency** – instant access via Docs, Slack, or Email Scales easily** – adapt to multiple clients or campaigns Professional delivery** – branded, polished reports on autopilot 💡 Extra recommendation: Connect to a Google Docs template to give your reports a professional, branded look.
by Punit
This n8n workflow automates the process of generating and publishing LinkedIn posts that align with your personal brand tone and trending tech topics. It uses OpenAI to create engaging content and matching visuals, posts it directly to LinkedIn, and sends a confirmation via Telegram with post details. 🔑 Key Features 🏷️ Random Hashtag Selection Picks a trending tag from a custom list for post inspiration. ✍️ AI-Generated Content GPT-4o crafts a LinkedIn-optimized post in your personal writing style. 🖼️ Custom Image Generation Uses OpenAI to generate a relevant image for visual appeal. 📤 Direct LinkedIn Publishing Posts are made automatically to your profile with public visibility. 📩 Telegram Notification You get a real-time Telegram alert with the post URL, tag, and timestamp. 📚 Writing Style Alignment Past posts are injected as examples to maintain a consistent tone. Ideal Use Case: Automate your daily or weekly LinkedIn presence with minimal manual effort while maintaining high-quality, relevant, and visually engaging posts.
by Nishant
Automated daily swing‑trade ideas from end‑of‑day (EOD) data, scored by an LLM, logged to Google Sheets, and pushed to Telegram. What this workflow does Fetches EOD quotes* for a chosen stock universe (example: *NSE‑100** via RapidAPI). Cleans & filters** the universe using simple technical/quality gates (e.g., price/volume sanity, avoid illiquid names). Packages market context* and feeds it to *OpenAI* with a strict *JSON schema* to produce *top swing‑trade recommendations** (entry, target, stop, rationale). Splits structured output* into rows and *logs* them to a *Google Sheet** for tracking. Sends an alert* with the day’s trade ideas to *Telegram** (channel or DM). Ideal for Retail traders who want a daily, hands‑off idea generator. PMs/engineers prototyping LLM‑assisted quant sidekicks. Creators who publish daily trade notes to their audience. Tech stack n8n** (orchestration) RapidAPI** (EOD quotes; pluggable data source) OpenAI** (LLM for idea generation) Google Sheets** (logging & performance tracker) Telegram** (alerts) Prerequisites RapidAPI key with access to an EOD quotes endpoint for your exchange. OpenAI API key. Google account with a Sheet named Trade_Recommendations_Tracker (or update the node). Telegram bot token (via @BotFather) and destination chat ID. > You can replace any of the above vendors with equivalents (e.g., Alpha Vantage, Twelve Data, Polygon, etc.). Only the HTTP Request + Format nodes need tweaks. Environment variables | Key | Example | Used in | | -------------------- | -------------------------- | --------------------- | | RAPIDAPI_KEY | xxxxxxxxxxxxxxxxxxxxxxxx | HTTP Request (quotes) | | OPENAI_API_KEY | sk-… | OpenAI node | | TELEGRAM_BOT_TOKEN | 123456:ABC-DEF… | Telegram node | | TELEGRAM_CHAT_ID | 5357385827 | Telegram node | Google Sheet schema Create a Sheet (tab: EOD_Ideas) with the headers: Date, Symbol, Direction, Entry, Target, StopLoss, Confidence, Reason, SourceModel, UniverseTag Node map (name → purpose) Trigger – Daily Market Close → Fires daily after market close (e.g., 4:15 PM IST). Prepare Stock List (NSE 100) → Provides stock symbols to analyze (static list or from a Sheet/API). Fetch EOD Data (RapidAPI) → Gets EOD data for all symbols in one or batched calls. Format EOD Data → Normalizes API response to a clean array (symbol, close, high, low, volume, etc.). Filter Valid Stock Data → Drops illiquid/invalid rows (e.g., volume > 200k, close > 50). Build LLM Prompt Input → Creates compact market context & JSON instructions for the model. Generate Swing Trade Ideas (OpenAI) → Returns strict JSON with top ideas. Split JSON Output (Trade‑wise) → Explodes the JSON array into individual items. Log Trade to Google Sheet → Appends each idea as a row. Send Trade Alert to Telegram → Publishes a concise summary to Telegram.
by Robert Breen
A hands-on starter workflow that teaches beginners how to: Pull rows from a Google Sheet Append a new record that mimics a form submission Generate AI-powered text with GPT-4o based on a “Topic” column Write the AI output back into the correct row using an update operation Along the way you’ll learn the three essential Google Sheets operations in n8n (read → append → update), see how to pass sheet data into an OpenAI node, and document each step with sticky-note instructions—perfect for anyone taking their first steps in no-code automation. 0️⃣ Prerequisites Google Sheets** Open Google Cloud Console → create / select a project. Enable Google Sheets API under APIs & Services. Create an OAuth Desktop credential and connect it in n8n. Share the spreadsheet with the Google account linked to the credential. OpenAI** Create a secret key at <https://platform.openai.com/account/api-keys>. In n8n → Credentials → New → choose OpenAI API and paste the key. Sample sheet to copy** (make your own copy and use its link) <https://docs.google.com/spreadsheets/d/15i9WIYpqc5lNd5T4VyM0RRptFPdi9doCbEEDn8QglN4/edit?usp=sharing> 1️⃣ Trigger Manual Trigger – lets you run on demand while learning. (Swap for a Schedule or Webhook once you automate.) 2️⃣ Read existing rows Node:** Get Rows from Google Sheets Reads every row from Sheet1 of your copied file. 3️⃣ Generate a demo row Node:** Generate 1 Row of Data (Set node) Pretends a form was submitted: Name, Email, Topic, Submitted = "Yes" 4️⃣ Append the new row Node:** Append Data to Google Operation append → writes to the first empty line. 5️⃣ Create a description with GPT-4o OpenAI Chat Model – uses your OpenAI credential. Write description (AI Agent) – prompt = the Topic. Structured Output Parser – forces JSON like: { "description": "…" }. 6️⃣ Update that same row Node:** Update Sheets data Operation update. Matches on column Email to update the correct line. Writes the new Description cell returned by GPT-4o. 7️⃣ Why this matters Demonstrates the three core Google Sheets operations: read → append → update. Shows how to enrich sheet data with an AI step and push the result right back. Sticky Notes provide inline docs so anyone opening the workflow understands the flow instantly. 👤 Need help? Robert Breen – Automation Consultant ✉️ robert.j.breen@gmail.com 🔗 <https://www.linkedin.com/in/robert-breen-29429625/>
by JinPark
🧩 Summary Easily digitize and organize your business cards! This workflow allows you to upload a business card image, automatically extract contact information using Google Gemini’s OCR & vision model, and save the structured data into a Notion database — no manual typing required. Perfect for teams or individuals who want to centralize client contact info in Notion after networking events or meetings. ⚙️ How it works Form Submission Upload a business card image (.jpg, .png, or .jpeg) through an n8n form. Optionally select a category (e.g., Partner, Client, Vendor). AI-Powered OCR (Google Gemini) The uploaded image is sent to Google Gemini Vision for intelligent text recognition and entity extraction. Gemini returns structured text data such as: { "Name": "Jung Hyun Park", "Position": "Head of Development", "Phone": "021231234", "Mobile": "0101231234", "Email": "abc@dc.com", "Company": "TOV", "Address": "6F, Donga Building, 212, Yeoksam-ro, Gangnam-gu, Seoul", "Website": "www.tov.com" } JSON Parsing & Cleanup The text response from Gemini is cleaned and parsed into a valid JSON object using a Code node. Save to Notion The parsed data is automatically inserted into your Notion database (Customer Business Cards). Fields such as Name, Email, Phone, Address, and Company are mapped to Notion properties. 🧠 Used Nodes Form Trigger** – Captures uploaded business card and category input Google Gemini (Vision)** – Extracts contact details from the image Code** – Parses Gemini’s output into structured JSON Notion** – Saves extracted contact info to your Notion database 📦 Integrations | Service | Purpose | Node Type | |----------|----------|-----------| | Google Gemini (PaLM) | Image-to-text extraction (OCR + structured entity parsing) | @n8n/n8n-nodes-langchain.googleGemini | | Notion | Contact data storage | n8n-nodes-base.notion | 🧰 Requirements A connected Google Gemini (PaLM) API credential A Notion integration with edit access to your database 🚀 Example Use Cases Digitize stacks of collected business cards after a conference Auto-save new partner contacts to your CRM database in Notion Build a searchable Notion-based contact directory Combine with Notion filters or rollups to manage client relationships 💡 Tips You can easily extend this workflow by adding an email notification node to confirm successful uploads. For multilingual cards, Gemini Vision handles mixed-language text recognition well. Adjust Gemini model (gemini-1.5-flash or gemini-1.5-pro) based on your accuracy vs. speed needs. 🧾 Template Metadata | Field | Value | |-------|--------| | Category | AI + Notion + OCR | | Difficulty | Beginner–Intermediate | | Trigger Type | Form Submission | | Use Case | Automate business card digitization | | Works with | Google Gemini, Notion |
by AI/ML API | D1m7asis
Who’s it for Teams and makers who want a plug-and-play vision bot: users send a photo in Telegram, the bot returns a concise description plus OCR text. No custom servers required—just n8n, a Telegram bot, and an AIMLAPI key. What it does / How it works The workflow listens for new Telegram messages, fetches the highest-resolution photo, converts it to base64, normalizes the MIME type, and calls AIMLAPI (GPT-4o Vision) via the HTTP Request node using the OpenAI-compatible messages format with an image_url data URI. The model returns a short caption and extracted text. The answer is sent back to the same Telegram chat. Requirements n8n instance (self-hosted or cloud) Telegram bot token (from @BotFather) AIMLAPI account and API key (OpenAI-compatible endpoint) How to set up Create a Telegram bot with @BotFather and copy the token. In n8n, add Telegram credentials (no hardcoded tokens in nodes). Add AIMLAPI credentials with your API key (base URL: https://api.aimlapi.com/v1). Import the workflow JSON and connect credentials in the nodes. Execute the trigger and send a photo to your bot to test. How to customize the workflow Modify the vision prompt (e.g., add brand, language, or formatting rules). Switch models within AIMLAPI (any vision-capable model using the same messages schema). Add an IF branch for text-only messages (reply with guidance). Log usage to Google Sheets or a database (user id, file id, response). Add rate limits, user allowlists, or Markdown formatting in Telegram responses. Increase timeouts/retries in the HTTP Request node for long-running images.
by Tomohiro Goto
🧠 How it works This workflow automatically transcribes and translates voice messages from Telegram to Slack, enabling seamless communication between Japanese and English speakers. In our real-world use case, our distributed team often sends short voice updates on Telegram — but most discussion happens on Slack. Before this workflow, we constantly asked: “Can someone write a summary of that voice message?” “I can’t understand what was said — is there a transcript?” “Can we translate this audio for our English-speaking teammates?” This workflow fixes that problem without changing anyone’s communication habits. Built with n8n, OpenAI Whisper, and GPT-4o-mini, it automatically: Detects when a voice message is posted on Telegram Downloads and transcribes it via Whisper Translates the text with GPT-4o-mini Posts the result in Slack — with flags 🇯🇵→🇺🇸 and username attribution ⚙️ Features 🎧 Voice-to-text transcription using OpenAI Whisper 🌐 Automatic JA ↔ EN detection and translation via GPT-4o-mini 💬 Clean Slack message formatting with flags, username, and original text 🔧 Easy to customize: adjust target languages, tone, or message style ⚡ Typical end-to-end time: under 10 seconds for short audio clips 💼 Use Cases Global teams** – Send quick voice memos in Telegram and share readable translations in Slack Project coordination** – Record updates while commuting and post bilingual notes automatically Remote check-ins** – Replace daily written reports with spoken updates Cross-language collaboration** – Let English and Japanese teammates stay perfectly synced 💡 Perfect for Bilingual creators and managers** working across Japan and Southeast Asia AI automation enthusiasts** who love connecting voice and chat platforms Teams using Telegram for fast communication** and Slack for structured workspaces 🧩 Notes Requires three credentials: TELEGRAM_BOT_TOKEN OPENAI_API_KEY_HEADER SLACK_BOT_TOKEN_HEADER Slack scopes: chat:write, files:write, channels:history You can change translation direction or add languages in the “Detect Language” → “Translate (OpenAI)” nodes. Keep audio files under 25 MB for Whisper processing. Always export your workflow with credentials OFF before sharing or publishing. ✨ Powered by OpenAI Whisper × GPT-4o-mini × n8n × Telegram Bot API × Slack API A complete multilingual voice-to-text bridge — connecting speech, translation, and collaboration across platforms. 🌍
by Atta
What it does Instead of manually checking separate apps for your calendar, weather, and news each morning, this workflow consolidates the most important information into a single, convenient audio briefing. The "Good Morning Podcast" is designed to be a 3-minute summary of your day ahead, delivered directly to you. It's multi-lingual and customizable, allowing you to start your day informed and efficiently. How it works The workflow executes in three parallel branches before merging the data to generate the final audio file. Weather Summary: It starts by taking a user-provided city and fetching the current 15-hour forecast from the OpenWeatherMap. It formats this information into a concise weather report. Calendar Summary: It securely connects to your Google Calendar to retrieve all of today's scheduled meetings and events. It then formats the schedule into a clear, readable summary. News Summary: It connects to the NewsAPI to perform two tasks: it fetches the top general headlines and also searches for articles based on user-defined keywords (e.g., "AI", "automation", "space exploration"). The collected headlines are then summarized using a Google Gemini node to create a brief news digest. Audio Generation and Delivery: All three text summaries (weather, calendar, and news) are merged into a single script. The workflow uses Google's Text-to-Speech (TTS) to generate the raw multi-speaker audio. A dedicated FFmpeg node then processes and converts this audio into the final MP3 format. The completed podcast is then sent directly to you via a Telegram Bot. Setup Instructions To get this workflow running, you will need to configure credentials for each of the external services and set your initial parameters. ⚠️ Important Prerequisite Install FFmpeg: The workflow requires the FFmpeg software package to be installed on the machine running your n8n instance (local or server). Please ensure it is installed and accessible in your system's PATH before running this workflow. Required Credentials OpenWeatherMap: Sign up for a free account at OpenWeatherMap and get your API key. Add the API key to your n8n OpenWeatherMap credentials. Google Calendar & Google AI (Gemini/TTS): You will need Google OAuth2 credentials for the Google Calendar node. You will also need credentials for the Google AI services (Gemini and Text-to-Speech). Follow the n8n documentation to create and add these credentials. NewsAPI: Get a free API key from NewsAPI.org. Add the API key to your n8n NewsAPI credentials. Telegram: Create a new bot by talking to the BotFather in your Telegram app. Copy the Bot Token it provides and add it to your n8n Telegram credentials. Send a message to your new bot and get your Chat ID from the Telegram Trigger node or another method. You will need this for the Telegram send node. Workflow Inputs In the first node (or when you run the workflow manually), you must provide the following initial data: name: Your first name for a personalized greeting. city: The city for your local weather forecast (e.g., "Amsterdam"). language: The language for the entire podcast output (e.g., "en-US", "nl-NL", "fa-IR"). news_keywords: A comma-separated list of topics you are interested in for the news summary (e.g., "n8n,AI,technology"). How to Adapt the Template This workflow is highly customizable. Here are several ways you can adapt it to fit your needs: Triggers Automate It:* The default trigger is manual. Change it to a *Schedule Trigger** to have your podcast automatically generated and sent to you at the same time every morning (e.g., 7:00 AM). Content Sources Weather:** In the "User Weather Map" node, you can change the forecast type or switch the units from metric to imperial. Calendar:** In the "Get Today Meetings" node, you can select a different calendar from your Google account (e.g., a shared work calendar instead of your personal one). News:** In the "Get Headlines From News Sources" node, change the country or category to get different top headlines. In the "Get Links From Keywords" node, update your keywords to track different topics. In the "Aggregate Headlines" (Gemini) node, you can modify the prompt to change the tone or length of the AI-generated news summary. Audio Generation Voice & Language:** The language is a starting parameter, but you can go deeper into the Google TTS nodes (Generate Virtual Parts, etc.) to select specific voices, genders, and speaking rates to create a unique podcast host style. Scripting:** Modify the Set and Merge nodes that construct the final script. You can easily change the greeting, the transition phrases between sections, or the sign-off message. Delivery Platform:** Don't use Telegram? Swap the Telegram node for a Slack node, Discord node, or even an Email node to send the MP3 file to your preferred platform. Message:** Customize the text message that is sent along with the audio file in the final node.
by Oussama
This n8n template creates an intelligent Ideation Agent 🤖 that captures your ideas from text and voice notes sent via Telegram. The assistant automatically transcribes your voice memos, analyzes the content with a powerful AI, and organizes it into a structured Google Sheet database. It's the perfect workflow for capturing inspiration whenever it strikes, just by talking or typing 💡. Use Cases: 🗣️ Text-Based Capture: Send any idea as a simple text message to your Telegram bot for instant processing. 🎙️ Voice-to-Idea: Record voice notes on the go. The workflow transcribes them into text and categorizes them automatically. 📂 Automated Organization: The AI agent intelligently structures each idea with a title, description, score, category, and priority level without any manual effort. 📊 Centralized Database: Build a comprehensive and well-organized library of all your ideas in Google Sheets, making it easy to search, review, and act upon them. How it works: Multi-Modal Input: The workflow starts with a Telegram Trigger that listens for incoming text messages and voice notes. Content-Based Routing: A Switch node detects the message type. Text messages are sent directly for processing, while audio files are routed for transcription. Voice Transcription: Voice messages are sent to the ElevenLabs API, which accurately converts the speech into text. Unified Input: Both the original text and the transcribed audio are passed to the AI Agent in a consistent format. AI Analysis & Structuring: An AI Agent, receives the text. It follows a detailed system prompt to analyze the idea and structure it into predefined fields: Idea, Idea Description, Idea Type, Score, Category, Priority, Status, and Complexity. Data Storage: The agent uses the Google Sheets Tool (add_row_tool) to seamlessly add the fully structured idea as a new row in your designated spreadsheet. Instant Confirmation: Once the idea is saved, the workflow sends a confirmation message back to you on Telegram, summarizing the captured idea. Requirements: 🌐 A Telegram Bot API token. 🤖 An AI provider with API access (the template uses Azure OpenAI, but can be adapted). 🗣️ An ElevenLabs API key for voice-to-text transcription. 📝 Google Sheets API credentials to connect to your database. Good to know: ⚠️ Before you start, make sure your Google Sheet has columns that exactly match the fields defined in the Agent's system prompt (e.g., "Idea ", "Idea Description ", "Idea Type", etc.). Note that some have a trailing space in the template. 🎤 The quality of the voice transcription is dependent on the clarity of your recorded audio. ✅ You can completely customize the AI's behavior, including all the categories, types, and scoring logic, by editing the system prompt in the Agent node. Customizing this workflow: ✏️ Modify Categories: To change the available Idea Type, Category/Domain, or Priority Level options, simply edit the list within the Agent node's system prompt. 🔄 Swap LLM: You can easily change the AI model by replacing the Azure OpenAI Chat Model node with another one, such as the standard OpenAI node or a local AI model. 🔗 Change Database: To save ideas to a different platform, just replace the add_row_tool1 (Google Sheets Tool) with a tool for another service like Notion, Airtable, or a database.
by Dhinesh Ravikumar
Who it's for Project managers, AI builders, and teams who want structured, automated meeting summaries with zero manual work. What it does This workflow monitors a Google Drive folder for new meeting notes (PDF/TXT), extracts text, summarizes it via OpenAI GPT-4o, groups tasks by sentiment, builds a styled HTML summary, and sends it via Gmail. How to set it up Connect Google Drive, OpenAI, and Gmail credentials. Point the Drive Trigger to your meeting notes folder. Paste the system prompt into the AI node. Set Gmail Email Type to HTML and Message to {{$json.email_html}}. Drop a test file and execute once. Requirements n8n account Google Drive, OpenAI, and Gmail credentials Non-scanned PDFs or plain text files Customization ideas Add Slack or Notion logging Support additional file types Translate summaries automatically Tags #ai #automation #productivity #gmail #drive #meeting-summary #openai
by Jay Emp0
Ebook to Audiobook Converter ▶️ Watch Full Demo Video What It Does Turn any PDF ebook into a professional audiobook automatically. Upload a PDF, get an MP3 audiobook in your Google Drive. Perfect for listening to books, research papers, or documents on the go. Example: Input PDF → Output Audiobook Key Features Upload PDF via web form → Get MP3 audiobook in Google Drive Natural-sounding AI voices (MiniMax Speech-02-HD) Automatic text extraction, chunking, and audio merging Customizable voice, speed, and emotion settings Processes long books in batches with smart rate limiting Perfect For Students**: Turn textbooks into study audiobooks Professionals**: Listen to reports and documents while commuting Content Creators**: Repurpose written content as audio Accessibility**: Make content accessible to visually impaired users Requirements | Component | Details | |-----------|---------| | n8n | Self-hosted ONLY (cannot run on n8n Cloud) | | FFmpeg | Must be installed in your n8n environment | | Replicate API | For MiniMax TTS (Sign up here) | | Google Drive | OAuth2 credentials + "Audiobook" folder | ⚠️ Important: This workflow does NOT work on n8n Cloud because FFmpeg installation is required. Quick Setup 1. Install FFmpeg Docker users: docker exec -it <n8n-container-name> /bin/bash apt-get update && apt-get install -y ffmpeg Native installation: sudo apt-get install ffmpeg # Linux brew install ffmpeg # macOS 2. Get API Keys Replicate**: Sign up at replicate.com and copy your API token Google Drive**: Set up OAuth2 in n8n and create an "Audiobook" folder in Drive 3. Import & Configure Import n8n.json into your n8n instance Replace the Replicate API token in the "MINIMAX TTS" node Configure Google Drive credentials and select your "Audiobook" folder Activate the workflow Cost Estimate | Component | Cost | |-----------|------| | MiniMax TTS API | $0.15 per 1000 characters ($3-5 for average book) | | Google Drive Storage | Free (up to 15GB) | | Processing Time | ~1-2 minutes per 10 pages | How It Works PDF Upload → Extract Text → Split into Chunks → Convert to Speech (batches of 5) → Merge Audio Files (FFmpeg) → Upload to Google Drive The workflow uses four main modules: Extraction: PDF text extraction and intelligent chunking Conversion: MiniMax TTS processes text in batches Merging: FFmpeg combines all audio files seamlessly Upload: Final audiobook saved to Google Drive Voice Settings (Customizable) { "voice_id": "Friendly_Person", "emotion": "happy", "speed": 1, "pitch": 0 } Available emotions: happy, neutral, sad, angry, excited Limitations ⚠️ Self-hosted n8n ONLY (not compatible with n8n Cloud) PDF files only (not EPUB, MOBI, or scanned images) Large books (500+ pages) take longer to process Requires FFmpeg installation (see setup above) Troubleshooting FFmpeg not found? Docker: Run docker exec -it <container> /bin/bash then apt-get install ffmpeg Native: Run sudo apt-get install ffmpeg (Linux) or brew install ffmpeg (macOS) Rate limit errors? Increase wait time in the "WAITS FOR 5 SECONDS" node to 10-15 seconds Google Drive upload fails? Make sure you created the "Audiobook" folder in your Google Drive Reconfigure OAuth2 credentials in n8n Created by emp0 | More workflows: n8n Gallery
by RealSimple Solutions
POML → Prompt/Messages (No-Deps) What this does Turns POML markup into either a single Markdown prompt or chat-style messages\[] — using a zero-dependency n8n Code node. It supports variable substitution (via context), basic components (headings, lists, code, images, tables, line breaks), and optional schema-driven validation using componentSpec + attributeSpec. Credits Created by Real Simple Solutions as an n8n template friendly POML compiler (no dependencies) for full POML feature parity. View more of our _templates here_ Who’s it for Teams who author prompts in POML and want a template-safe way to turn them into either a single Markdown prompt or chat-style messages—without installing external modules. Works on n8n Cloud and self-hosted. What it does This workflow converts POML into: prompt** (Markdown) for single-shot models, or messages[]** (system|user|assistant) for chat APIs when speakerMode is true. It supports variable substitution via a context object ({{dot.path}}), lists, headings, code blocks, images (incl. base64 → data: URL), tables from JSON (records/columns), and basic message components. How it works Set (Specs & Context):** Provide componentSpec (allowed attrs per tag), attributeSpec (typing/coercion), and optional context. Code (POML → Prompt/Messages):** A zero-dependency compiler parses the POML and emits prompt or messages[]. > Add a yellow Sticky Note that includes this description and any setup links. Use additional neutral sticky notes to explain each step. How to set up Import the template. Open the first Set node and paste your componentSpec, attributeSpec, and context (examples included). In the Code node, choose: speakerMode: true to get messages[], or false for a single prompt. listStyle: dash | star | plus | decimal | latin. Run → inspect prompt/messages in the output. Requirements No credentials or community nodes. Works without external libraries (template-compliant). How to customize Add message tags (<system-msg>, <user-msg>, <ai-msg>) in your POML when using speakerMode: true. Extend componentSpec/attributeSpec to validate or coerce additional tags/attributes. Preformat arrays in context (e.g., bulleted, csv) for display, or add a small Set node to build them on the fly. Rename nodes and keep all user-editable fields grouped in the first Set node. Security & best practices Never** hardcode API keys in nodes. Remove any personal IDs before publishing. Keep your Sticky Note(s) up to date and instructional.