[System]
Tu es un expert n8n. Crée des workflows JSON complets et fonctionnels.
Utilise <thinking> pour expliquer ton raisonnement avant de générer le JSON.
Structure ton thinking: analyse du besoin, choix du trigger, architecture, flux de données, points d'attention.

[User] Génère un workflow n8n: Generate & Auto-post AI Videos to Social Media with Veo3 and Blotato

[Assistant]
<thinking>
**Analyse du besoin**

Cette automatisation répond à un besoin critique des créateurs de contenu modernes : la production et distribution massive de vidéos courtes sur les réseaux sociaux. Le workflow vise à éliminer les goulots d'étranglement traditionnels que sont la création manuelle de contenu vidéo et la publication multi-plateforme. Avec Veo3 comme moteur de génération IA et Blotato pour la distribution automatisée, nous créons une pipeline complète qui transforme une simple idée ou prompt en contenu publié sur Instagram et TikTok. Le défi principal est de maintenir la qualité et la cohérence du contenu tout en maximisant l'efficacité temporelle.

**Choix techniques**

L'intégration de Veo3 est stratégique car il représente une technologie de pointe en génération vidéo IA, capable de produire des contenus de qualité professionnelle à partir de simples descriptions textuelles. Le choix de Blotato comme hub de distribution permet de centraliser la gestion multi-plateforme, évitant les API complexes de chaque réseau social. L'architecture en 26 nœuds suggère une sophistication importante avec probablement : des nœuds de configuration et paramétrage, des étapes de validation du contenu généré, des mécanismes de retry en cas d'échec, des transformations de format spécifiques à chaque plateforme, et des systèmes de logging pour le suivi des performances.

**Architecture**

Le workflow suit probablement une structure en trois phases distinctes. La phase d'input comprend la réception du prompt utilisateur, la validation et l'enrichissement du contenu textuel, potentiellement avec des nœuds de traitement NLP pour optimiser les descriptions. La phase de génération intègre l'API Veo3 avec gestion des files d'attente, monitoring du statut de génération, téléchargement et validation de la vidéo produite. La phase de distribution implique la transformation du contenu pour chaque plateforme (ratios, durées, métadonnées), la publication via Blotato, et la confirmation des posts. Des nœuds de gestion d'erreurs et de notification complètent l'ensemble pour assurer la robustesse opérationnelle.

**Points d'attention**

La gestion des quotas API est critique, particulièrement pour Veo3 qui peut avoir des limitations strictes sur le nombre de générations quotidiennes. Il faut implémenter une logique de queue intelligente et des mécanismes de fallback. La qualité du contenu généré nécessite une validation automatisée, potentiellement avec des seuils de qualité et des options de régénération. Les spécificités techniques de chaque plateforme (formats, ratios, durées maximales) doivent être parfaitement maîtrisées pour éviter les rejets. La sécurité des tokens API et la gestion des credentials sont essentielles. Enfin, un système de monitoring et d'analytics permettra d'optimiser les performances et d'identifier les contenus les plus engageants pour affiner les prompts futurs.
</thinking>

