{"workflow":{"id":12736,"name":"Create lyric posters from Spotify tracks with Musixmatch and OpenAI","views":47,"recentViews":0,"totalViews":47,"createdAt":"2026-01-15T16:37:45.981Z","description":"# Turn a song into a ready-to-hang poster, by using Musixmatch and AI\n\nThis n8n workflow turns a **song title and artist name into a gallery-ready poster** by combining **Musixmatch lyric intelligence** with a tightly controlled AI art direction pipeline.\n\nAt its core, Musixmatch is used to **identify the correct song and retrieve official lyrics**, which then drive a highly curated image-generation prompt and final poster artwork.\n\n---\n\n## What this workflow does\n\n1. **Trigger via chat**\n   - The workflow starts when a chat message is received.\n   - The user provides a **song title and artist name**.\n\n2. **Identify the correct track with Musixmatch**\n   - The **Musixmatch “Match track by metadata”** node is used to:\n     - Resolve ambiguities in song titles\n     - Confirm the correct track\n     - Retrieve a stable `commontrack_id`\n   - This ensures all downstream steps reference the *correct* song.\n\n3. **Retrieve full lyrics from Musixmatch**\n   - Using the confirmed `commontrack_id`, the **Musixmatch lyrics endpoint** fetches the official song lyrics.\n   - Lyrics are treated as authoritative source material for creative interpretation.\n\n4. **AI Agent selects and interprets a lyric**\n   - A dedicated AI Agent:\n     - Selects **one single-line lyric** (strictly enforced constraints)\n     - Analyzes its emotional and thematic meaning\n     - Interprets mood, tension, and implied narrative\n   - The lyric becomes the **conceptual anchor** of the poster.\n\n5. **AI Agent constructs a high-fidelity image prompt**\n   - The agent outputs a **fully structured, production-ready image-generation prompt** including:\n     - Song metadata (reference only)\n     - Emotional interpretation\n     - Visual style choice\n     - Composition and layout rules\n     - Typography and legibility constraints\n     - Quality and design guardrails\n   - No drafts, explanations, or partial output are allowed.\n\n6. **Generate the final poster image**\n   - The completed prompt is passed directly to the image generation node.\n   - The result is a **high-resolution, A4 portrait poster** designed to feel intentional, modern, and gallery-ready.\n\n\n## Output\n\n- A **single poster image** (1024×1536, A4 portrait ratio)\n- Features:\n  - One carefully chosen lyric line\n  - Clean, modern typography\n  - High-end contemporary poster design\n  - Subtle film grain\n  - Fully legible text and metadata\n\n---\n\n## Requirements\n\n- **Musixmatch API credentials**\n  - Track matching and lyric retrieval\n- **OpenAI API credentials**\n  - Language model for creative direction\n  - Image model for poster generation\n\n---\n\n## Use cases\n\n- Creating lyric posters for personal collections\n- Album or song promotion visuals\n- Editorial or social media artwork\n- Print-ready music-inspired posters\n- Exploring visual interpretations of song lyrics","workflow":{"meta":{"templateCredsSetupCompleted":true},"name":"SoTurn Spotify tracks into lyrics posters with Musixmatch and OpenAIng lyrics poster","nodes":[{"id":"c75dcdee-942c-449b-b185-c5c9e937af29","name":"Match track by metadata in Musixmatch","type":"@musixmatch/n8n-nodes-musixmatch.musixmatchTool","position":[448,496],"parameters":{"qTrack":"={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Track_Name', ``, 'string') }}","qArtist":"={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Artist_Name', ``, 'string') }}","operation":"matcherTrackGet"},"credentials":{"musixmatchApi":{"id":"oh4oJ2KVCsF38xDs","name":"Musixmatch account"}},"typeVersion":1},{"id":"0b5ae95f-c49f-404b-be02-b6f7ba5d28e1","name":"OpenAI Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[240,496],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-5.2","cachedResultName":"gpt-5.2"},"options":{},"builtInTools":{}},"credentials":{"openAiApi":{"id":"txVS4x5JxYCowQQz","name":"OpenAi account"}},"typeVersion":1.3},{"id":"f49b7641-3820-47cb-b127-f2b59d660e1f","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-784,96],"parameters":{"width":400,"height":468,"content":"## How it works\nThis workflow generates a printable lyrics poster from any Spotify song. A user submits a Spotify track URL via form, the workflow fetches the song metadata, retrieves lyrics from Musixmatch, selects the most impactful line, and generates a gallery-ready A4 poster using OpenAI image generation.\n\n## Setup steps\n1. **Spotify credentials**: Connect your Spotify app in the \"Get track metadata from Spotify\" node.\n2. **Musixmatch API key**: Add your API key to both Musixmatch tool nodes.\n3. **OpenAI API key**: Connect your OpenAI account in the \"Generate poster with OpenAI\" node.\n4. **Activate**: Click \"Test workflow\" or activate for production use.\n\nThe output is a 1024×1536 portrait image with the selected lyric and song credits."},"typeVersion":1},{"id":"20ba9aa3-bcd7-4b80-ba1a-9260816e0b5e","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[-272,96],"parameters":{"color":6,"width":184,"height":144,"content":"## Input\nCollects Spotify URL and extracts track ID"},"typeVersion":1},{"id":"ac40f1a8-32f9-4891-83f7-d516f66ccb7f","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[352,96],"parameters":{"color":6,"width":296,"height":144,"content":"## AI Processing\nMatches track, retrieves lyrics, selects best line, builds image prompt"},"typeVersion":1},{"id":"546eb78a-21a4-403b-9443-8599d691b57d","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[912,96],"parameters":{"color":6,"width":188,"height":144,"content":"## Output\nGenerates image and returns to user"},"typeVersion":1},{"id":"c023bc26-38f7-4ffd-99b9-c9444e11dff8","name":"Collect Spotify URL from form","type":"n8n-nodes-base.formTrigger","position":[-240,272],"webhookId":"ce8f3c5a-15a0-46dd-b6a3-c7b39c55d1af","parameters":{"options":{},"formTitle":"Create your lyrics poster","formFields":{"values":[{"fieldName":"Spotify track URL","fieldLabel":"Spotify track URL","placeholder":"https://open.spotify.com/track/2bwet19EI2xvhAlfMis6mH?si=a9b18878fa4c42be"}]},"responseMode":"lastNode","formDescription":"Paste a valid Spotify song URL to generate a lyrics poster"},"typeVersion":2.4},{"id":"7f4ea76a-0710-49ad-824b-25f88d71e27b","name":"Extract Spotify track ID","type":"n8n-nodes-base.code","position":[-32,272],"parameters":{"jsCode":"// Template-ready Spotify Track URL -> Track URI converter\n// -------------------------------------------------------\n// What this node does:\n// - Reads a Spotify track link (or a spotify:track:... URI) from the incoming item\n// - Extracts the 22-character track ID\n// - Outputs item.json.track_uri in the format: spotify:track:<trackId>\n//\n// How to use in your own template:\n// 1) Ensure your trigger provides a field containing the Spotify track URL/URI.\n// 2) Set INPUT_FIELD_NAME below to match that field name.\n// 3) Downstream nodes can reference: {{$json.track_uri}}\n//\n// Supported inputs:\n// - https://open.spotify.com/track/<trackId>?...\n// - spotify:track:<trackId>\n//\n// Not supported without an extra HTTP step:\n// - https://spoti.fi/<short>  (short URLs are redirects; you must expand them first)\n\nconst INPUT_FIELD_NAME = 'Spotify track URL'; // Change to your incoming field name if needed\n\nconst items = $input.all();\n\nfor (const item of items) {\n  // Read URL/URI from the expected field, plus a few common fallbacks\n  const source =\n    item.json[INPUT_FIELD_NAME] ??\n    item.json.url ??\n    item.json.spotifyUrl ??\n    item.json.spotify_track_url;\n\n  if (!source) {\n    throw new Error(\n      `Missing Spotify track input. Expected a field named \"${INPUT_FIELD_NAME}\" (or one of the fallbacks: url, spotifyUrl, spotify_track_url).`\n    );\n  }\n\n  // Extract the track ID (22 base62 chars)\n  const match =\n    String(source).match(/open\\.spotify\\.com\\/track\\/([A-Za-z0-9]{22})/) ||\n    String(source).match(/^spotify:track:([A-Za-z0-9]{22})$/);\n\n  if (!match) {\n    if (String(source).includes('spoti.fi/')) {\n      throw new Error(\n        'Short Spotify URL detected (spoti.fi). Add an HTTP Request node to follow redirects and obtain the final open.spotify.com URL before this node.'\n      );\n    }\n    throw new Error('Invalid Spotify track URL/URI. Could not find a 22-character track ID.');\n  }\n\n  const trackId = match[1];\n  item.json.track_uri = `spotify:track:${trackId}`;\n}\n\nreturn items;\n"},"typeVersion":2},{"id":"ca818415-08d5-423a-b64a-4f40afef695e","name":"Get track metadata from Spotify","type":"n8n-nodes-base.spotify","position":[192,272],"parameters":{"id":"={{ $json.track_uri }}","resource":"track","operation":"get"},"credentials":{"spotifyOAuth2Api":{"id":"3JOq6JeHE3hWVUxv","name":"Spotify Edo"}},"typeVersion":1},{"id":"f812d8b3-3b07-4571-8889-eac8ebaff7e4","name":"Select lyric and build image prompt","type":"@n8n/n8n-nodes-langchain.agent","position":[384,272],"parameters":{"text":"={{ $json.name }} by {{ $json.album.artists[0].name }}","options":{"systemMessage":"=You are a visual artist and creative director agent whose sole responsibility is to produce a complete, detailed image-generation prompt for a song-quote poster.\n\nYou do not generate images.\nYou only return the final image-generation prompt text.\n\nYou have access to:\n\t•\tmatch_track_by_metadata — identify the correct song\n\t•\tget_lyrics — retrieve full lyrics\n\nYou must follow the workflow exactly and in order.\nNo partial output. No drafts. No explanations.\n\n⸻\n\nMANDATORY WORKFLOW\n\n1) Identify the track\n\nUse match_track_by_metadata with the provided song title and artist name. Confirm the correct track.\n\n⸻\n\n2) Retrieve lyrics\n\nCall get_lyrics to retrieve the full lyrics.\n\n⸻\n\n3) Select the quote (strict rules)\n\nSelect one single-line lyric excerpt that best represents the emotional or thematic core of the song.\n\nHard constraints (non-negotiable):\n\t•\tExactly one line\n\t•\tNo line breaks\n\t•\tMaximum 90 characters\n\t•\tCopied verbatim from the lyrics\n\t•\tDo NOT wrap the line in quotation marks\n\t•\tDo not default to the chorus unless it is clearly the strongest line\n\nThis line is the only lyric text used in the poster.\n\n⸻\n\n4) Interpret meaning\n\nAnalyze the selected line for:\n\t•\tEmotional subtext\n\t•\tMood and tension\n\t•\tImplied narrative or feeling\n\nThink emotionally and conceptually, not literally.\n\n⸻\n\n5) Construct the image-generation prompt\n\nReturn a single, complete, self-contained, highly detailed image-generation prompt.\n\t•\tAll required sections must be present\n\t•\tTarget length: 250–450 words\n\t•\tIf any section is missing or incomplete, the output is invalid\n\n⸻\n\nREQUIRED IMAGE-GENERATION PROMPT STRUCTURE\n\n(Output exactly this structure, with headings)\n\n⸻\n\nSECTION 1 — Song Metadata (Reference Only)\n\t•\tSelected lyric (single line, no quotes):\n\t•\tSong title:\n\t•\tArtist name:\n\n⸻\n\nSECTION 2 — Concept & Emotional Interpretation\n\nDescribe the emotional meaning and atmosphere of the lyric. Focus on mood, implication, and tone rather than literal storytelling.\n\n⸻\n\nSECTION 3 — Style Choice (Adaptive)\n\nChoose the most appropriate visual style based on the lyric:\n\t•\tAbstract / modern\n\t•\tFigurative / conceptual\n\t•\tGraphic / design-led\n\nThe style must feel modern, witty, and intentional.\nDo not default to abstraction if a clearer figurative idea fits better.\n\n⸻\n\nSECTION 4 — Visual Direction & Composition\n\t•\tPoster format inspired by high-end contemporary design\n\t•\tStrong focal point and controlled negative space\n\t•\tIntentional composition with visual balance\n\t•\tNo borders, frames, watermarks, or signatures\n\t•\tNo random artifacts or meaningless objects\n\n⸻\n\nSECTION 5 — Format, Texture & Finish\n\t•\tAspect ratio: A4 paper size, portrait orientation\n\t•\tApply a very subtle, uniform film-like grain across the entire poster\n\t•\tGrain must be fine, understated, and non-destructive\n\t•\tMust not reduce text sharpness or legibility\n\n⸻\n\nSECTION 6 — Typography & Legibility (Strict)\n\nAll text must be perfectly legible. This is mandatory.\n\nMain lyric text:\n\t•\tIntegrated into the artwork (negative space, shapes, composition)\n\t•\tHigh contrast against background\n\t•\tClean, modern typography (sans-serif or refined serif)\n\t•\tNo quotation marks\n\t•\tNo warping, breaking, masking, or textural interference\n\t•\tNo blur, erosion, or overlapping elements\n\nSong title & artist (bottom-left corner):\n\t•\tSong title in small italic\n\t•\tArtist name directly below in bold, same small size\n\t•\tMust be fully visible, unobstructed, and sharp\n\t•\tNo objects, shapes, gradients, textures, or grain overlays may pass over or under this text\n\t•\tClear margin around metadata to guarantee readability\n\n⸻\n\nSECTION 7 — Quality Bar & Constraints\n\t•\tContemporary, gallery-ready poster\n\t•\tEmotionally resonant, clever, confident\n\t•\tFeels designed, not auto-generated\n\nNever do the following:\n\t•\tNever place quotation marks around the lyric\n\t•\tNever obscure or partially hide the song title or artist\n\t•\tNever sacrifice legibility for style\n\t•\tNever introduce extra symbols, pseudo-text, or filler objects\n\n⸻\n\nFINAL OUTPUT RULES\n\t•\tOutput only the complete image-generation prompt\n\t•\tInclude all sections\n\t•\tNo meta commentary\n\t•\tNo partial completion"},"promptType":"define","hasOutputParser":true},"typeVersion":3.1},{"id":"b2a94d26-069a-46ab-aeed-2e3af43cf504","name":"Get lyrics from Musixmatch","type":"@musixmatch/n8n-nodes-musixmatch.musixmatchTool","position":[592,496],"parameters":{"operation":"trackLyricsGet","commonTrackId":"={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Common_Track_ID', ``, 'string') }}"},"credentials":{"musixmatchApi":{"id":"oh4oJ2KVCsF38xDs","name":"Musixmatch account"}},"typeVersion":1},{"id":"6aa0f26c-4585-4896-aca3-6d16435b0831","name":"Generate poster with OpenAI","type":"@n8n/n8n-nodes-langchain.openAi","position":[752,272],"parameters":{"model":"gpt-image-1","prompt":"={{ $json.output }}","options":{"size":"1024x1536","quality":"high"},"resource":"image"},"credentials":{"openAiApi":{"id":"txVS4x5JxYCowQQz","name":"OpenAi account"}},"typeVersion":2.1},{"id":"ef650269-cf70-44e3-bf32-f49a4a91007d","name":"Return poster to user","type":"n8n-nodes-base.form","position":[960,272],"webhookId":"3e95d17d-b963-45ef-90e1-fd166d0bfbfc","parameters":{"options":{},"operation":"completion","respondWith":"returnBinary","completionTitle":"Your poster is ready","completionMessage":"Find the poster in your download folder!"},"typeVersion":2.4}],"pinData":{},"settings":{"availableInMCP":false,"executionOrder":"v1"},"staticData":null,"connections":{"OpenAI Chat Model":{"ai_languageModel":[[{"node":"Select lyric and build image prompt","type":"ai_languageModel","index":0}]]},"Extract Spotify track ID":{"main":[[{"node":"Get track metadata from Spotify","type":"main","index":0}]]},"Get lyrics from Musixmatch":{"ai_tool":[[{"node":"Select lyric and build image prompt","type":"ai_tool","index":0}]]},"Generate poster with OpenAI":{"main":[[{"node":"Return poster to user","type":"main","index":0}]]},"Collect Spotify URL from form":{"main":[[{"node":"Extract Spotify track ID","type":"main","index":0}]]},"Get track metadata from Spotify":{"main":[[{"node":"Select lyric and build image prompt","type":"main","index":0}]]},"Select lyric and build image prompt":{"main":[[{"node":"Generate poster with OpenAI","type":"main","index":0}]]},"Match track by metadata in Musixmatch":{"ai_tool":[[{"node":"Select lyric and build image prompt","type":"ai_tool","index":0}]]}},"triggerCount":0},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":13,"nodeTypes":{"n8n-nodes-base.code":{"count":1},"n8n-nodes-base.form":{"count":1},"n8n-nodes-base.spotify":{"count":1},"n8n-nodes-base.stickyNote":{"count":4},"n8n-nodes-base.formTrigger":{"count":1},"@n8n/n8n-nodes-langchain.agent":{"count":1},"@n8n/n8n-nodes-langchain.openAi":{"count":1},"@n8n/n8n-nodes-langchain.lmChatOpenAi":{"count":1},"@musixmatch/n8n-nodes-musixmatch.musixmatchTool":{"count":2}}},"status":"published","readyToDemo":null,"user":{"name":"Edoardo","username":"edoardo-pachera","bio":"","verified":false,"links":[],"avatar":"https://gravatar.com/avatar/15068cc48a64d5ff0fea9c095e4cd17b7518a2b6149bf10a887606a31eb275c7?r=pg&d=retro&size=200"},"nodes":[{"id":335,"icon":"file:spotify.svg","name":"n8n-nodes-base.spotify","codex":{"data":{"alias":["Music","Song"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.spotify/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/spotify/"}]},"categories":["Miscellaneous"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"input\"]","defaults":{"name":"Spotify"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgNjYgNjUiPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9ImEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBmaWxsPSIjMWVkNzYwIiBmaWxsLXJ1bGU9Im5vbnplcm8iIHN0cm9rZT0ibm9uZSIgZD0iTTMyIDBDMTQuMyAwIDAgMTQuMzM3IDAgMzJjMCAxNy43IDE0LjMzNyAzMiAzMiAzMiAxNy43IDAgMzItMTQuMzM3IDMyLTMyUzQ5LjY2MyAwIDMyIDBtMTQuNjggNDYuMTg0Yy0uNTczLjk1Ni0xLjc5NyAxLjIyMy0yLjc1My42NS03LjUzMi00LjU4OC0xNi45NzUtNS42Mi0yOC4xNC0zLjA5Ny0xLjA3LjIzLTIuMTQtLjQyLTIuMzctMS41cy40Mi0yLjE0IDEuNS0yLjM3YzEyLjE5Ni0yLjggMjIuNjctMS42MDYgMzEuMDgyIDMuNTU2YTIgMiAwIDAgMSAuNjg4IDIuNzUzem0zLjktOC43MTdjLS43MjYgMS4xODUtMi4yNTYgMS41My0zLjQ0Ljg0LTguNjAyLTUuMjc2LTIxLjcxNi02LjgwNS0zMS44ODUtMy43NDctMS4zMzguMzgyLTIuNzE0LS4zNDQtMy4wOTctMS42NDQtLjM4Mi0xLjMzOC4zNDQtMi43MTQgMS42ODItMy4wOTcgMTEuNjIyLTMuNTE3IDI2LjA3NC0xLjgzNSAzNS45NzYgNC4yNDQgMS4xNDcuNjg4IDEuNSAyLjIxNy43NjUgMy40MDN6bS4zNDQtOS4xYy0xMC4zMjMtNi4xMTctMjcuMzM2LTYuNy0zNy4yLTMuNzA4LTEuNTY4LjQ5Ny0zLjI1LS40Mi0zLjc0Ny0xLjk4OHMuNDItMy4yNSAxLjk4OC0zLjc0N2MxMS4zMTctMy40NCAzMC4xMjctMi43NTMgNDEuOTggNC4yODIgMS40MTUuODQgMS44NzMgMi42NzYgMS4wMzIgNC4xLS43NjUgMS40NTMtMi42MzggMS45MTItNC4wNTMgMS4wN3oiLz48L3N5bWJvbD48L3N2Zz4="},"displayName":"Spotify","typeVersion":1,"nodeCategories":[{"id":11,"name":"Miscellaneous"}]},{"id":565,"icon":"fa:sticky-note","name":"n8n-nodes-base.stickyNote","codex":{"data":{"alias":["Comments","Notes","Sticky"],"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\"]","defaults":{"name":"Sticky Note","color":"#FFD233"},"iconData":{"icon":"sticky-note","type":"icon"},"displayName":"Sticky Note","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":834,"icon":"file:code.svg","name":"n8n-nodes-base.code","codex":{"data":{"alias":["cpde","Javascript","JS","Python","Script","Custom Code","Function"],"details":"The Code node allows you to execute JavaScript in your workflow.","resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Code"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTcxXzQ0MSkiPgo8cGF0aCBkPSJNMTcwLjI4MyA0OEgxOTYuNUMyMDMuMTI3IDQ4IDIwOC41IDQyLjYyNzQgMjA4LjUgMzZWMTJDMjA4LjUgNS4zNzI1OCAyMDMuMTI3IDAgMTk2LjUgMEgxNzAuMjgzQzEyNi4xIDAgOTAuMjgzIDM1LjgxNzIgOTAuMjgzIDgwVjE3NkM5MC4yODMgMjA2LjkyOCA2NS4yMTA5IDIzMiAzNC4yODMgMjMySDIzQzE2LjM3MjYgMjMyIDExIDIzNy4zNzIgMTEgMjQ0VjI2OEMxMSAyNzQuNjI3IDE2LjM3MjQgMjgwIDIyLjk5OTYgMjgwTDM0LjI4MyAyODBDNjUuMjEwOSAyODAgOTAuMjgzIDMwNS4wNzIgOTAuMjgzIDMzNlY0NDBDOTAuMjgzIDQ3OS43NjQgMTIyLjUxOCA1MTIgMTYyLjI4MyA1MTJIMTk2LjVDMjAzLjEyNyA1MTIgMjA4LjUgNTA2LjYyNyAyMDguNSA1MDBWNDc2QzIwOC41IDQ2OS4zNzMgMjAzLjEyNyA0NjQgMTk2LjUgNDY0SDE2Mi4yODNDMTQ5LjAyOCA0NjQgMTM4LjI4MyA0NTMuMjU1IDEzOC4yODMgNDQwVjMzNkMxMzguMjgzIDMwOS4wMjIgMTI4LjAxMSAyODQuNDQzIDExMS4xNjQgMjY1Ljk2MUMxMDYuMTA5IDI2MC40MTYgMTA2LjEwOSAyNTEuNTg0IDExMS4xNjQgMjQ2LjAzOUMxMjguMDExIDIyNy41NTcgMTM4LjI4MyAyMDIuOTc4IDEzOC4yODMgMTc2VjgwQzEzOC4yODMgNjIuMzI2OSAxNTIuNjEgNDggMTcwLjI4MyA0OFoiIGZpbGw9IiNGRjk5MjIiLz4KPHBhdGggZD0iTTMwNSAzNkMzMDUgNDIuNjI3NCAzMTAuMzczIDQ4IDMxNyA0OEgzNDIuOTc5QzM2MC42NTIgNDggMzc0Ljk3OCA2Mi4zMjY5IDM3NC45NzggODBWMTc2QzM3NC45NzggMjAyLjk3OCAzODUuMjUxIDIyNy41NTcgNDAyLjA5OCAyNDYuMDM5QzQwNy4xNTMgMjUxLjU4NCA0MDcuMTUzIDI2MC40MTYgNDAyLjA5OCAyNjUuOTYxQzM4NS4yNTEgMjg0LjQ0MyAzNzQuOTc4IDMwOS4wMjIgMzc0Ljk3OCAzMzZWNDMyQzM3NC45NzggNDQ5LjY3MyAzNjAuNjUyIDQ2NCAzNDIuOTc5IDQ2NEgzMTdDMzEwLjM3MyA0NjQgMzA1IDQ2OS4zNzMgMzA1IDQ3NlY1MDBDMzA1IDUwNi42MjcgMzEwLjM3MyA1MTIgMzE3IDUxMkgzNDIuOTc5QzM4Ny4xNjEgNTEyIDQyMi45NzggNDc2LjE4MyA0MjIuOTc4IDQzMlYzMzZDNDIyLjk3OCAzMDUuMDcyIDQ0OC4wNTEgMjgwIDQ3OC45NzkgMjgwSDQ5MEM0OTYuNjI3IDI4MCA1MDIgMjc0LjYyOCA1MDIgMjY4VjI0NEM1MDIgMjM3LjM3MyA0OTYuNjI4IDIzMiA0OTAgMjMyTDQ3OC45NzkgMjMyQzQ0OC4wNTEgMjMyIDQyMi45NzggMjA2LjkyOCA0MjIuOTc4IDE3NlY4MEM0MjIuOTc4IDM1LjgxNzIgMzg3LjE2MSAwIDM0Mi45NzkgMEgzMTdDMzEwLjM3MyAwIDMwNSA1LjM3MjU4IDMwNSAxMlYzNloiIGZpbGw9IiNGRjk5MjIiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTcxXzQ0MSI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="},"displayName":"Code","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":1119,"icon":"fa:robot","name":"@n8n/n8n-nodes-langchain.agent","codex":{"data":{"alias":["LangChain","Chat","Conversational","Plan and Execute","ReAct","Tools"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Agents","Root Nodes"]}}},"group":"[\"transform\"]","defaults":{"name":"AI Agent","color":"#404040"},"iconData":{"icon":"robot","type":"icon"},"displayName":"AI Agent","typeVersion":3,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1153,"icon":"file:openAiLight.svg","name":"@n8n/n8n-nodes-langchain.lmChatOpenAi","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatopenai/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Chat Models (Recommended)"]}}},"group":"[\"transform\"]","defaults":{"name":"OpenAI Chat Model"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTM2Ljg2NzEgMTYuMzcxOEMzNy43NzQ2IDEzLjY0OCAzNy40NjIxIDEwLjY2NDIgMzYuMDEwOCA4LjE4NjYxQzMzLjgyODIgNC4zODY1MyAyOS40NDA3IDIuNDMxNDkgMjUuMTU1NiAzLjM1MTUxQzIzLjI0OTMgMS4yMDM5NiAyMC41MTA1IC0wLjAxNzMxNDggMTcuNjM5MiAwLjAwMDE4NTUzM0MxMy4yNTkxIC0wLjAwOTgxNDY4IDkuMzcyNzMgMi44MTAyNSA4LjAyNTIgNi45Nzc4M0M1LjIxMTM5IDcuNTU0MSAyLjc4MjU4IDkuMzE1MzggMS4zNjEzIDExLjgxMTdDLTAuODM3NDkzIDE1LjYwMTggLTAuMzM2MjMyIDIwLjM3OTQgMi42MDEzMyAyMy42Mjk0QzEuNjkzODEgMjYuMzUzMiAyLjAwNjMyIDI5LjMzNzEgMy40NTc2IDMxLjgxNDZDNS42NDAxNSAzNS42MTQ3IDEwLjAyNzcgMzcuNTY5NyAxNC4zMTI4IDM2LjY0OTdDMTYuMjE3OSAzOC43OTczIDE4Ljk1NzkgNDAuMDE4NSAyMS44MjkyIDM5Ljk5OThDMjYuMjExOCA0MC4wMTEgMzAuMDk5NCAzNy4xODg1IDMxLjQ0NjkgMzMuMDE3MUMzNC4yNjA4IDMyLjQ0MDkgMzYuNjg5NiAzMC42Nzk2IDM4LjExMDggMjguMTgzM0M0MC4zMDcxIDI0LjM5MzIgMzkuODA0NiAxOS42MTk0IDM2Ljg2ODMgMTYuMzY5M0wzNi44NjcxIDE2LjM3MThaTTIxLjgzMTcgMzcuMzg2QzIwLjA3OCAzNy4zODg1IDE4LjM3OTIgMzYuNzc0NyAxNy4wMzI5IDM1LjY1MDlDMTcuMDk0MSAzNS42MTg0IDE3LjIwMDQgMzUuNTU5NyAxNy4yNjkxIDM1LjUxNzJMMjUuMjM0MyAzMC45MTcxQzI1LjY0MTggMzAuNjg1OCAyNS44OTE4IDMwLjI1MjEgMjUuODg5MyAyOS43ODMzVjE4LjU1NDNMMjkuMjU1NyAyMC40OTgxQzI5LjI5MTkgMjAuNTE1NiAyOS4zMTU3IDIwLjU1MDYgMjkuMzIwNyAyMC41OTA2VjI5Ljg4OTZDMjkuMzE1NyAzNC4wMjQ3IDI1Ljk2NjggMzcuMzc3MiAyMS44MzE3IDM3LjM4NlpNNS43MjY0IDMwLjUwNzFDNC44NDc2MyAyOC45ODk2IDQuNTMxMzcgMjcuMjEwOCA0LjgzMjYzIDI1LjQ4NDVDNC44OTEzOCAyNS41MTk1IDQuOTk1MTMgMjUuNTgzMiA1LjA2ODg4IDI1LjYyNTdMMTMuMDM0MSAzMC4yMjU4QzEzLjQzNzggMzAuNDYyMSAxMy45Mzc4IDMwLjQ2MjEgMTQuMzQyOCAzMC4yMjU4TDI0LjA2NjggMjQuNjEwN1YyOC40OTgzQzI0LjA2OTMgMjguNTM4MyAyNC4wNTA1IDI4LjU3NyAyNC4wMTkzIDI4LjYwMkwxNS45Njc5IDMzLjI1MDlDMTIuMzgxNSAzNS4zMTU5IDcuODAxNDQgMzQuMDg4NCA1LjcyNzY1IDMwLjUwNzFINS43MjY0Wk0zLjYzMDEgMTMuMTIwNUM0LjUwNTEyIDExLjYwMDQgNS44ODY0IDEwLjQzNzkgNy41MzE0NCA5LjgzNDE1QzcuNTMxNDQgOS45MDI5IDcuNTI3NjkgMTAuMDI0MiA3LjUyNzY5IDEwLjEwOTJWMTkuMzEwNkM3LjUyNTE5IDE5Ljc3ODEgNy43NzUxOSAyMC4yMTE5IDguMTgxNDUgMjAuNDQzMUwxNy45MDU0IDI2LjA1N0wxNC41MzkxIDI4LjAwMDhDMTQuNTA1MyAyOC4wMjMzIDE0LjQ2MjggMjguMDI3IDE0LjQyNTMgMjguMDEwOEw2LjM3MjY2IDIzLjM1ODJDMi43OTM4MyAyMS4yODU2IDEuNTY2MzEgMTYuNzA2OCAzLjYyODg1IDEzLjEyMTdMMy42MzAxIDEzLjEyMDVaTTMxLjI4ODIgMTkuNTU2OUwyMS41NjQyIDEzLjk0MTdMMjQuOTMwNiAxMS45OTkyQzI0Ljk2NDMgMTEuOTc2NyAyNS4wMDY4IDExLjk3MjkgMjUuMDQ0MyAxMS45ODkyTDMzLjA5NyAxNi42MzhDMzYuNjgyMSAxOC43MDkzIDM3LjkxMDggMjMuMjk1NyAzNS44Mzk1IDI2Ljg4MDhDMzQuOTYzMyAyOC4zOTgzIDMzLjU4MzIgMjkuNTYwOCAzMS45Mzk1IDMwLjE2NThWMjAuNjg5NEMzMS45NDMyIDIwLjIyMTkgMzEuNjk0NSAxOS43ODk0IDMxLjI4OTQgMTkuNTU2OUgzMS4yODgyWk0zNC42MzgzIDE0LjUxNDJDMzQuNTc5NSAxNC40NzggMzQuNDc1OCAxNC40MTU1IDM0LjQwMiAxNC4zNzNMMjYuNDM2OCA5Ljc3Mjg5QzI2LjAzMzEgOS41MzY2NCAyNS41MzMxIDkuNTM2NjQgMjUuMTI4MSA5Ljc3Mjg5TDE1LjQwNDEgMTUuMzg4VjExLjUwMDRDMTUuNDAxNiAxMS40NjA0IDE1LjQyMDQgMTEuNDIxNyAxNS40NTE2IDExLjM5NjdMMjMuNTAzIDYuNzUxNThDMjcuMDg5NCA0LjY4Mjc5IDMxLjY3NDUgNS45MTQwNiAzMy43NDIgOS41MDE2NEMzNC42MTU4IDExLjAxNjcgMzQuOTMyIDEyLjc5MDUgMzQuNjM1OCAxNC41MTQySDM0LjYzODNaTTEzLjU3NDEgMjEuNDQzMUwxMC4yMDY1IDE5LjQ5OTRDMTAuMTcwMiAxOS40ODE5IDEwLjE0NjUgMTkuNDQ2OCAxMC4xNDE1IDE5LjQwNjhWMTAuMTA3OUMxMC4xNDQgNS45Njc4MSAxMy41MDI4IDIuNjEyNzQgMTcuNjQyOSAyLjYxNTI0QzE5LjM5NDIgMi42MTUyNCAyMS4wODkyIDMuMjMwMjUgMjIuNDM1NSA0LjM1MDI4QzIyLjM3NDMgNC4zODI3OCAyMi4yNjkzIDQuNDQxNTMgMjIuMTk5MiA0LjQ4NDAzTDE0LjIzNDEgOS4wODQxM0MxMy44MjY2IDkuMzE1MzggMTMuNTc2NiA5Ljc0Nzg5IDEzLjU3OTEgMTAuMjE2N0wxMy41NzQxIDIxLjQ0MDZWMjEuNDQzMVpNMTUuNDAyOSAxNy41MDA2TDE5LjczNDIgMTQuOTk5M0wyNC4wNjU1IDE3LjQ5OTNWMjIuNTAwN0wxOS43MzQyIDI1LjAwMDdMMTUuNDAyOSAyMi41MDA3VjE3LjUwMDZaIiBmaWxsPSIjN0Q3RDg3Ii8+Cjwvc3ZnPgo="},"displayName":"OpenAI Chat Model","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1225,"icon":"file:form.svg","name":"n8n-nodes-base.formTrigger","codex":{"data":{"alias":["table","submit","post"],"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.formtrigger/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Other Trigger Nodes"]}}},"group":"[\"trigger\"]","defaults":{"name":"On form submission"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0NiIgaGVpZ2h0PSI0MCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iIzAwQjdCQyIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMzQuOTc4IDM3LjczMmExLjU2IDEuNTYgMCAwIDEtMS41NjIgMS41NjNINi4yNmExLjU2IDEuNTYgMCAwIDEtMS41NjMtMS41NjNWOS42MDdjMC0uNDA1LjE1Ny0uNzk0LjQzOC0xLjA4Nmw2LjMwNC02LjUzMXY1LjM0NEg4LjIxM2ExLjE3MiAxLjE3MiAwIDEgMCAwIDIuMzQzaDQuNDNhMS4xNyAxLjE3IDAgMCAwIDEuMTcxLTEuMTcxVi4yMzJoMTkuNjAyYTEuNTYgMS41NiAwIDAgMSAxLjU2MiAxLjU2M3YxMC4zMjdsLTIuODYgMi44Ni04LjI1MiA4LjI3NmE0MTMuMDA2IDQxMy4wMDYgMCAwIDEtMS42NTQgMS42NjJsLS4zMzcuMzM3YTIgMiAwIDAgMC0uNTU3IDEuMDhMMjAuMyAzMS45MjJjLS4xMDguNjM4LS4yMTUgMS4wNzkuMjExIDEuNDE4LjQwMy4zMi45LjE3NCAxLjU0LjA2Nmw1LjQwOC0uOTI4YTIgMiAwIDAgMCAxLjA4LS41NTZsNi40NC02LjQyOXptLTI0LjAzLTIxLjI2NWExLjE4IDEuMTggMCAwIDAgMS4xNzEgMS4xNzJoMTMuMTYzYTEuMTcyIDEuMTcyIDAgMSAwIDAtMi4zNDRIMTIuMTE5YTEuMTcgMS4xNyAwIDAgMC0xLjE3MiAxLjE3Mm03LjI5NCAxNC43NjZhMS4xNyAxLjE3IDAgMCAwLTEuMTcyLTEuMTcySDEyLjEyYTEuMTcyIDEuMTcyIDAgMSAwIDAgMi4zNDNoNC45NTFhMS4xNyAxLjE3IDAgMCAwIDEuMTcyLTEuMTcybS44Ni03LjM5MWExLjE3IDEuMTcgMCAwIDAtMS4xNzItMS4xNzJoLTUuODExYTEuMTcyIDEuMTcyIDAgMSAwIDAgMi4zNDNoNS44MWExLjE2NCAxLjE2NCAwIDAgMCAxLjE3My0xLjE3MSIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0iIzAwQjdCQyIgZD0ibTMzLjUzMiAxNi4zOTcgNC4yODktNC4yODkgMy43NTggMy43MSAxLjYxNy0xLjYxNiAyLjI1OCAyLjI1N2MuMjE4LjIxOC4zNC41MTMuMzQzLjgyLS4wMDIuMzExLS4xMjUuNjA4LS4zNDQuODNsLTYuODA0IDYuNzk2YTEuMTMgMS4xMyAwIDAgMS0uODI4LjM0MyAxLjE1IDEuMTUgMCAwIDEtLjgyOC0uMzQzIDEuMTggMS4xOCAwIDAgMSAwLTEuNjU3bDUuOTc2LTUuOTY4LTEuMzEyLTEuMzEzLTEuMzgzIDEuNDE0LTEzLjE0OSAxMy4xMjUtNC42MTcuNzgyLjc4Mi00LjYxNy4zMzYtLjMzNyAyLjU2MiAyLjU1NWExLjEgMS4xIDAgMCAwIC44MjguMzQ0Yy4zMTIuMDA1LjYxMi0uMTIuODI4LS4zNDRhMS4xOCAxLjE4IDAgMCAwIDAtMS42NTZsLTIuNTYyLTIuNTYyek00NC43MzYgMTIuMjRjMCAuNDE0LS4xNjMuODEtLjQ1NCAxLjEwMmwtLjkyMi45MTQtMy44NTItMy44MjguOTMtLjkzYTEuNTYzIDEuNTYzIDAgMCAxIDIuMjAzIDBsMS42NCAxLjY0MWMuMjkxLjI5My40NTUuNjkuNDU1IDEuMTAyIi8+PC9zdmc+"},"displayName":"n8n Form Trigger","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":1250,"icon":"file:openAi.svg","name":"@n8n/n8n-nodes-langchain.openAi","codex":{"data":{"alias":["LangChain","ChatGPT","Sora","DallE","whisper","audio","transcribe","tts","assistant"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-langchain.openai/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Agents","Miscellaneous","Root Nodes"]}}},"group":"[\"transform\"]","defaults":{"name":"OpenAI"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTM2Ljg2NzEgMTYuMzcxOEMzNy43NzQ2IDEzLjY0OCAzNy40NjIxIDEwLjY2NDIgMzYuMDEwOCA4LjE4NjYxQzMzLjgyODIgNC4zODY1MyAyOS40NDA3IDIuNDMxNDkgMjUuMTU1NiAzLjM1MTUxQzIzLjI0OTMgMS4yMDM5NiAyMC41MTA1IC0wLjAxNzMxNDggMTcuNjM5MiAwLjAwMDE4NTUzM0MxMy4yNTkxIC0wLjAwOTgxNDY4IDkuMzcyNzMgMi44MTAyNSA4LjAyNTIgNi45Nzc4M0M1LjIxMTM5IDcuNTU0MSAyLjc4MjU4IDkuMzE1MzggMS4zNjEzIDExLjgxMTdDLTAuODM3NDkzIDE1LjYwMTggLTAuMzM2MjMyIDIwLjM3OTQgMi42MDEzMyAyMy42Mjk0QzEuNjkzODEgMjYuMzUzMiAyLjAwNjMyIDI5LjMzNzEgMy40NTc2IDMxLjgxNDZDNS42NDAxNSAzNS42MTQ3IDEwLjAyNzcgMzcuNTY5NyAxNC4zMTI4IDM2LjY0OTdDMTYuMjE3OSAzOC43OTczIDE4Ljk1NzkgNDAuMDE4NSAyMS44MjkyIDM5Ljk5OThDMjYuMjExOCA0MC4wMTEgMzAuMDk5NCAzNy4xODg1IDMxLjQ0NjkgMzMuMDE3MUMzNC4yNjA4IDMyLjQ0MDkgMzYuNjg5NiAzMC42Nzk2IDM4LjExMDggMjguMTgzM0M0MC4zMDcxIDI0LjM5MzIgMzkuODA0NiAxOS42MTk0IDM2Ljg2ODMgMTYuMzY5M0wzNi44NjcxIDE2LjM3MThaTTIxLjgzMTcgMzcuMzg2QzIwLjA3OCAzNy4zODg1IDE4LjM3OTIgMzYuNzc0NyAxNy4wMzI5IDM1LjY1MDlDMTcuMDk0MSAzNS42MTg1IDE3LjIwMDQgMzUuNTU5NyAxNy4yNjkxIDM1LjUxNzJMMjUuMjM0MyAzMC45MTcxQzI1LjY0MTggMzAuNjg1OCAyNS44OTE4IDMwLjI1MjEgMjUuODg5MyAyOS43ODMzVjE4LjU1NDNMMjkuMjU1NiAyMC40OTgxQzI5LjI5MTkgMjAuNTE1NiAyOS4zMTU3IDIwLjU1MDYgMjkuMzIwNyAyMC41OTA2VjI5Ljg4OTZDMjkuMzE1NyAzNC4wMjQ3IDI1Ljk2NjggMzcuMzc3MiAyMS44MzE3IDM3LjM4NlpNNS43MjY0IDMwLjUwNzFDNC44NDc2MyAyOC45ODk2IDQuNTMxMzcgMjcuMjEwOCA0LjgzMjYzIDI1LjQ4NDVDNC44OTEzOCAyNS41MTk1IDQuOTk1MTMgMjUuNTgzMiA1LjA2ODg4IDI1LjYyNTdMMTMuMDM0MSAzMC4yMjU4QzEzLjQzNzggMzAuNDYyMSAxMy45Mzc4IDMwLjQ2MjEgMTQuMzQyOCAzMC4yMjU4TDI0LjA2NjggMjQuNjEwN1YyOC40OTgzQzI0LjA2OTMgMjguNTM4MyAyNC4wNTA1IDI4LjU3NyAyNC4wMTkzIDI4LjYwMkwxNS45Njc5IDMzLjI1MDlDMTIuMzgxNSAzNS4zMTU5IDcuODAxNDQgMzQuMDg4NCA1LjcyNzY1IDMwLjUwNzFINS43MjY0Wk0zLjYzMDEgMTMuMTIwNUM0LjUwNTEyIDExLjYwMDQgNS44ODY0IDEwLjQzNzkgNy41MzE0NCA5LjgzNDE1QzcuNTMxNDQgOS45MDI5IDcuNTI3NjkgMTAuMDI0MSA3LjUyNzY5IDEwLjEwOTJWMTkuMzEwNkM3LjUyNTE5IDE5Ljc3ODEgNy43NzUxOSAyMC4yMTE5IDguMTgxNDUgMjAuNDQzMUwxNy45MDU0IDI2LjA1N0wxNC41MzkxIDI4LjAwMDhDMTQuNTA1MyAyOC4wMjMzIDE0LjQ2MjggMjguMDI3IDE0LjQyNTMgMjguMDEwOEw2LjM3MjY2IDIzLjM1ODJDMi43OTM4MyAyMS4yODU2IDEuNTY2MzEgMTYuNzA2OCAzLjYyODg1IDEzLjEyMTdMMy42MzAxIDEzLjEyMDVaTTMxLjI4ODIgMTkuNTU2OUwyMS41NjQyIDEzLjk0MTdMMjQuOTMwNiAxMS45OTkyQzI0Ljk2NDMgMTEuOTc2NyAyNS4wMDY4IDExLjk3MjkgMjUuMDQ0MyAxMS45ODkyTDMzLjA5NyAxNi42MzhDMzYuNjgyMSAxOC43MDkzIDM3LjkxMDggMjMuMjk1NyAzNS44Mzk1IDI2Ljg4MDhDMzQuOTYzMyAyOC4zOTgzIDMzLjU4MzIgMjkuNTYwOCAzMS45Mzk1IDMwLjE2NThWMjAuNjg5NEMzMS45NDMyIDIwLjIyMTkgMzEuNjk0NSAxOS43ODk0IDMxLjI4OTQgMTkuNTU2OUgzMS4yODgyWk0zNC42MzgzIDE0LjUxNDJDMzQuNTc5NSAxNC40NzggMzQuNDc1OCAxNC40MTU1IDM0LjQwMiAxNC4zNzNMMjYuNDM2OCA5Ljc3Mjg5QzI2LjAzMzEgOS41MzY2NCAyNS41MzMxIDkuNTM2NjQgMjUuMTI4MSA5Ljc3Mjg5TDE1LjQwNDEgMTUuMzg4VjExLjUwMDRDMTUuNDAxNiAxMS40NjA0IDE1LjQyMDQgMTEuNDIxNyAxNS40NTE2IDExLjM5NjdMMjMuNTAzIDYuNzUxNThDMjcuMDg5NCA0LjY4Mjc5IDMxLjY3NDUgNS45MTQwNiAzMy43NDIgOS41MDE2NEMzNC42MTU4IDExLjAxNjcgMzQuOTMyIDEyLjc5MDUgMzQuNjM1OCAxNC41MTQySDM0LjYzODNaTTEzLjU3NDEgMjEuNDQzMUwxMC4yMDY1IDE5LjQ5OTRDMTAuMTcwMiAxOS40ODE5IDEwLjE0NjUgMTkuNDQ2OCAxMC4xNDE1IDE5LjQwNjhWMTAuMTA3OUMxMC4xNDQgNS45Njc4MSAxMy41MDI4IDIuNjEyNzQgMTcuNjQyOSAyLjYxNTI0QzE5LjM5NDIgMi42MTUyNCAyMS4wODkyIDMuMjMwMjUgMjIuNDM1NSA0LjM1MDI4QzIyLjM3NDMgNC4zODI3OCAyMi4yNjkzIDQuNDQxNTMgMjIuMTk5MiA0LjQ4NDAzTDE0LjIzNDEgOS4wODQxM0MxMy44MjY2IDkuMzE1MzggMTMuNTc2NiA5Ljc0Nzg5IDEzLjU3OTEgMTAuMjE2N0wxMy41NzQxIDIxLjQ0MDZWMjEuNDQzMVpNMTUuNDAyOSAxNy41MDA2TDE5LjczNDIgMTQuOTk5M0wyNC4wNjU1IDE3LjQ5OTNWMjIuNTAwN0wxOS43MzQyIDI1LjAwMDdMMTUuNDAyOSAyMi41MDA3VjE3LjUwMDZaIiBmaWxsPSJibGFjayIvPgo8L3N2Zz4K"},"displayName":"OpenAI","typeVersion":2,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1274,"icon":"file:form.svg","name":"n8n-nodes-base.form","codex":{"data":{"alias":["_Form","form","table","submit","post","page","step","stage","multi"],"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.form/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\"]","defaults":{"name":"Form"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0NiIgaGVpZ2h0PSI0MCIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iIzAwQjdCQyIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMzQuOTc4IDM3LjczMmExLjU2IDEuNTYgMCAwIDEtMS41NjIgMS41NjNINi4yNmExLjU2IDEuNTYgMCAwIDEtMS41NjMtMS41NjNWOS42MDdjMC0uNDA1LjE1Ny0uNzk0LjQzOC0xLjA4Nmw2LjMwNC02LjUzMXY1LjM0NEg4LjIxM2ExLjE3MiAxLjE3MiAwIDEgMCAwIDIuMzQzaDQuNDNhMS4xNyAxLjE3IDAgMCAwIDEuMTcxLTEuMTcxVi4yMzJoMTkuNjAyYTEuNTYgMS41NiAwIDAgMSAxLjU2MiAxLjU2M3YxMC4zMjdsLTIuODYgMi44Ni04LjI1MiA4LjI3NmE0MTMuMDA2IDQxMy4wMDYgMCAwIDEtMS42NTQgMS42NjJsLS4zMzcuMzM3YTIgMiAwIDAgMC0uNTU3IDEuMDhMMjAuMyAzMS45MjJjLS4xMDguNjM4LS4yMTUgMS4wNzkuMjExIDEuNDE4LjQwMy4zMi45LjE3NCAxLjU0LjA2Nmw1LjQwOC0uOTI4YTIgMiAwIDAgMCAxLjA4LS41NTZsNi40NC02LjQyOXptLTI0LjAzLTIxLjI2NWExLjE4IDEuMTggMCAwIDAgMS4xNzEgMS4xNzJoMTMuMTYzYTEuMTcyIDEuMTcyIDAgMSAwIDAtMi4zNDRIMTIuMTE5YTEuMTcgMS4xNyAwIDAgMC0xLjE3MiAxLjE3Mm03LjI5NCAxNC43NjZhMS4xNyAxLjE3IDAgMCAwLTEuMTcyLTEuMTcySDEyLjEyYTEuMTcyIDEuMTcyIDAgMSAwIDAgMi4zNDNoNC45NTFhMS4xNyAxLjE3IDAgMCAwIDEuMTcyLTEuMTcybS44Ni03LjM5MWExLjE3IDEuMTcgMCAwIDAtMS4xNzItMS4xNzJoLTUuODExYTEuMTcyIDEuMTcyIDAgMSAwIDAgMi4zNDNoNS44MWExLjE2NCAxLjE2NCAwIDAgMCAxLjE3My0xLjE3MSIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0iIzAwQjdCQyIgZD0ibTMzLjUzMiAxNi4zOTcgNC4yODktNC4yODkgMy43NTggMy43MSAxLjYxNy0xLjYxNiAyLjI1OCAyLjI1N2MuMjE4LjIxOC4zNC41MTMuMzQzLjgyLS4wMDIuMzExLS4xMjUuNjA4LS4zNDQuODNsLTYuODA0IDYuNzk2YTEuMTMgMS4xMyAwIDAgMS0uODI4LjM0MyAxLjE1IDEuMTUgMCAwIDEtLjgyOC0uMzQzIDEuMTggMS4xOCAwIDAgMSAwLTEuNjU3bDUuOTc2LTUuOTY4LTEuMzEyLTEuMzEzLTEuMzgzIDEuNDE0LTEzLjE0OSAxMy4xMjUtNC42MTcuNzgyLjc4Mi00LjYxNy4zMzYtLjMzNyAyLjU2MiAyLjU1NWExLjEgMS4xIDAgMCAwIC44MjguMzQ0Yy4zMTIuMDA1LjYxMi0uMTIuODI4LS4zNDRhMS4xOCAxLjE4IDAgMCAwIDAtMS42NTZsLTIuNTYyLTIuNTYyek00NC43MzYgMTIuMjRjMCAuNDE0LS4xNjMuODEtLjQ1NCAxLjEwMmwtLjkyMi45MTQtMy44NTItMy44MjguOTMtLjkzYTEuNTYzIDEuNTYzIDAgMCAxIDIuMjAzIDBsMS42NCAxLjY0MWMuMjkxLjI5My40NTUuNjkuNDU1IDEuMTAyIi8+PC9zdmc+"},"displayName":"n8n Form","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]}],"categories":[{"id":31,"name":"Content Creation"},{"id":51,"name":"Multimodal AI"}],"image":[]}}