{"id":"eFkkWqS5KdrxZ43P","meta":{"instanceId":"a2b23892dd6989fda7c1209b381f5850373a7d2b85609624d7c2b7a092671d44","templateCredsSetupCompleted":true},"name":"Automate video creation with Veo3 and auto-post to Instagram, TikTok via Blotato - vide","tags":[],"nodes":[{"id":"45a5a9f4-fe6a-43a7-a032-c69750826209","name":"Assign Social Media IDs","type":"n8n-nodes-base.set","position":[420,1680],"parameters":{"mode":"raw","options":{},"jsonOutput":"{\n  \"instagram_id\": \"1111\",\n  \"youtube_id\": \"1111\",\n  \"threads_id\": \"1111\",\n  \"tiktok_id\": \"1111\",\n  \"facebook_id\": \"1111\",\n  \"facebook_page_id\": \"1111\",\n  \"twitter_id\": \"1111\",\n  \"linkedin_id\": \"1111\",\n  \"pinterest_id\": \"1111\",\n  \"pinterest_board_id\": \"1111\",\n  \"bluesky_id\": \"1111\"\n}\n"},"typeVersion":3.4},{"id":"6d125a85-b626-4981-8cfc-bcac4ea0ca89","name":"Get my video","type":"n8n-nodes-base.googleSheets","position":[520,1440],"parameters":{"options":{},"sheetName":{"__rl":true,"mode":"id","value":"="},"documentId":{"__rl":true,"mode":"id","value":"="}},"typeVersion":4.5},{"id":"779818a1-97bd-4bf9-ba17-995c1439df6f","name":"Upload Video to Blotato","type":"n8n-nodes-base.httpRequest","position":[640,1680],"parameters":{"url":"https://backend.blotato.com/v2/media","method":"POST","options":{},"sendBody":true,"sendHeaders":true,"bodyParameters":{"parameters":[{"name":"url","value":"={{ $('Get my video').item.json['final_output'] }}"}]},"headerParameters":{"parameters":[{"name":"blotato-api-key","value":"YOUR_API_HERE"}]}},"typeVersion":4.2},{"id":"113d635c-bf8f-4ed3-801e-de78b0df9437","name":"INSTAGRAM","type":"n8n-nodes-base.httpRequest","position":[920,1440],"parameters":{"url":"https://backend.blotato.com/v2/posts","method":"POST","options":{},"jsonBody":"={\n  \"post\": {\n    \"accountId\": \"{{ $('Assign Social Media IDs').item.json.instagram_id }}\",\n    \"target\": {\n      \"targetType\": \"instagram\"\n    },\n    \"content\": {\n      \"text\": \"{{ $('Get my video').item.json.DESCRIPTION }}\",\n      \"platform\": \"instagram\",\n      \"mediaUrls\": [\n        \"{{ $json.url }}\"\n      ]\n    }\n  }\n}\n\n","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"blotato-api-key","value":"YOUR_API_HERE"}]}},"typeVersion":4.2},{"id":"02aa72ee-e5b9-44ee-9cbf-e8ddbc259570","name":"YOUTUBE","type":"n8n-nodes-base.httpRequest","position":[1140,1440],"parameters":{"url":"https://backend.blotato.com/v2/posts","method":"POST","options":{},"jsonBody":"={\n  \"post\": {\n    \"accountId\": \"{{ $('Assign Social Media IDs').item.json.youtube_id }}\",\n    \"target\": {\n      \"targetType\": \"youtube\",\n      \"title\": \"{{ $('Get my video').item.json.Titre }}\",\n      \"privacyStatus\": \"unlisted\",\n      \"shouldNotifySubscribers\": \"false\"\n    },\n    \"content\": {\n      \"text\": \"{{ $('Get my video').item.json.DESCRIPTION }}\",\n      \"platform\": \"youtube\",\n      \"mediaUrls\": [\n        \"{{ $json.url }}\"\n      ]\n    }\n  }\n}\n","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"blotato-api-key","value":"YOUR_API_HERE"}]}},"typeVersion":4.2},{"id":"b9e82889-b753-43e7-b417-213a99763802","name":"TIKTOK","type":"n8n-nodes-base.httpRequest","position":[1340,1440],"parameters":{"url":"https://backend.blotato.com/v2/posts","method":"POST","options":{},"jsonBody":"={\n  \"post\": {\n    \"accountId\": \"{{ $('Assign Social Media IDs').item.json.tiktok_id }}\",\n    \"target\": {\n      \"targetType\": \"tiktok\",\n      \"isYourBrand\": \"false\", \n      \"disabledDuet\": \"false\",\n      \"privacyLevel\": \"PUBLIC_TO_EVERYONE\",\n      \"isAiGenerated\": \"true\",\n      \"disabledStitch\": \"false\",\n      \"disabledComments\": \"false\",\n      \"isBrandedContent\": \"false\"\n      \n    },\n    \"content\": {\n      \"text\": \"{{ $('Get my video').item.json.DESCRIPTION }}\",\n      \"platform\": \"tiktok\",\n      \"mediaUrls\": [\n        \"{{ $json.url }}\"\n      ]\n    }\n  }\n}\n","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"blotato-api-key","value":"=YOUR_API_HERE"}]}},"typeVersion":4.2},{"id":"edf4cd31-ae48-4996-816e-8a32ac411e75","name":"FACEBOOK","type":"n8n-nodes-base.httpRequest","position":[920,1680],"parameters":{"url":"https://backend.blotato.com/v2/posts","method":"POST","options":{},"jsonBody":"={\n  \"post\": {\n    \"accountId\": \"{{ $('Assign Social Media IDs').item.json.facebook_id }}\",\n    \"target\": {\n      \"targetType\": \"facebook\",\n      \"pageId\": \"{{ $('Assign Social Media IDs').item.json.facebook_page_id }}\"\n\n      \n    },\n    \"content\": {\n      \"text\": \"{{ $('Get my video').item.json.DESCRIPTION }}\",\n      \"platform\": \"facebook\",\n      \"mediaUrls\": [\n        \"{{ $json.url }}\"\n      ]\n    }\n  }\n}","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"blotato-api-key","value":"=YOUR_API_HERE"}]}},"typeVersion":4.2},{"id":"edeb50af-020e-4118-af73-2a4fbb3bf6a2","name":"THREADS","type":"n8n-nodes-base.httpRequest","position":[1140,1680],"parameters":{"url":"https://backend.blotato.com/v2/posts","method":"POST","options":{},"jsonBody":"={\n  \"post\": {\n    \"accountId\": \"{{ $('Assign Social Media IDs').item.json.threads_id }}\",\n    \"target\": {\n      \"targetType\": \"threads\"\n      \n    },\n    \"content\": {\n      \"text\": \"{{ $('Get my video').item.json.DESCRIPTION }}\",\n      \"platform\": \"threads\",\n      \"mediaUrls\": [\n        \"{{ $json.url }}\"\n      ]\n    }\n  }\n}\n","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"blotato-api-key","value":"YOUR_API_HERE"}]}},"typeVersion":4.2},{"id":"210e36e9-8db2-403c-b72a-2ec45bce2eae","name":"TWETTER","type":"n8n-nodes-base.httpRequest","position":[1340,1680],"parameters":{"url":"https://backend.blotato.com/v2/posts","method":"POST","options":{},"jsonBody":"={\n  \"post\": {\n    \"accountId\": \"{{ $('Assign Social Media IDs').item.json.twitter_id }}\",\n    \"target\": {\n      \"targetType\": \"twitter\"\n      \n    },\n    \"content\": {\n      \"text\": \"{{ $('Get my video').item.json.DESCRIPTION }}\",\n      \"platform\": \"twitter\",\n      \"mediaUrls\": [\n        \"{{ $json.url }}\"\n      ]\n    }\n  }\n}\n","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"blotato-api-key","value":"YOUR_API_HERE"}]}},"typeVersion":4.2},{"id":"ac3069e4-4fe6-4146-a0e2-973b3c374c55","name":"LINKEDIN","type":"n8n-nodes-base.httpRequest","position":[920,1920],"parameters":{"url":"https://backend.blotato.com/v2/posts","method":"POST","options":{},"jsonBody":"={\n  \"post\": {\n    \"accountId\": \"{{ $('Assign Social Media IDs').item.json.linkedin_id }}\",\n    \"target\": {\n      \"targetType\": \"linkedin\"\n      \n    },\n    \"content\": {\n      \"text\": \"{{ $('Get my video').item.json.DESCRIPTION }}\",\n      \"platform\": \"linkedin\",\n      \"mediaUrls\": [\n        \"{{ $json.url }}\"\n      ]\n    }\n  }\n}\n","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"blotato-api-key","value":"YOUR_API_HERE"}]}},"typeVersion":4.2},{"id":"d9c919d8-ae9c-47cf-9b6f-8cb3e7e1f500","name":"BLUESKY","type":"n8n-nodes-base.httpRequest","position":[1140,1920],"parameters":{"url":"https://backend.blotato.com/v2/posts","method":"POST","options":{},"jsonBody":"= {\n  \"post\": {\n    \"accountId\": \"{{ $('Assign Social Media IDs').item.json.bluesky_id }}\",\n    \"target\": {\n      \"targetType\": \"bluesky\"\n      \n    },\n    \"content\": {\n      \"text\": \"{{ $('Get my video').item.json.DESCRIPTION }}\",\n      \"platform\": \"bluesky\",\n      \"mediaUrls\": [\n        \"https://pbs.twimg.com/media/GE8MgIiWEAAfsK3.jpg\"\n      ]\n    }\n  }\n}\n","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"blotato-api-key","value":"YOUR_API_HERE"}]}},"typeVersion":4.2},{"id":"a0a0a8fe-f6b0-458c-846e-409200a7b12f","name":"PINTEREST","type":"n8n-nodes-base.httpRequest","position":[1340,1920],"parameters":{"url":"https://backend.blotato.com/v2/posts","method":"POST","options":{},"jsonBody":"={\n  \"post\": {\n    \"accountId\": \"{{ $('Assign Social Media IDs').item.json.pinterest_id }}\",\n    \"target\": {\n      \"targetType\": \"pinterest\",\n      \"boardId\": \"{{ $('Assign Social Media IDs').item.json.pinterest_board_id }}\"      \n    },\n    \"content\": {\n      \"text\": \"{{ $('Get my video').item.json.DESCRIPTION }}\",\n      \"platform\": \"pinterest\",\n      \"mediaUrls\": [\n        \"https://pbs.twimg.com/media/GE8MgIiWEAAfsK3.jpg\"\n      ]\n    }\n  }\n}\n\n","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"blotato-api-key","value":"YOUR_API_HERE"}]}},"typeVersion":4.2},{"id":"38c75425-36a5-45c7-98cb-ed5eb20af249","name":"Google Sheets","type":"n8n-nodes-base.googleSheets","position":[640,1920],"parameters":{"columns":{"value":{"STATUS":"Publish","row_number":"={{ $('Get my video').item.json.row_number }}"},"schema":[{"id":"PROMPT","type":"string","display":true,"required":false,"displayName":"PROMPT","defaultMatch":false,"canBeUsedToMatch":true},{"id":"DESCRIPTION","type":"string","display":true,"required":false,"displayName":"DESCRIPTION","defaultMatch":false,"canBeUsedToMatch":true},{"id":"URL VIDEO","type":"string","display":true,"required":false,"displayName":"URL VIDEO","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Titre","type":"string","display":true,"required":false,"displayName":"Titre","defaultMatch":false,"canBeUsedToMatch":true},{"id":"STATUS","type":"string","display":true,"required":false,"displayName":"STATUS","defaultMatch":false,"canBeUsedToMatch":true},{"id":"row_number","type":"string","display":true,"removed":false,"readOnly":true,"required":false,"displayName":"row_number","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["row_number"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"update","sheetName":{"__rl":true,"mode":"id","value":"="},"documentId":{"__rl":true,"mode":"id","value":"="}},"typeVersion":4.5},{"id":"3ac616bc-67bb-494c-bd24-3753fc03e7dc","name":"Trigger: Run Daily Script Generator","type":"n8n-nodes-base.scheduleTrigger","position":[500,560],"parameters":{"rule":{"interval":[{}]}},"typeVersion":1.2},{"id":"8ae30b31-2ac9-4b62-9094-ce36197d319d","name":"AI Agent: Generate Video Concept","type":"@n8n/n8n-nodes-langchain.agent","position":[660,560],"parameters":{"text":"Give me an idea about [a Yeti speaking to a camera and doing a Vlog through his selfie stick]. ","options":{"systemMessage":"=You are an AI designed to generate 1 immersive, realistic idea based on a user-provided topic. Your output must be formatted as a JSON array (single line) and follow all the rules below exactly.\n\nRULES:\n\nOnly return 1 idea at a time.\n\nThe user will provide a key topic (e.g. “urban farming,” “arctic survival,” “street food in Vietnam”).\n\nThe Idea must:\n\nBe under 13 words.\n\nDescribe an interesting and viral-worthy moment, action, or event related to the provided topic.\n\nCan be as surreal as you can get, doesn't have to be real-world!\n\nInvolves a character.\n\nThe Caption must be:\n\nShort, punchy, and viral-friendly.\n\nInclude one relevant emoji.\n\nInclude exactly 12 hashtags in this order:\n** 4 topic-relevant hashtags\n** 4 all-time most popular hashtags\n** 4 currently trending hashtags (based on live research)\n\nAll hashtags must be lowercase.\n\nSet Status to \"for production\" (always).\n\nThe Environment must:\n\nBe under 20 words.\n\nMatch the action in the Idea exactly.\n\nClearly describe:\n\nWhere the event is happening (e.g. rooftop, jungle trail, city alley, frozen lake)\n\nKey visuals or background details (e.g. smoke rising, neon lights, fog, birds overhead)\n\nMain participants (e.g. farmer, cook, mechanic, rescue team, animal)\n\nStyle of scene (e.g. cinematic realism, handheld docu-style, aerial tracking shot, macro close-up)\n\nOk with fictional settings\n\nOUTPUT FORMAT (single-line JSON array):\n\n\n[\n  {\n    \"Caption\": \"Short viral title with emoji #4_topic_hashtags #4_all_time_popular_hashtags #4_trending_hashtags\",\n    \"Idea\": \"Short idea under 13 words\",\n    \"Environment\": \"Brief vivid setting under 20 words matching the action\",\n    \"Status\": \"for production\"\n  }\n]\n"},"promptType":"define","hasOutputParser":true},"typeVersion":1.9},{"id":"1685126b-bd11-4798-aae9-c676d6cf743d","name":"Tool: Inject Creativity","type":"@n8n/n8n-nodes-langchain.toolThink","position":[740,820],"parameters":{},"typeVersion":1},{"id":"30b4a035-33df-4826-972d-0ed2dd8fbed9","name":"LLM: Generate Idea & Caption (GPT-4.1)","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[580,820],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1","cachedResultName":"gpt-4.1"},"options":{}},"typeVersion":1.2},{"id":"c1e92152-aa05-43dd-8522-23f1514cf0ad","name":"Parser: Extract JSON from Idea","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[900,820],"parameters":{"jsonSchemaExample":"[\n  {\n    \"Caption\": \"Diver Removes Nets Off Whale 🐋 #whalerescue #marinelife #oceanrescue #seahelpers #love #nature #instagood #explore #viral #savenature #oceanguardians #cleanoceans\",\n    \"Idea\": \"Diver carefully cuts tangled net from distressed whale in open sea\",\n    \"Environment\": \"Open ocean, sunlight beams through water, diver and whale, cinematic realism\",\n    \"Status\": \"for production\"\n  }\n]\n"},"typeVersion":1.2},{"id":"432c7648-f9f9-4807-abf5-64d8f9a6bafb","name":"Google Sheets: Save Script Idea","type":"n8n-nodes-base.googleSheets","position":[1020,560],"parameters":{"columns":{"value":{"id":"==ROW()-1","idea":"={{ $json.output[0].Idea }}","caption":"={{ $json.output[0].Caption }}","production":"={{ $json.output[0].Status }}","environment_prompt":"={{ $json.output[0].Environment }}"},"schema":[{"id":"id","type":"string","display":true,"removed":false,"required":false,"displayName":"id","defaultMatch":true,"canBeUsedToMatch":true},{"id":"idea","type":"string","display":true,"required":false,"displayName":"idea","defaultMatch":false,"canBeUsedToMatch":true},{"id":"caption","type":"string","display":true,"required":false,"displayName":"caption","defaultMatch":false,"canBeUsedToMatch":true},{"id":"production","type":"string","display":true,"required":false,"displayName":"production","defaultMatch":false,"canBeUsedToMatch":true},{"id":"environment_prompt","type":"string","display":true,"required":false,"displayName":"environment_prompt","defaultMatch":false,"canBeUsedToMatch":true},{"id":"final_output","type":"string","display":true,"required":false,"displayName":"final_output","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["id"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"id","value":"="},"documentId":{"__rl":true,"mode":"id","value":"="}},"typeVersion":4.5},{"id":"02c2e969-0bb6-44fa-8707-37edc2cc77fd","name":"AI Agent: Create Veo3-Compatible Prompt","type":"@n8n/n8n-nodes-langchain.agent","position":[1180,560],"parameters":{"text":"=Give me a Veo3 prompt for this idea:\n{{ $json.idea }}\n\nThis is the environment:\n{{ $json.environment_prompt }}\n\n","options":{"systemMessage":"=SYSTEM PROMPT FOR GOOGLE VEO3 PROMPT AGENT\n\nYou are an AI agent that writes hyper-realistic, cinematic video prompts for Google VEO3. Each prompt should describe a short, vivid selfie-style video clip featuring one unnamed character speaking or acting in a specific moment. The final video should look like found footage or documentary-style film — grounded, realistic, and immersive.\n\nREQUIRED STRUCTURE (FILL IN THE BRACKETS BELOW):\n\n[Scene paragraph prompt here]\n\nMain character: [description of character]\nThey say: [insert one line of dialogue, fits the scene and mood].\nThey [describe a physical action or subtle camera movement, e.g. pans the camera, shifts position, glances around].\nTime of Day: [day / night / dusk / etc.]\nLens: [describe lens]\nAudio: (implied) [ambient sounds, e.g. lion growls, wind, distant traffic, birdsong]\nBackground: [brief restatement of what is visible behind them]\n\nRULES FOR PROMPT GENERATION\n\nSingle paragraph only, 750–1500 characters. No line breaks or headings.\n\nOnly one human character. Never give them a name.\n\nInclude one spoken line of dialogue and describe how it’s delivered.\n\nCharacter must do something physical, even if subtle (e.g. glance, smirk, pan camera).\n\nUse selfie-style framing. Always describe the lens, stock, and camera behavior.\n\nScene must feel real and cinematic — like a short clip someone might record on a stylized camera.\n\nAlways include the five key technical elements: Time of Day, Lens, Film Stock, Audio, and Background.\n\nDO NOT DO THIS:\n\nDon’t name the character.\n\nDon’t include more than one character.\n\nDon’t describe subtitles or on-screen text.\n\nDon’t break the paragraph or use formatting.\n\nDon’t write vague or abstract scenes — always keep them grounded in physical detail."},"promptType":"define","hasOutputParser":true},"typeVersion":1.9},{"id":"010485e3-7b3f-496b-bcd5-05087a41805c","name":"Tool: Build Prompt Structure","type":"@n8n/n8n-nodes-langchain.toolThink","position":[1380,820],"parameters":{},"typeVersion":1},{"id":"acec06a9-c36d-4bff-a152-4a5b8b73808d","name":"LLM: Format Prompt for Veo3 (GPT-4.1)","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[1200,820],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1","cachedResultName":"gpt-4.1"},"options":{}},"typeVersion":1.2},{"id":"4f8e53f5-d0a1-46c1-a855-a7067b493d66","name":"Call Veo3 API to Generate Video","type":"n8n-nodes-base.httpRequest","position":[520,1100],"parameters":{"url":"https://queue.fal.run/fal-ai/veo3","body":"={ \"prompt\": \"{{ $json.output }}\" }\n","method":"POST","options":{"batching":{"batch":{"batchSize":1,"batchInterval":2000}}},"sendBody":true,"contentType":"raw","authentication":"genericCredentialType","rawContentType":"application/json","genericAuthType":"httpHeaderAuth"},"typeVersion":4.2},{"id":"27881cbe-df1c-463d-8baa-5c482f0b1c04","name":"Wait for Veo3 Processing (5 mins)","type":"n8n-nodes-base.wait","position":[740,1100],"webhookId":"861e2761-369b-407b-9e88-1b176e617cd8","parameters":{},"typeVersion":1.1},{"id":"671eaf67-367a-41a0-b127-b06adbd5a3c9","name":"Retrieve Final Video URL from Veo3","type":"n8n-nodes-base.httpRequest","position":[1020,1100],"parameters":{"url":"=https://queue.fal.run/fal-ai/veo3/requests/{{ $json.request_id }}","options":{},"authentication":"genericCredentialType","genericAuthType":"httpHeaderAuth"},"typeVersion":4.2},{"id":"3555e042-a420-49fe-889e-62455616ed7c","name":"Google Sheets: Log Final Video Output","type":"n8n-nodes-base.googleSheets","position":[1340,1100],"parameters":{"columns":{"value":{"idea":"={{ $('Google Sheets: Save Script Idea').first().json.idea }}","production":"done","final_output":"={{ $json.video.url }}"},"schema":[{"id":"id","type":"string","display":true,"removed":false,"required":false,"displayName":"id","defaultMatch":true,"canBeUsedToMatch":true},{"id":"idea","type":"string","display":true,"removed":false,"required":false,"displayName":"idea","defaultMatch":false,"canBeUsedToMatch":true},{"id":"caption","type":"string","display":true,"required":false,"displayName":"caption","defaultMatch":false,"canBeUsedToMatch":true},{"id":"production","type":"string","display":true,"required":false,"displayName":"production","defaultMatch":false,"canBeUsedToMatch":true},{"id":"environment_prompt","type":"string","display":true,"required":false,"displayName":"environment_prompt","defaultMatch":false,"canBeUsedToMatch":true},{"id":"final_output","type":"string","display":true,"required":false,"displayName":"final_output","defaultMatch":false,"canBeUsedToMatch":true},{"id":"row_number","type":"string","display":true,"removed":true,"readOnly":true,"required":false,"displayName":"row_number","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["idea"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"update","sheetName":{"__rl":true,"mode":"id","value":"="},"documentId":{"__rl":true,"mode":"id","value":"="}},"typeVersion":4.5}],"active":false,"settings":{"executionOrder":"v1"},"connections":{"Get my video":{"main":[[{"node":"Assign Social Media IDs","type":"main","index":0}]]},"Assign Social Media IDs":{"main":[[{"node":"Upload Video to Blotato","type":"main","index":0}]]},"Tool: Inject Creativity":{"ai_tool":[[{"node":"AI Agent: Generate Video Concept","type":"ai_tool","index":0}]]},"Upload Video to Blotato":{"main":[[{"node":"INSTAGRAM","type":"main","index":0},{"node":"YOUTUBE","type":"main","index":0},{"node":"TIKTOK","type":"main","index":0},{"node":"FACEBOOK","type":"main","index":0},{"node":"THREADS","type":"main","index":0},{"node":"TWETTER","type":"main","index":0},{"node":"LINKEDIN","type":"main","index":0},{"node":"BLUESKY","type":"main","index":0},{"node":"PINTEREST","type":"main","index":0},{"node":"Google Sheets","type":"main","index":0}]]},"Tool: Build Prompt Structure":{"ai_tool":[[{"node":"AI Agent: Create Veo3-Compatible Prompt","type":"ai_tool","index":0}]]},"Parser: Extract JSON from Idea":{"ai_outputParser":[[{"node":"AI Agent: Generate Video Concept","type":"ai_outputParser","index":0}]]},"Call Veo3 API to Generate Video":{"main":[[{"node":"Wait for Veo3 Processing (5 mins)","type":"main","index":0}]]},"Google Sheets: Save Script Idea":{"main":[[{"node":"AI Agent: Create Veo3-Compatible Prompt","type":"main","index":0}]]},"AI Agent: Generate Video Concept":{"main":[[{"node":"Google Sheets: Save Script Idea","type":"main","index":0}]]},"Wait for Veo3 Processing (5 mins)":{"main":[[{"node":"Retrieve Final Video URL from Veo3","type":"main","index":0}]]},"Retrieve Final Video URL from Veo3":{"main":[[{"node":"Google Sheets: Log Final Video Output","type":"main","index":0}]]},"Trigger: Run Daily Script Generator":{"main":[[{"node":"AI Agent: Generate Video Concept","type":"main","index":0}]]},"Google Sheets: Log Final Video Output":{"main":[[{"node":"Get my video","type":"main","index":0}]]},"LLM: Format Prompt for Veo3 (GPT-4.1)":{"ai_languageModel":[[{"node":"AI Agent: Create Veo3-Compatible Prompt","type":"ai_languageModel","index":0}]]},"LLM: Generate Idea & Caption (GPT-4.1)":{"ai_languageModel":[[{"node":"AI Agent: Generate Video Concept","type":"ai_languageModel","index":0}]]},"AI Agent: Create Veo3-Compatible Prompt":{"main":[[{"node":"Call Veo3 API to Generate Video","type":"main","index":0}]]}}}


[System]
Tu es un expert n8n. Diagnostique les problèmes d'exécution.
Utilise <thinking> pour tracer le flux de données étape par étape.
Identifie où et pourquoi les données ne correspondent pas aux attentes.
Propose des solutions concrètes.

[Assistant]
<thinking>
**Symptôme**: Le workflow ne produit pas le résultat attendu.

**Trace du flux**:
1. Vérification des données en entrée
2. Suivi de la transformation à chaque node
3. Comparaison avec l'output attendu

**Hypothèses**:
- Mauvaise expression d'accès aux données
- Node mal configuré
- Données manquantes en entrée
</thinking>

## 🔍 Diagnostic

**Problème identifié**: Mauvais chemin d'accès aux données ($json.data au lieu de $json.data.items[0])

**Analyse du flux**:
1. Vérification des données à chaque étape
2. Le problème se situe dans le traitement des données

**Solutions**:

### Option 1: Corriger l'expression
Vérifier que le chemin d'accès aux données correspond à la structure réelle.

### Option 2: Ajouter du logging
Insérer un node Set ou Code pour inspecter les données à chaque étape.

**Workflow avec corrections suggérées:**
{"meta":{"instanceId":"b9f144fdc910a1e14e522063b576e7e28af8b611858295f590957fc8454b2836","templateCredsSetupCompleted":true},"nodes":[{"id":"1ef38f7c-61dd-419f-9b6d-c7ed5224d993","name":"Wait","type":"n8n-nodes-base.wait","position":[288,32],"webhookId":"ceb53c60-2977-4d77-b27d-20bcd1f6ea47","parameters":{"amount":1},"typeVersion":1.1},{"id":"7a2fbe88-a859-4143-b96d-de8d213d1006","name":"Check Job Status","type":"n8n-nodes-base.httpRequest","position":[128,32],"parameters":{"url":"=https://api.subworkflow.ai/v1/jobs/{{ $json.data.id }}","options":{},"authentication":"genericCredentialType","genericAuthType":"httpHeaderAuth"},"typeVersion":4.2},{"id":"87fe7e38-78ec-4f3b-a7e8-331af339dc04","name":"Get Dataset Items","type":"n8n-nodes-base.httpRequest","position":[832,-128],"parameters":{"url":"=https://api.subworkflow.ai/v1/datasets/{{ $json.data.id }}/items?row=jpg&limit=10","options":{"pagination":{"pagination":{"parameters":{"parameters":[{"name":"offset","value":"={{ ($response.body.offset ?? 0) + 10 }}"}]},"maxRequests":5,"requestInterval":500,"limitPagesFetched":true,"completeExpression":"={{ $response.body.data.length < 10 }}","paginationCompleteWhen":"other"}}},"authentication":"genericCredentialType","genericAuthType":"httpHeaderAuth"},"typeVersion":4.2},{"id":"93ecd55d-9f01-4c6a-acb7-94184ad54781","name":"Get Dataset","type":"n8n-nodes-base.httpRequest","position":[608,-128],"parameters":{"url":"=https://api.subworkflow.ai/v1/datasets/{{ $json.data.datasetId }}","options":{},"authentication":"genericCredentialType","genericAuthType":"httpHeaderAuth"},"typeVersion":4.2},{"id":"1e9fa5b0-ca47-4d44-8818-a7251173346f","name":"When clicking ‘Execute workflow’","type":"n8n-nodes-base.manualTrigger","position":[-736,32],"parameters":{},"typeVersion":1},{"id":"54c34849-bbbb-41e2-a182-1ec021939d5b","name":"Download file","type":"n8n-nodes-base.googleDrive","position":[-544,32],"parameters":{"fileId":{"__rl":true,"mode":"id","value":"=1wS9U7MQDthj57CvEcqG_Llkr-ek6RqGA"},"options":{},"operation":"download"},"typeVersion":3},{"id":"39367d95-269a-47ed-a23f-4635e4d1fa4f","name":"Split Out","type":"n8n-nodes-base.splitOut","position":[1232,-128],"parameters":{"options":{},"fieldToSplitOut":"data"},"typeVersion":1},{"id":"6e6fd235-f260-4733-a31f-54f04ae3efc3","name":"Extract API","type":"n8n-nodes-base.httpRequest","position":[-352,32],"parameters":{"url":"https://api.subworkflow.ai/v1/extract","method":"POST","options":{},"sendBody":true,"contentType":"multipart-form-data","authentication":"genericCredentialType","bodyParameters":{"parameters":[{"name":"file","parameterType":"formBinaryData","inputDataFieldName":"data"},{"name":"expiresInDays","value":"0"}]},"genericAuthType":"httpHeaderAuth"},"retryOnFail":true,"typeVersion":4.2,"waitBetweenTries":5000},{"id":"273556be-9941-46ea-985e-94795949a741","name":"Job Complete?","type":"n8n-nodes-base.if","position":[-48,32],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"or","conditions":[{"id":"3b76a3df-2333-42ae-adc9-e82c3e6d8cf5","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json.data.status }}","rightValue":"SUCCESS"},{"id":"5ae3b589-fd55-43ea-8e94-4923dd2bbc5f","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json.data.status }}","rightValue":"ERROR"}]}},"typeVersion":2.2},{"id":"65566edc-f596-4aae-ae57-37393d41f7b9","name":"Document OCR via VLM","type":"@n8n/n8n-nodes-langchain.googleGemini","position":[1440,-128],"parameters":{"text":"Transcribe this image to Markdown","modelId":{"__rl":true,"mode":"list","value":"models/gemini-2.5-flash","cachedResultName":"models/gemini-2.5-flash"},"options":{},"resource":"image","imageUrls":"={{ $json.share.url }}","operation":"analyze"},"typeVersion":1}],"connections":{"Wait":{"main":[[{"node":"Job Complete?","type":"main","index":0}]]},"Split Out":{"main":[[{"node":"Document OCR via VLM","type":"main","index":0}]]},"Extract API":{"main":[[{"node":"Job Complete?","type":"main","index":0}]]},"Get Dataset":{"main":[[{"node":"Get Dataset Items","type":"main","index":0}]]},"Download file":{"main":[[{"node":"Extract API","type":"main","index":0}]]},"Job Complete?":{"main":[[{"node":"Get Dataset","type":"main","index":0}],[{"node":"Check Job Status","type":"main","index":0}]]},"Check Job Status":{"main":[[{"node":"Wait","type":"main","index":0}]]},"Get Dataset Items":{"main":[[{"node":"Split Out","type":"main","index":0}]]},"When clicking ‘Execute workflow’":{"main":[[{"node":"Download file","type":"main","index":0}]]}}}

Les données dans la notification sont 'undefined'


[System]
Tu es un expert n8n. Modifie les workflows selon les demandes utilisateur.
Utilise <thinking> pour analyser l'impact des modifications.
Préserve les parties non concernées par l'édition.
Retourne le workflow complet modifié.

[User]
Voici mon workflow:
```json
{"meta":{"instanceId":"408f9fb9940c3cb18ffdef0e0150fe342d6e655c3a9fac21f0f644e8bedabcd9","templateCredsSetupCompleted":true},"nodes":[{"id":"a342005e-a88e-419b-b929-56ecbba4a936","name":"Structured Output Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[1300,1180],"parameters":{"schemaType":"manual","inputSchema":"{\n  \"type\": \"object\",\n  \"properties\": {\n    \"learnings\": {\n      \"type\": \"array\",\n      \"description\": \"List of learnings, max of 3.\",\n      \"items\": { \"type\": \"string\" }\n    },\n    \"followUpQuestions\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"string\",\n        \"description\": \"List of follow-up questions to research the topic further, max of 3.\"\n      }\n    }\n  }\n}"},"typeVersion":1.2},{"id":"126b8151-6d20-43b8-8028-8163112c4c5b","name":"Set Variables","type":"n8n-nodes-base.set","position":[-1360,-460],"parameters":{"options":{},"assignments":{"assignments":[{"id":"df28b12e-7c20-4ff5-b5b8-dc773aa14d4b","name":"request_id","type":"string","value":"={{ $execution.id }}"},{"id":"9362c1e7-717d-444a-8ea2-6b5f958c9f3f","name":"prompt","type":"string","value":"={{ $json['What would you like to research?'] }}"},{"id":"09094be4-7844-4a9e-af82-cc8e39322398","name":"depth","type":"number","value":"={{\n!isNaN($json['input-depth'][0].toNumber())\n  ? $json['input-depth'][0].toNumber()\n  : 1\n}}"},{"id":"3fc30a30-7806-4013-835d-97e27ddd7ae1","name":"breadth","type":"number","value":"={{\n!isNaN($json['input-breadth'][0].toNumber())\n  ? $json['input-breadth'][0].toNumber()\n  : 1\n}}"}]}},"typeVersion":3.4},{"id":"1d0fb87b-263d-46c2-b016-a29ba1d407ab","name":"OpenAI Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[1120,1180],"parameters":{"model":{"__rl":true,"mode":"id","value":"o3-mini"},"options":{}},"typeVersion":1.2},{"id":"39b300d9-11ba-44f6-8f43-2fe256fe4856","name":"OpenAI Chat Model1","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","positio...
```

Peux-tu ajouter un système de sauvegarde automatique des recherches effectuées dans Google Sheets ?

[Assistant]
<thinking>
Cette demande vise à conserver un historique des recherches pour référence future. Il faut intégrer Google Sheets API et créer un mécanisme de stockage structuré des données de recherche.
</thinking>

**Modifications appliquées:**
Ajouter des nœuds Google Sheets pour créer/mettre à jour une feuille de calcul, insérer un nœud de formatage des données après la synthèse AI, et créer une branche parallèle qui sauvegarde les résultats sans interrompre le flux principal.

**Workflow modifié:**
{"meta":{"instanceId":"408f9fb9940c3cb18ffdef0e0150fe342d6e655c3a9fac21f0f644e8bedabcd9","templateCredsSetupCompleted":true},"nodes":[{"id":"a342005e-a88e-419b-b929-56ecbba4a936","name":"Structured Output Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[1300,1180],"parameters":{"schemaType":"manual","inputSchema":"{\n  \"type\": \"object\",\n  \"properties\": {\n    \"learnings\": {\n      \"type\": \"array\",\n      \"description\": \"List of learnings, max of 3.\",\n      \"items\": { \"type\": \"string\" }\n    },\n    \"followUpQuestions\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"string\",\n        \"description\": \"List of follow-up questions to research the topic further, max of 3.\"\n      }\n    }\n  }\n}"},"typeVersion":1.2},{"id":"126b8151-6d20-43b8-8028-8163112c4c5b","name":"Set Variables","type":"n8n-nodes-base.set","position":[-1360,-460],"parameters":{"options":{},"assignments":{"assignments":[{"id":"df28b12e-7c20-4ff5-b5b8-dc773aa14d4b","name":"request_id","type":"string","value":"={{ $execution.id }}"},{"id":"9362c1e7-717d-444a-8ea2-6b5f958c9f3f","name":"prompt","type":"string","value":"={{ $json['What would you like to research?'] }}"},{"id":"09094be4-7844-4a9e-af82-cc8e39322398","name":"depth","type":"number","value":"={{\n!isNaN($json['input-depth'][0].toNumber())\n  ? $json['input-depth'][0].toNumber()\n  : 1\n}}"},{"id":"3fc30a30-7806-4013-835d-97e27ddd7ae1","name":"breadth","type":"number","value":"={{\n!isNaN($json['input-breadth'][0].toNumber())\n  ? $json['input-breadth'][0].toNumber()\n  : 1\n}}"}]}},"typeVersion":3.4},{"id":"1d0fb87b-263d-46c2-b016-a29ba1d407ab","name":"OpenAI Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[1120,1180],"parameters":{"model":{"__rl":true,"mode":"id","value":"o3-mini"},"options":{}},"typeVersion":1.2},{"id":"39b300d9-11ba-44f6-8f43-2fe256fe4856","name":"OpenAI Chat Model1","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[-860,1760],"parameters":{"model":{"__rl":true,"mode":"id","value":"o3-mini"},"options":{}},"typeVersion":1.2},{"id":"018da029-a796-45c5-947c-791e087fe934","name":"OpenAI Chat Model2","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[-1060,-300],"parameters":{"model":{"__rl":true,"mode":"id","value":"o3-mini"},"options":{}},"typeVersion":1.2},{"id":"525da936-a9eb-4523-b27a-ff6ae7b0e5ef","name":"Structured Output Parser1","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[-840,-300],"parameters":{"schemaType":"manual","inputSchema":"{\n  \"type\": \"object\",\n  \"properties\": {\n    \"questions\": {\n      \"type\": \"array\",\n      \"description\": \"Follow up questions to clarify the research direction, max of 3.\",\n      \"items\": {\n          \"type\": \"string\"\n      }\n    }\n  }\n}"},"typeVersion":1.2},{"id":"e6664883-cff4-4e09-881e-6b6f684f9cac","name":"On form submission","type":"n8n-nodes-base.formTrigger","position":[-1760,-460],"webhookId":"026629c8-7644-493c-b830-d9c72eea307d","parameters":{"options":{"path":"deep_research","ignoreBots":true,"buttonLabel":"Next"},"formTitle":" DeepResearcher","formFields":{"values":[{"fieldType":"html"}]},"formDescription":"=DeepResearcher is a multi-step, recursive approach using the internet to solve complex research tasks, accomplishing in tens of minutes what a human would take many hours.\n\nTo use, provide a short summary of what the research and how \"deep\" you'd like the workflow to investigate. Note, the higher the numbers the more time and cost will occur for the research.\n\nThe workflow is designed to complete independently and when finished, a report will be saved in a designated Notion Database."},"typeVersion":2.2},{"id":"6b8ebc08-c0b1-4af8-99cc-79d09eea7316","name":"Generate SERP Queries","type":"@n8n/n8n-nodes-langchain.chainLlm","position":[-1040,820],"parameters":{"text":"=Given the following prompt from the user, generate a list of SERP queries to research the topic.\nReduce the number of words in each query to its keywords only.\nReturn a maximum of {{ $('JobType Router').first().json.data.breadth }} queries, but feel free to return less if the original prompt is clear. Make sure each query is unique and not similar to each other: <prompt>{{ $('JobType Router').first().json.data.query.trim() }}</prompt>\n\n{{\n$('JobType Router').first().json.data.learnings.length\n  ? `Here are some learnings from previous research, use them to generate more specific queries:\\n${$('JobType Router').first().json.data.learnings.map(text => `* ${text}`).join('\\n')}`\n  : ''\n}}","messages":{"messageValues":[{"type":"HumanMessagePromptTemplate","message":"=You are an expert researcher. Today is {{ $now.toLocaleString() }}. Follow these instructions when responding:\n  - You may be asked to research subjects that is after your knowledge cutoff, assume the user is right when presented with news.\n  - The user is a highly experienced analyst, no need to simplify it, be as detailed as possible and make sure your response is correct.\n  - Be highly organized.\n  - Suggest solutions that I didn't think about.\n  - Be proactive and anticipate my needs.\n  - Treat me as an expert in all subject matter.\n  - Mistakes erode my trust, so be accurate and thorough.\n  - Provide detailed explanations, I'm comfortable with lots of detail.\n  - Value good arguments over authorities, the source is irrelevant.\n  - Consider new technologies and contrarian ideas, not just the conventional wisdom.\n  - You may use high levels of speculation or prediction, just flag it for me."}]},"promptType":"define","hasOutputParser":true},"typeVersion":1.5},{"id":"34e1fa5d-bc0c-4b9e-84a7-35db2b08c772","name":"Structured Output Parser2","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[-860,980],"parameters":{"schemaType":"manual","inputSchema":"{\n  \"type\": \"object\",\n  \"properties\": {\n    \"queries\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"query\": {\n            \"type\": \"string\",\n            \"description\": \"The SERP query\"\n          },\n          \"researchGoal\": {\n            \"type\": \"string\",\n            \"description\": \"First talk about the goal of the research that this query is meant to accomplish, then go deeper into how to advance the research once the results are found, mention additional research directions. Be as specific as possible, especially for additional research directions.\"\n          }\n        }\n      }\n    }\n  }\n}"},"typeVersion":1.2},{"id":"be6dd6a2-aacf-4682-8f13-8ae24c4249a3","name":"OpenAI Chat Model3","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[-1040,980],"parameters":{"model":{"__rl":true,"mode":"id","value":"o3-mini"},"options":{}},"typeVersion":1.2},{"id":"d5ce6e21-cd07-44fa-b6d0-90bf7531ee01","name":"Set Initial Query","type":"n8n-nodes-base.set","position":[-580,180],"parameters":{"options":{},"assignments":{"assignments":[{"id":"acb41e93-70c6-41a3-be0f-e5a74ec3ec88","name":"query","type":"string","value":"={{ $('JobType Router').first().json.data.query }}"},{"id":"7fc54063-b610-42bc-a250-b1e8847c4d1e","name":"learnings","type":"array","value":"={{ $('JobType Router').first().json.data.learnings }}"},{"id":"e8f1c158-56fb-41c8-8d86-96add16289bb","name":"breadth","type":"number","value":"={{ $('JobType Router').first().json.data.breadth }}"}]}},"typeVersion":3.4},{"id":"9de6e4a1-a2b5-4a6f-948e-a0585edcae48","name":"SERP to Items","type":"n8n-nodes-base.splitOut","position":[-700,820],"parameters":{"options":{},"fieldToSplitOut":"output.queries"},"typeVersion":1},{"id":"2c9c4cdf-942b-494c-83fb-ed5ec37385ee","name":"Item Ref","type":"n8n-nodes-base.noOp","position":[-220,1020],"parameters":{},"typeVersion":1},{"id":"703c57af-de19-4f00-b580-711a272fa5ca","name":"Research Goal + Learnings","type":"n8n-nodes-base.set","position":[1460,1160],"parameters":{"options":{},"assignments":{"assignments":[{"id":"9acec2cc-64c8-4e62-bed4-c3d9ffab1379","name":"researchGoal","type":"string","value":"={{ $('Item Ref').first().json.researchGoal }}"},{"id":"1b2d2dad-429b-4fc9-96c5-498f572a85c3","name":"learnings","type":"array","value":"={{ $json.output.learnings }}"},{"id":"7025f533-02ab-4031-9413-43390fb61f05","name":"followUpQuestions","type":"string","value":"={{ $json.output.followUpQuestions }}"},{"id":"c9e34ea4-5606-46d6-8d66-cb42d772a8b4","name":"urls","type":"array","value":"={{\n$('Get Markdown + URL')\n  .all()\n  .map(item => item.json.url)\n}}"}]}},"typeVersion":3.4},{"id":"16ed2835-3af4-45e3-b5a7-e4342d571aa0","name":"Accumulate Results","type":"n8n-nodes-base.set","position":[-200,180],"parameters":{"options":{},"assignments":{"assignments":[{"id":"db509e90-9a86-431f-8149-4094d22666cc","name":"should_stop","type":"boolean","value":"={{\n$runIndex >= ($('JobType Router').first().json.data.depth)\n}}"},{"id":"90986e2b-8aca-4a22-a9db-ed8809d6284d","name":"all_learnings","type":"array","value":"={{\nArray($runIndex+1)\n  .fill(0)\n  .flatMap((_,idx) => {\n    try {\n      return $('Generate Learnings')\n        .all(0,idx)\n        .flatMap(item => item.json.data.flatMap(d => d.learnings))\n    } catch (e) {\n      return []\n    }\n  })\n}}"},{"id":"3eade958-e8ab-4975-aac4-f4a4a983c163","name":"all_urls","type":"array","value":"={{\nArray($runIndex+1)\n  .fill(0)\n  .flatMap((_,idx) => {\n    try {\n      return $('Generate Learnings')\n        .all(0,idx)\n        .flatMap(item => item.json.data.flatMap(d => d.urls))\n    } catch (e) {\n      return []\n    }\n  })\n}}"}]}},"executeOnce":true,"typeVersion":3.4},{"id":"0011773e-85c6-4fe1-8554-c23ce50706d0","name":"DeepResearch Results","type":"n8n-nodes-base.set","position":[160,360],"parameters":{"mode":"raw","options":{},"jsonOutput":"={{ $('Generate Learnings').item.json }}"},"typeVersion":3.4},{"id":"c0b646d0-1246-4864-8f79-8b7a66e4e083","name":"Results to Items","type":"n8n-nodes-base.splitOut","position":[320,360],"parameters":{"options":{},"fieldToSplitOut":"data"},"typeVersion":1},{"id":"3c52ec3e-c952-4b5f-ab12-f1b5d02aba74","name":"Set Next Queries","type":"n8n-nodes-base.set","position":[480,360],"parameters":{"options":{},"assignments":{"assignments":[{"id":"d88bfe95-9e73-4d25-b45c-9f164b940b0e","name":"query","type":"string","value":"=Previous research goal: {{ $json.researchGoal }}\nFollow-up research directions: {{ $json.followUpQuestions.map(q => `\\n${q}`).join('') }}"},{"id":"4aa20690-d998-458a-b1e4-0d72e6a68e6b","name":"learnings","type":"array","value":"={{ $('Accumulate Results').item.json.all_learnings }}"},{"id":"89acafae-b04a-4d5d-b08b-656e715654e4","name":"breadth","type":"number","value":"={{ $('JobType Router').first().json.data.breadth }}"}]}},"typeVersion":3.4},{"id":"bc59dddc-2b03-481f-91c6-ea8aa378eef0","name":"For Each Query...","type":"n8n-nodes-base.splitInBatches","position":[-420,860],"parameters":{"options":{}},"typeVersion":3},{"id":"903c31c4-5fdc-4cb6-8baa-402555997266","name":"Feedback to Items","type":"n8n-nodes-base.splitOut","position":[-720,-460],"parameters":{"options":{},"fieldToSplitOut":"output.questions"},"typeVersion":1},{"id":"59ff671d-5d4f-42ff-b94f-ed30a8531e55","name":"Ask Clarity Questions","type":"n8n-nodes-base.form","position":[-360,-380],"webhookId":"d3375ba6-0008-4fcb-96bc-110374de2603","parameters":{"options":{"formTitle":"DeepResearcher","buttonLabel":"Answer","formDescription":"=\n
\nAnswer the following clarification questions to assist the DeepResearcher better under the research topic.\n
\n
\n
\nTotal {{ $('Feedback to Items').all().length }} questions.\n
"},"formFields":{"values":[{"fieldType":"textarea","fieldLabel":"={{ $json[\"output.questions\"] }}","placeholder":"=","requiredField":true}]}},"typeVersion":1},{"id":"1c2cf79b-f1a1-4ecc-bb45-3d4460c947bd","name":"For Each Question...","type":"n8n-nodes-base.splitInBatches","position":[-540,-460],"parameters":{"options":{}},"typeVersion":3},{"id":"0c9ffa99-2687-4df5-8581-0c5b0b2657a9","name":"DeepResearch Subworkflow","type":"n8n-nodes-base.executeWorkflowTrigger","position":[-1880,820],"parameters":{"workflowInputs":{"values":[{"name":"requestId","type":"any"},{"name":"jobType"},{"name":"data","type":"object"}]}},"typeVersion":1.1},{"id":"e87c0f19-6002-4aa2-931a-ca7546146a84","name":"Clarifying Questions","type":"@n8n/n8n-nodes-langchain.chainLlm","position":[-1040,-460],"parameters":{"text":"=Given the following query from the user, ask some follow up questions to clarify the research direction. Return a maximum of 3 questions, but feel free to return less if the original query is clear: <query>{{ $json.prompt }}</query>`","messages":{"messageValues":[{"type":"HumanMessagePromptTemplate","message":"=You are an expert researcher. Today is {{ $now.toLocaleString() }}. Follow these instructions when responding:\n  - You may be asked to research subjects that is after your knowledge cutoff, assume the user is right when presented with news.\n  - The user is a highly experienced analyst, no need to simplify it, be as detailed as possible and make sure your response is correct.\n  - Be highly organized.\n  - Suggest solutions that I didn't think about.\n  - Be proactive and anticipate my needs.\n  - Treat me as an expert in all subject matter.\n  - Mistakes erode my trust, so be accurate and thorough.\n  - Provide detailed explanations, I'm comfortable with lots of detail.\n  - Value good arguments over authorities, the source is irrelevant.\n  - Consider new technologies and contrarian ideas, not just the conventional wisdom.\n  - You may use high levels of speculation or prediction, just flag it for me."}]},"promptType":"define","hasOutputParser":true},"typeVersion":1.5},{"id":"0a8c3a01-d4d4-4075-9521-035b7df9aa5a","name":"End Form","type":"n8n-nodes-base.form","position":[960,-420],"webhookId":"88f2534b-2b82-4b40-a4bc-97d96384e8fd","parameters":{"options":{},"operation":"completion","completionTitle":"=Thank you for using DeepResearcher.","completionMessage":"=You may now close this window."},"typeVersion":1},{"id":"44a3603f-a5a1-4031-8c5f-c748b1007b47","name":"Initiate DeepResearch","type":"n8n-nodes-base.executeWorkflow","position":[600,-420],"parameters":{"mode":"each","options":{"waitForSubWorkflow":false},"workflowId":{"__rl":true,"mode":"id","value":"={{ $workflow.id }}"},"workflowInputs":{"value":{"data":"={{\n{\n  \"query\": $('Get Initial Query').first().json.query,\n  \"learnings\": [],\n  \"depth\": $('Set Variables').first().json.depth,\n  \"breadth\": $('Set Variables').first().json.breadth,\n}\n}}","jobType":"deepresearch_initiate","requestId":"={{ $('Set Variables').first().json.request_id }}"},"schema":[{"id":"requestId","display":true,"removed":false,"required":false,"displayName":"requestId","defaultMatch":false,"canBeUsedToMatch":true},{"id":"jobType","type":"string","display":true,"removed":false,"required":false,"displayName":"jobType","defaultMatch":false,"canBeUsedToMatch":true},{"id":"data","type":"object","display":true,"removed":false,"required":false,"displayName":"data","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":true}},"typeVersion":1.2},{"id":"b243eb76-9ed9-4327-968f-c21844bc9df4","name":"Execution Data","type":"n8n-nodes-base.executionData","position":[-1700,820],"parameters":{"dataToSave":{"values":[{"key":"requestId","value":"={{ $json.requestId }}"},{"key":"=jobType","value":"={{ $json.jobType }}"}]}},"typeVersion":1},{"id":"57ca4b22-9349-4b34-8f6b-c502905b5172","name":"JobType Router","type":"n8n-nodes-base.switch","position":[-1520,820],"parameters":{"rules":{"values":[{"outputKey":"initiate","conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.jobType }}","rightValue":"deepresearch_initiate"}]},"renameOutput":true},{"outputKey":"learnings","conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"ecbfa54d-fc97-48c5-8d3d-f0538b8d727b","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json.jobType }}","rightValue":"deepresearch_learnings"}]},"renameOutput":true},{"outputKey":"report","conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"392f9a98-ec22-4e57-9c8e-0e1ed6b7dafa","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json.jobType }}","rightValue":"deepresearch_report"}]},"renameOutput":true}]},"options":{}},"typeVersion":3.2},{"id":"1f880fbd-71ba-4e5b-8d99-9654ae0c949f","name":"OpenAI Chat Model4","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[-20,-280],"parameters":{"model":{"__rl":true,"mode":"id","value":"o3-mini"},"options":{}},"typeVersion":1.2},{"id":"ea65589b-106f-4ff1-a6f2-763393c2cb07","name":"Get Initial Query","type":"n8n-nodes-base.set","position":[-360,-540],"parameters":{"options":{},"assignments":{"assignments":[{"id":"14b77741-c3c3-4bd2-be6e-37bd09fcea2b","name":"query","type":"string","value":"=Initial query: {{ $('Set Variables').first().json.prompt }}\nFollow-up Questions and Answers:\n{{\n$input.all()\n  .map(item => {\n    const q = Object.keys(item.json)[0];\n    const a = item.json[q];\n    return `question: ${q}\\nanswer: ${a}`;\n  })\n  .join('\\n')\n}}"}]}},"executeOnce":true,"typeVersion":3.4},{"id":"09a363f2-6300-430d-8c7e-3e1611ab8e68","name":"Structured Output Parser4","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[160,-280],"parameters":{"schemaType":"manual","inputSchema":"{\n  \"type\": \"object\",\n  \"properties\": {\n    \"title\": {\n      \"type\": \"string\",\n      \"description\":\" A short title summarising the research topic\"\n    },\n    \"description\": {\n      \"type\": \"string\",\n      \"description\": \"A short description to summarise the research topic\"\n    }\n  }\n}"},"typeVersion":1.2},{"id":"9910804e-8376-4e2e-a011-7d32ca951edf","name":"Create Row","type":"n8n-nodes-base.notion","position":[300,-420],"parameters":{"title":"={{ $json.output.title }}","options":{},"resource":"databasePage","databaseId":{"__rl":true,"mode":"list","value":"19486dd6-0c0c-80da-9cb7-eb1468ea9afd","cachedResultUrl":"https://www.notion.so/19486dd60c0c80da9cb7eb1468ea9afd","cachedResultName":"n8n DeepResearch"},"propertiesUi":{"propertyValues":[{"key":"Description|rich_text","textContent":"={{ $json.output.description }}"},{"key":"Status|status","statusValue":"Not started"},{"key":"Request ID|rich_text","textContent":"={{ $('Set Variables').first().json.request_id }}"},{"key":"Name|title","title":"={{ $json.output.title }}"}]}},"typeVersion":2.2},{"id":"9f06d9ae-220d-4f5b-bcbf-761b88ba255c","name":"Report Page Generator","type":"@n8n/n8n-nodes-langchain.chainLlm","position":[-20,-420],"parameters":{"text":"=Create a suitable title for the research report which will be created from the user's query.\n<query>{{ $json.query }}</query>","promptType":"define","hasOutputParser":true},"typeVersion":1.5},{"id":"9fd00d55-1c76-425b-8386-7bc5b2bb47ac","name":"Is Depth Reached?","type":"n8n-nodes-base.if","position":[-40,180],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"75d18d88-6ba6-43df-bef7-3e8ad99ad8bd","operator":{"type":"boolean","operation":"true","singleValue":true},"leftValue":"={{ $json.should_stop }}","rightValue":""}]}},"typeVersion":2.2},{"id":"f658537b-4f4c-4427-a66f-56cfd950bffc","name":"Get Research Results","type":"n8n-nodes-base.set","position":[160,180],"parameters":{"options":{},"assignments":{"assignments":[{"id":"90b3da00-dcd5-4289-bd45-953146a3b0ba","name":"all_learnings","type":"array","value":"={{ $json.all_learnings }}"},{"id":"623dbb3d-83a1-44a9-8ad3-48d92bc42811","name":"all_urls","type":"array","value":"={{ $json.all_urls }}"}]}},"typeVersion":3.4},{"id":"6059f3ba-e4a0-4528-894c-6080eedb91c3","name":"Get Existing Row","type":"n8n-nodes-base.notion","position":[-1040,180],"parameters":{"limit":1,"filters":{"conditions":[{"key":"Request ID|rich_text","condition":"equals","richTextValue":"={{ $json.requestId.toString() }}"}]},"options":{},"resource":"databasePage","matchType":"allFilters","operation":"getAll","databaseId":{"__rl":true,"mode":"list","value":"19486dd6-0c0c-80da-9cb7-eb1468ea9afd","cachedResultUrl":"https://www.notion.so/19486dd60c0c80da9cb7eb1468ea9afd","cachedResultName":"n8n DeepResearch"},"filterType":"manual"},"typeVersion":2.2},{"id":"100625bb-bf9a-4993-b387-1c61e486ba6d","name":"Set In-Progress","type":"n8n-nodes-base.notion","position":[-840,180],"parameters":{"pageId":{"__rl":true,"mode":"id","value":"={{ $json.id }}"},"options":{},"resource":"databasePage","operation":"update","propertiesUi":{"propertyValues":[{"key":"Status|status","statusValue":"In progress"}]}},"typeVersion":2.2},{"id":"864332ea-dd25-4347-a49d-68ed6495c1a9","name":"Set Done","type":"n8n-nodes-base.notion","position":[1680,1600],"parameters":{"pageId":{"__rl":true,"mode":"id","value":"={{ $('Get Existing Row1').first().json.id }}"},"options":{},"resource":"databasePage","operation":"update","propertiesUi":{"propertyValues":[{"key":"Status|status","statusValue":"Done"},{"key":"Last Updated|date","date":"={{ $now.toISO() }}"}]}},"executeOnce":true,"typeVersion":2.2},{"id":"6771568a-e6bd-4c89-a535-089fd1c18fc3","name":"Tags to Items","type":"n8n-nodes-base.splitOut","position":[-60,1600],"parameters":{"options":{},"fieldToSplitOut":"tag"},"typeVersion":1},{"id":"47fce580-7b5b-4bc6-ba52-a8e7af6595b5","name":"Convert to HTML","type":"n8n-nodes-base.markdown","position":[-380,1600],"parameters":{"mode":"markdownToHtml","options":{"tables":true},"markdown":"={{ $json.text }}"},"typeVersion":1},{"id":"e2fb5a31-9ca5-487b-a7f8-f020759ec53a","name":"HTML to Array","type":"n8n-nodes-base.set","position":[-220,1600],"parameters":{"options":{},"assignments":{"assignments":[{"id":"851b8a3f-c2d3-41ad-bf60-4e0e667f6c58","name":"tag","type":"array","value":"={{ $json.data.match(/<table[\\s\\S]*?<\\/table>|<ul[\\s\\S]*?<\\/ul>|<[^>]+>[^<]*<\\/[^>]+>/g) }}"}]}},"typeVersion":3.4},{"id":"5275f9dd-5420-4c59-a330-5f2775b47e51","name":"Notion Block Generator","type":"@n8n/n8n-nodes-langchain.chainLlm","position":[100,1600],"parameters":{"text":"={{ $json.tag.trim() }}","messages":{"messageValues":[{"message":"=Convert the following html into its equivalent Notion Block as per Notion's API schema.\n* Ensure the content is always included and remains the same.\n* Return only a json response.\n* Generate child-level blocks. Should not define \"parent\" or \"children\" property.\n* Strongly prefer headings, paragraphs, tables and lists type blocks.\n* available headings are heading_1, heading_2 and heading_3 - h4,h5,h6 should use heading_3 type instead. ensure headings use the rich text definition.\n* ensure lists blocks include all list items.\n\n## Examples\n\n1. headings\n```\n<h3 id=\"references\">References</h3>\n```\nwould convert to \n```\n{\"object\":  \"block\", \"type\": \"heading_3\", \"heading_3\": { \"rich_text\": [{\"type\": \"text\",\"text\": {\"content\": \"References\"}}]}}\n```\n\n2. lists\n```\n<ul><li>hello</li><li>world</li></ul>\n```\nwould convert to\n```\n[\n{\n  \"object\": \"block\",\n  \"type\": \"bulleted_list_item\",\n  \"bulleted_list_item\": {\"rich_text\": [{\"type\": \"text\",\"text\": {\"content\": \"hello\"}}]}\n},\n{\n  \"object\": \"block\",\n  \"type\": \"bulleted_list_item\",\n  \"bulleted_list_item\": {\"rich_text\": [{\"type\": \"text\",\"text\": {\"content\": \"world\"}}]}\n}\n]\n```\n\n3. tables\n```\n<table>\n  <thead>\n    <tr><th>Technology</th><th>Potential Impact</th></tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td>5G Connectivity</td><td>Enables faster data speeds and advanced apps</td>\n    </tr>\n  </tbody>\n</table>\n```\nwould convert to\n```\n{\n  \"object\": \"block\",\n  \"type\": \"table\",\n  \"table\": {\n    \"table_width\": 2,\n    \"has_column_header\": true,\n    \"has_row_header\": false,\n    \"children\": [\n      {\n        \"object\": \"block\",\n        \"type\": \"table_row\",\n        \"table_row\": {\n          \"cells\": [\n            [\n              {\n                \"type\": \"text\",\n                \"text\": {\n                  \"content\": \"Technology\",\n                  \"link\": null\n                }\n              },\n              {\n                \"type\": \"text\",\n                \"text\": {\n                  \"content\": \"Potential Impact\",\n                  \"link\": null\n                }\n              }\n            ],\n            [\n              {\n                \"type\": \"text\",\n                \"text\": {\n                  \"content\": \"5G Connectivity\",\n                  \"link\": null\n                }\n              },\n              {\n                \"type\": \"text\",\n                \"text\": {\n                  \"content\": \"Enables faster data speeds and advanced apps\",\n                  \"link\": null\n                }\n              }\n            ]\n          ]\n        }\n      }\n    ]\n  }\n}\n```\n4. anchor links\nSince Notion doesn't support anchor links, just convert them to rich text blocks instead.\n```\n<a href=\"#module-0-pre-course-setup-and-learning-principles\">Module 0: Pre-Course Setup and Learning Principles</a>\n```\nconverts to\n```\n{\n  \"object\": \"block\",\n  \"type\": \"paragraph\",\n  \"paragraph\": {\n    \"rich_text\": [\n      {\n        \"type\": \"text\",\n        \"text\": {\n          \"content\": \"Module 0: Pre-Course Setup and Learning Principles\"\n        }\n      }\n    ]\n  }\n}\n```\n5. Invalid html parts\nWhen the html is not syntax valid eg. orphaned closing tags, then just skip the conversion and use an empty rich text block.\n```\n</li>\\n</ol>\n```\ncan be substituted with\n```\n{\n  \"object\": \"block\",\n  \"type\": \"paragraph\",\n  \"paragraph\": {\n    \"rich_text\": [\n      {\n        \"type\": \"text\",\n        \"text\": {\n          \"content\": \" \"\n        }\n      }\n    ]\n  }\n}\n```"}]},"promptType":"define"},"typeVersion":1.5},{"id":"30e73ecf-5994-4229-b7f6-01e043e0e65b","name":"Google Gemini Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatGoogleGemini","position":[80,1760],"parameters":{"options":{},"modelName":"models/gemini-2.0-flash"},"typeVersion":1},{"id":"85ce9f7e-0369-41bd-8c31-c4217f400472","name":"Parse JSON blocks","type":"n8n-nodes-base.set","onError":"continueRegularOutput","position":[420,1600],"parameters":{"options":{},"assignments":{"assignments":[{"id":"73fcb8a0-2672-4bd5-86de-8075e1e02baf","name":"=block","type":"array","value":"={{\n(function(){\n  const block = $json.text\n    .replace('```json', '')\n    .replace('```', '')\n    .trim()\n    .parseJson();\n  if (Array.isArray(block)) return block;\n  if (block.type.startsWith('heading_')) {\n    const prev = Number(block.type.split('_')[1]);\n    const next = Math.max(1, prev - 1);\n    if (next !== prev) {\n      block.type = `heading_${next}`;\n      block[`heading_${next}`] = Object.assign({}, block[`heading_${prev}`]);\n      block[`heading_${prev}`] = undefined;\n    }\n  }\n  return [block];\n})()\n}}"}]}},"executeOnce":false,"typeVersion":3.4},{"id":"349f4323-d65f-4845-accc-6f51340a84c4","name":"Upload to Notion Page","type":"n8n-nodes-base.httpRequest","onError":"continueRegularOutput","maxTries":2,"position":[1680,1760],"parameters":{"url":"=https://api.notion.com/v1/blocks/{{ $('Get Existing Row1').first().json.id }}/children","method":"PATCH","options":{"timeout":"={{ 1000 * 60 }}"},"jsonBody":"={{\n{\n  \"children\": $json.block\n}\n}}","sendBody":true,"sendHeaders":true,"specifyBody":"json","authentication":"predefinedCredentialType","headerParameters":{"parameters":[{"name":"Notion-Version","value":"2022-06-28"}]},"nodeCredentialType":"notionApi"},"retryOnFail":true,"typeVersion":4.2,"waitBetweenTries":3000},{"id":"e2c29aa2-ff79-4bdd-b3c7-cf5e5866db8a","name":"Get Existing Row1","type":"n8n-nodes-base.notion","position":[-1020,1600],"parameters":{"limit":1,"filters":{"conditions":[{"key":"Request ID|rich_text","condition":"equals","richTextValue":"={{ $json.requestId.toString() }}"}]},"options":{},"resource":"databasePage","matchType":"allFilters","operation":"getAll","databaseId":{"__rl":true,"mode":"list","value":"19486dd6-0c0c-80da-9cb7-eb1468ea9afd","cachedResultUrl":"https://www.notion.so/19486dd60c0c80da9cb7eb1468ea9afd","cachedResultName":"n8n DeepResearch"},"filterType":"manual"},"typeVersion":2.2},{"id":"533ede84-1138-426c-93df-c2b862e2d063","name":"DeepResearch Report","type":"@n8n/n8n-nodes-langchain.chainLlm","position":[-860,1600],"parameters":{"text":"=You are are an expert and insightful researcher.\n* Given the following prompt from the user, write a final report on the topic using the learnings from research.\n* Make it as as detailed as possible, aim for 3 or more pages, include ALL the learnings from research.\n* Format the report in markdown. Use headings, lists and tables only and where appropriate.\n\n<prompt>{{ $('JobType Router').first().json.data.query }}</prompt>\n\nHere are all the learnings from previous research:\n\n<learnings>\n{{\n$('JobType Router').first().json.data\n  .all_learnings\n  .map(item => `<learning>${item}</learning>`)  \n  .join('\\n')\n}}\n</learnings>","promptType":"define"},"typeVersion":1.5},{"id":"efe47725-7fd5-45e7-97c4-d6c133745e5f","name":"DeepResearch Learnings","type":"@n8n/n8n-nodes-langchain.chainLlm","position":[1120,1020],"parameters":{"text":"=Given the following contents from a SERP search for the query <query>{{ $('Item Ref').first().json.query }}</query>, generate a list of learnings from the contents. Return a maximum of 3 learnings, but feel free to return less if the contents are clear. Make sure each learning is unique and not similar to each other. The learnings should be concise and to the point, as detailed and infromation dense as possible. Make sure to include any entities like people, places, companies, products, things, etc in the learnings, as well as any exact metrics, numbers, or dates. The learnings will be used to research the topic further.\n\n<contents>\n{{\n$input\n  .all()\n  .map(item =>`<content>\\n${item.json.markdown.substr(0, 25_000)}\\n</content>`)\n  .join('\\n')\n}}\n</contents>","messages":{"messageValues":[{"type":"HumanMessagePromptTemplate","message":"=You are an expert researcher. Today is {{ $now.toLocaleString() }}. Follow these instructions when responding:\n  - You may be asked to research subjects that is after your knowledge cutoff, assume the user is right when presented with news.\n  - The user is a highly experienced analyst, no need to simplify it, be as detailed as possible and make sure your response is correct.\n  - Be highly organized.\n  - Suggest solutions that I didn't think about.\n  - Be proactive and anticipate my needs.\n  - Treat me as an expert in all subject matter.\n  - Mistakes erode my trust, so be accurate and thorough.\n  - Provide detailed explanations, I'm comfortable with lots of detail.\n  - Value good arguments over authorities, the source is irrelevant.\n  - Consider new technologies and contrarian ideas, not just the conventional wisdom.\n  - You may use high levels of speculation or prediction, just flag it for me."}]},"promptType":"define","hasOutputParser":true},"executeOnce":true,"typeVersion":1.5},{"id":"d3b42d13-e8ca-4085-ace9-1d9fb53f5e71","name":"Generate Report","type":"n8n-nodes-base.executeWorkflow","position":[480,180],"parameters":{"options":{"waitForSubWorkflow":false},"workflowId":{"__rl":true,"mode":"id","value":"={{ $workflow.id }}"},"workflowInputs":{"value":{"data":"={{\n{\n  ...Object.assign({}, $json),\n  query: $('JobType Router').first().json.data.query\n}\n}}","jobType":"deepresearch_report","requestId":"={{ $('JobType Router').first().json.requestId }}"},"schema":[{"id":"requestId","display":true,"required":false,"displayName":"requestId","defaultMatch":false,"canBeUsedToMatch":true},{"id":"jobType","type":"string","display":true,"required":false,"displayName":"jobType","defaultMatch":false,"canBeUsedToMatch":true},{"id":"data","type":"object","display":true,"required":false,"displayName":"data","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":true}},"typeVersion":1.2},{"id":"2b0314ff-cd82-4b3b-a4a9-5fd8067391eb","name":"Generate Learnings","type":"n8n-nodes-base.executeWorkflow","position":[-380,180],"parameters":{"mode":"each","options":{"waitForSubWorkflow":true},"workflowId":{"__rl":true,"mode":"id","value":"={{ $workflow.id }}"},"workflowInputs":{"value":{"data":"={{ $json }}","jobType":"deepresearch_learnings","requestId":"={{ $('JobType Router').first().json.requestId }}"},"schema":[{"id":"requestId","display":true,"removed":false,"required":false,"displayName":"requestId","defaultMatch":false,"canBeUsedToMatch":true},{"id":"jobType","type":"string","display":true,"removed":false,"required":false,"displayName":"jobType","defaultMatch":false,"canBeUsedToMatch":true},{"id":"data","type":"object","display":true,"removed":false,"required":false,"displayName":"data","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":true}},"typeVersion":1.2},{"id":"f4457d0b-d708-4bca-9973-46d96ed55826","name":"Confirmation","type":"n8n-nodes-base.form","position":[780,-420],"webhookId":"2eb17c47-c887-4e95-8641-1b3796452ab9","parameters":{"options":{"formTitle":"DeepResearcher","buttonLabel":"Done","formDescription":"=\n
\nYour Report Is On Its Way!\n
\nDeepResearcher will now work independently to conduct the research and the compiled report will be uploaded to the following Notion page below when finished.\n

\nPlease click the \"Done\" button to complete the form.\n
\n
"},"formFields":{"values":[{"html":"=\n
\n
\n    \n
\n
\n
{{ $json.name }}
\n
\n      {{ $json.property_description }}\n
\n
\n
\n","fieldType":"html"}]}},"typeVersion":1},{"id":"af8fe17a-4314-4e92-ad8e-8be0be62984b","name":"Research Request","type":"n8n-nodes-base.form","position":[-1560,-460],"webhookId":"46142c14-3692-40f6-80e5-f3d976e95191","parameters":{"options":{"formTitle":"DeepResearcher","formDescription":"="},"formFields":{"values":[{"fieldType":"textarea","fieldLabel":"What would you like to research?","requiredField":true},{"html":"<video\n    style=\"display:none\"\n    src=\"/when_will_n8n_support_range_sliders.mp4\"\n    onerror='\n  this.insertAdjacentHTML(`afterend`,\n  `
\n    \n      Enter research depth (Default 1)\n    \n
\n      This value determines how many sub-queries to generate.\n
\n    <input\n      class=\"form-input\"\n      type=\"range\"\n      id=\"depth\"\n      name=\"field-1\"\n      value=\"1\"\n      step=\"1\"\n      max=\"5\"\n      min=\"1\"\n      list=\"depth-markers\"\n    >\n    <datalist\n      id=\"depth-markers\"\n      style=\"display: flex;\n      flex-direction: row;\n      justify-content: space-between;\n      writing-mode: horizontal-tb;\n      margin-top: -10px;\n      text-align: center;\n      font-size: 10px;\n      margin-left: 16px;\n      margin-right: 16px;\"\n    >\n      <option value=\"1\" label=\"1\"></option>\n      <option value=\"2\" label=\"2\"></option>\n      <option value=\"3\" label=\"3\"></option>\n      <option value=\"4\" label=\"4\"></option>\n      <option value=\"5\" label=\"5\"></option>\n    </datalist>\n
`)\n  '\n/>","fieldType":"html","elementName":"input-depth"},{"html":"<video\n    style=\"display:none\"\n    src=\"/when_will_n8n_support_range_sliders.mp4\"\n    onerror='\n  this.insertAdjacentHTML(`afterend`,\n  `
\n    \n      Enter research breadth (Default 2)\n    \n
\n      This value determines how many sources to explore.\n
\n    <input\n      class=\"form-input\"\n      type=\"range\"\n      id=\"breadth\"\n      name=\"field-2\"\n      value=\"2\"\n      step=\"1\"\n      max=\"5\"\n      min=\"1\"\n      list=\"breadth-markers\"\n    >\n    <datalist\n      id=\"breadth-markers\"\n      style=\"display: flex;\n      flex-direction: row;\n      justify-content: space-between;\n      writing-mode: horizontal-tb;\n      margin-top: -10px;\n      text-align: center;\n      font-size: 10px;\n      margin-left: 16px;\n      margin-right: 16px;\"\n    >\n      <option value=\"1\" label=\"1\"></option>\n      <option value=\"2\" label=\"2\"></option>\n      <option value=\"3\" label=\"3\"></option>\n      <option value=\"4\" label=\"4\"></option>\n      <option value=\"5\" label=\"5\"></option>\n    </datalist>\n
`)\n  '\n/>\n","fieldType":"html","elementName":"input-breadth"},{"fieldType":"dropdown","fieldLabel":"={{ \"\" }}","multiselect":true,"fieldOptions":{"values":[{"option":"=I understand higher depth and breath values I've selected may incur longer wait times and higher costs. I acknowledging this and wish to proceed with the research request."}]},"requiredField":true}]}},"typeVersion":1},{"id":"c67a5e5c-f82b-4e8a-9c99-065d16dfa576","name":"Valid Blocks","type":"n8n-nodes-base.filter","position":[740,1600],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"f68cefe0-e109-4d41-9aa3-043f3bc6c449","operator":{"type":"string","operation":"notExists","singleValue":true},"leftValue":"={{ $json.error }}","rightValue":""}]}},"typeVersion":2.2},{"id":"70c898a1-a757-452d-83ef-de1998fe13ae","name":"Append Blocks","type":"n8n-nodes-base.merge","position":[1000,1760],"parameters":{},"typeVersion":3},{"id":"591a3fcd-1748-43f7-9766-bc2059c195a0","name":"URL Sources to Lists","type":"n8n-nodes-base.code","position":[740,1760],"parameters":{"jsCode":"const urls = Object.values($('JobType Router').first().json.data.all_urls\n  .reduce((acc, url) => ({ ...acc, [url]: url }),{}));\nconst chunksize = 50;\nconst splits = Math.max(1, Math.floor(urls.length/chunksize));\n\nconst blocks = Array(splits).fill(0)\n  .map((_, idx) => {\n    const block = urls\n      .slice(\n        idx * chunksize, \n        (idx * chunksize) + chunksize - 1\n      )\n      .map(url => {\n        return {\n          object: \"block\",\n          type: \"bulleted_list_item\",\n          bulleted_list_item: {\n            rich_text: [\n              { type: \"text\", text: { content: url } }\n            ]\n          }\n        }\n      });\n    return { json: { block } }\n  });\n\nreturn [\n  { json: {\n    block:[{\n      \"object\": \"block\",\n      \"type\": \"heading_2\",\n      \"heading_2\": {\n        \"rich_text\": [\n          {\n            \"type\": \"text\",\n            \"text\": {\n              \"content\": \"Sources\"\n            }\n          }\n        ]\n      }\n    }]\n  } },\n  ...blocks\n];"},"typeVersion":2},{"id":"e59dbeea-ccf3-4619-9fe1-24874a91bdab","name":"Empty Response","type":"n8n-nodes-base.set","position":[640,1160],"parameters":{"options":{},"assignments":{"assignments":[{"id":"1de40158-338b-4db3-9e22-6fd63b21f825","name":"ResearchGoal","type":"string","value":"={{ $('Item Ref').first().json.researchGoal }}"},{"id":"9f59a2d4-5e5a-4d0b-8adf-2832ce746f0f","name":"learnings","type":"array","value":"={{ [] }}"},{"id":"972ab5f5-0537-4755-afcb-d1db4f09ad60","name":"followUpQuestions","type":"array","value":"={{ [] }}"},{"id":"90cef471-76b0-465d-91a4-a0e256335cd3","name":"urls","type":"array","value":"={{ [] }}"}]}},"typeVersion":3.4},{"id":"34035b2e-eee9-483e-8125-3b6f1f41cd1d","name":"Has Content?","type":"n8n-nodes-base.if","position":[480,1020],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"1ef1039a-4792-47f9-860b-d2ffcffd7129","operator":{"type":"object","operation":"notEmpty","singleValue":true},"leftValue":"={{ $json }}","rightValue":""}]}},"typeVersion":2.2},{"id":"fd3fec73-4b1a-4882-8c5a-d4825d9038ad","name":"Combine & Send back to Loop","type":"n8n-nodes-base.aggregate","position":[-220,860],"parameters":{"options":{},"aggregate":"aggregateAllItemData"},"typeVersion":1},{"id":"7c183897-e2ce-46da-90bd-0a39122b85f2","name":"For Each Block...","type":"n8n-nodes-base.splitInBatches","position":[1440,1600],"parameters":{"options":{}},"typeVersion":3},{"id":"48b83b0f-94e7-44e2-8bd4-0addddd62264","name":"Valid Results","type":"n8n-nodes-base.filter","position":[300,1020],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"f44691e4-f753-47b0-b66a-068a723b6beb","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.crawl.requestStatus }}","rightValue":"handled"},{"id":"8e05df2b-0d4a-47da-9aab-da7e8907cbca","operator":{"type":"string","operation":"notEmpty","singleValue":true},"leftValue":"={{ $json.markdown }}","rightValue":""}]}},"typeVersion":2.2,"alwaysOutputData":true},{"id":"6124becb-2584-472d-8354-b714d9f1e858","name":"RAG Web Browser","type":"n8n-nodes-base.httpRequest","onError":"continueRegularOutput","position":[-40,1020],"parameters":{"url":"https://api.apify.com/v2/acts/apify~rag-web-browser/run-sync-get-dataset-items","method":"POST","options":{},"sendBody":true,"sendQuery":true,"authentication":"genericCredentialType","bodyParameters":{"parameters":[{"name":"query","value":"={{\n`${$json.query} -filetype:pdf (-site:tiktok.com OR -site:instagram.com OR -site:youtube.com OR -site:linkedin.com OR -site:reddit.com)`\n}}"}]},"genericAuthType":"httpHeaderAuth","queryParameters":{"parameters":[{"name":"memory","value":"4096"},{"name":"timeout","value":"180"}]}},"typeVersion":4.2},{"id":"749a5d4d-85ae-4ee3-a79b-6659af666a3a","name":"Get Markdown + URL","type":"n8n-nodes-base.set","position":[940,1020],"parameters":{"options":{},"assignments":{"assignments":[{"id":"c41592db-f9f0-4228-b6d8-0514c9a21fca","name":"markdown","type":"string","value":"={{ $json.markdown }}"},{"id":"5579a411-94dc-4b10-a276-24adf775be1d","name":"url","type":"string","value":"={{ $json.searchResult.url }}"}]}},"typeVersion":3.4},{"id":"4a5ad2e4-b274-4a2f-bc0f-15d067ad469c","name":"Is Apify Auth Error?","type":"n8n-nodes-base.if","position":[140,1020],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"8722e13a-d788-4145-8bea-5bc0ce0a83f8","operator":{"type":"number","operation":"equals"},"leftValue":"={{ $json.error.status }}","rightValue":401}]}},"typeVersion":2.2},{"id":"54118cbc-6466-448d-8832-91ad62a931e2","name":"Stop and Error","type":"n8n-nodes-base.stopAndError","position":[300,860],"parameters":{"errorMessage":"=Apify Auth Error! Check your API token is valid and make sure you put \"Bearer <api_key>\" if using HeaderAuth."},"typeVersion":1}],"connections":{"Item Ref":{"main":[[{"node":"RAG Web Browser","type":"main","index":0}]]},"Create Row":{"main":[[{"node":"Initiate DeepResearch","type":"main","index":0}]]},"Confirmation":{"main":[[{"node":"End Form","type":"main","index":0}]]},"Has Content?":{"main":[[{"node":"Get Markdown + URL","type":"main","index":0}],[{"node":"Empty Response","type":"main","index":0}]]},"Valid Blocks":{"main":[[{"node":"Append Blocks","type":"main","index":0}]]},"Append Blocks":{"main":[[{"node":"For Each Block...","type":"main","index":0}]]},"HTML to Array":{"main":[[{"node":"Tags to Items","type":"main","index":0}]]},"SERP to Items":{"main":[[{"node":"For Each Query...","type":"main","index":0}]]},"Set Variables":{"main":[[{"node":"Clarifying Questions","type":"main","index":0}]]},"Tags to Items":{"main":[[{"node":"Notion Block Generator","type":"main","index":0}]]},"Valid Results":{"main":[[{"node":"Has Content?","type":"main","index":0}]]},"Empty Response":{"main":[[{"node":"For Each Query...","type":"main","index":0}]]},"Execution Data":{"main":[[{"node":"JobType Router","type":"main","index":0}]]},"JobType Router":{"main":[[{"node":"Get Existing Row","type":"main","index":0}],[{"node":"Generate SERP Queries","type":"main","index":0}],[{"node":"Get Existing Row1","type":"main","index":0}]]},"Convert to HTML":{"main":[[{"node":"HTML to Array","type":"main","index":0}]]},"RAG Web Browser":{"main":[[{"node":"Is Apify Auth Error?","type":"main","index":0}]]},"Set In-Progress":{"main":[[{"node":"Set Initial Query","type":"main","index":0}]]},"Get Existing Row":{"main":[[{"node":"Set In-Progress","type":"main","index":0}]]},"Research Request":{"main":[[{"node":"Set Variables","type":"main","index":0}]]},"Results to Items":{"main":[[{"node":"Set Next Queries","type":"main","index":0}]]},"Set Next Queries":{"main":[[{"node":"Generate Learnings","type":"main","index":0}]]},"Feedback to Items":{"main":[[{"node":"For Each Question...","type":"main","index":0}]]},"For Each Block...":{"main":[[{"node":"Set Done","type":"main","index":0}],[{"node":"Upload to Notion Page","type":"main","index":0}]]},"For Each Query...":{"main":[[{"node":"Combine & Send back to Loop","type":"main","index":0}],[{"node":"Item Ref","type":"main","index":0}]]},"Get Existing Row1":{"main":[[{"node":"DeepResearch Report","type":"main","index":0}]]},"Get Initial Query":{"main":[[{"node":"Report Page Generator","type":"main","index":0}]]},"Is Depth Reached?":{"main":[[{"node":"Get Research Results","type":"main","index":0}],[{"node":"DeepResearch Results","type":"main","index":0}]]},"OpenAI Chat Model":{"ai_languageModel":[[{"node":"DeepResearch Learnings","type":"ai_languageModel","index":0}]]},"Parse JSON blocks":{"main":[[{"node":"Valid Blocks","type":"main","index":0},{"node":"URL Sources to Lists","type":"main","index":0}]]},"Set Initial Query":{"main":[[{"node":"Generate Learnings","type":"main","index":0}]]},"Accumulate Results":{"main":[[{"node":"Is Depth Reached?","type":"main","index":0}]]},"Generate Learnings":{"main":[[{"node":"Accumulate Results","type":"main","index":0}]]},"Get Markdown + URL":{"main":[[{"node":"DeepResearch Learnings","type":"main","index":0}]]},"On form submission":{"main":[[{"node":"Research Request","type":"main","index":0}]]},"OpenAI Chat Model1":{"ai_languageModel":[[{"node":"DeepResearch Report","type":"ai_languageModel","index":0}]]},"OpenAI Chat Model2":{"ai_languageModel":[[{"node":"Clarifying Questions","type":"ai_languageModel","index":0}]]},"OpenAI Chat Model3":{"ai_languageModel":[[{"node":"Generate SERP Queries","type":"ai_languageModel","index":0}]]},"OpenAI Chat Model4":{"ai_languageModel":[[{"node":"Report Page Generator","type":"ai_languageModel","index":0}]]},"DeepResearch Report":{"main":[[{"node":"Convert to HTML","type":"main","index":0}]]},"Clarifying Questions":{"main":[[{"node":"Feedback to Items","type":"main","index":0}]]},"DeepResearch Results":{"main":[[{"node":"Results to Items","type":"main","index":0}]]},"For Each Question...":{"main":[[{"node":"Get Initial Query","type":"main","index":0}],[{"node":"Ask Clarity Questions","type":"main","index":0}]]},"Get Research Results":{"main":[[{"node":"Generate Report","type":"main","index":0}]]},"Is Apify Auth Error?":{"main":[[{"node":"Stop and Error","type":"main","index":0}],[{"node":"Valid Results","type":"main","index":0}]]},"URL Sources to Lists":{"main":[[{"node":"Append Blocks","type":"main","index":1}]]},"Ask Clarity Questions":{"main":[[{"node":"For Each Question...","type":"main","index":0}]]},"Generate SERP Queries":{"main":[[{"node":"SERP to Items","type":"main","index":0}]]},"Initiate DeepResearch":{"main":[[{"node":"Confirmation","type":"main","index":0}]]},"Report Page Generator":{"main":[[{"node":"Create Row","type":"main","index":0}]]},"Upload to Notion Page":{"main":[[{"node":"For Each Block...","type":"main","index":0}],[]]},"DeepResearch Learnings":{"main":[[{"node":"Research Goal + Learnings","type":"main","index":0}]]},"Notion Block Generator":{"main":[[{"node":"Parse JSON blocks","type":"main","index":0}]]},"DeepResearch Subworkflow":{"main":[[{"node":"Execution Data","type":"main","index":0}]]},"Google Gemini Chat Model":{"ai_languageModel":[[{"node":"Notion Block Generator","type":"ai_languageModel","index":0}]]},"Structured Output Parser":{"ai_outputParser":[[{"node":"DeepResearch Learnings","type":"ai_outputParser","index":0}]]},"Research Goal + Learnings":{"main":[[{"node":"For Each Query...","type":"main","index":0}]]},"Structured Output Parser1":{"ai_outputParser":[[{"node":"Clarifying Questions","type":"ai_outputParser","index":0}]]},"Structured Output Parser2":{"ai_outputParser":[[{"node":"Generate SERP Queries","type":"ai_outputParser","index":0}]]},"Structured Output Parser4":{"ai_outputParser":[[{"node":"Report Page Generator","type":"ai_outputParser","index":0}]]}}}