The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"name": "30_360_DEEP_INSIGHTS",
"nodes": [
{
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 11,
"triggerAtMinute": 0
}
]
},
"cronExpression": "0 11 * * 3"
},
"id": "schedule-trigger",
"name": "Mittwoch 11:00",
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.2,
"position": [
240,
300
]
},
{
"parameters": {},
"id": "manual-trigger",
"name": "Manuell starten",
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [
240,
480
]
},
{
"parameters": {
"method": "GET",
"url": "https://directus.automation-plus-ki.de/items/320_content_opportunities?limit=1&sort=-created_at&filter[recommendation][_eq]=Produce Now",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer ={{ $env.DIRECTUS_TOKEN }}"
}
]
}
},
"id": "fetch-top-opportunity",
"name": "Beste Opportunity laden",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
460,
380
]
},
{
"parameters": {
"jsCode": "const res = $input.first().json;\nconst items = res.data ?? [];\n\n// Fallback: neueste Opportunity nehmen wenn kein 'Produce Now' vorhanden\nif (!items.length) {\n return [{ json: {\n opp_id: null,\n topic: 'KI-Agenten in der Praxis 2026',\n category: 'KI-Tools',\n context: 'Allgemeiner \u00dcberblick \u00fcber KI-Agenten'\n } }];\n}\n\nconst opp = items[0];\nreturn [{ json: {\n opp_id: opp.Id,\n topic: opp.topic ?? opp.title ?? opp.keyword ?? '',\n category: opp.category ?? 'KI-Tools',\n context: opp.summary ?? opp.description ?? opp.niche_analysis ?? ''\n} }];"
},
"id": "extract-topic",
"name": "Topic extrahieren",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
680,
380
]
},
{
"parameters": {
"jsCode": "const { topic, category, context } = $input.first().json;\n\nconst prompt = `Du bist ein Senior Research Analyst mit Expertise in KI-Technologie und dem deutschsprachigen Markt.\n\nF\u00fchre eine tiefe Recherche durch f\u00fcr das Thema: \"${topic}\"\nKategorie: ${category}\n${context ? `Hintergrund: ${context}\\n` : ''}\n## DEINE AUFGABEN\n\n1. FAKTEN & ENTWICKLUNGEN\n - Aktueller Stand der Technologie/des Themas (2024-2026)\n - Wichtige Zahlen, Statistiken, Benchmarks\n - Wer sind die wichtigsten Player?\n\n2. CHANCEN & RISIKEN\n - Top 3 Chancen\n - Top 3 Risiken/Kritikpunkte\n\n3. COMMUNITY-PERSPEKTIVE\n - Was denkt die deutschsprachige KI-Community dar\u00fcber?\n - H\u00e4ufige Missverst\u00e4ndnisse oder Fehlannahmen\n\n4. SCHLUSSFOLGERUNGEN\n - Was bedeutet das f\u00fcr Content Creator und KI-Nutzer?\n - Klare These/Standpunkt (sei direkt!)\n\n5. FORECAST\n - Wie entwickelt sich das Thema in den n\u00e4chsten 6-12 Monaten?\n - Was wird der n\u00e4chste gro\u00dfe Schritt sein?\n\nLiefere NUR valides JSON:\n{\n \"executive_summary\": \"3-4 S\u00e4tze Kernaussage\",\n \"key_facts\": [\"Fakt 1\", \"Fakt 2\", \"Fakt 3\", \"Fakt 4\"],\n \"key_statistic\": \"Die eine wichtigste Zahl/Statistik\",\n \"opportunities\": [\"Chance 1\", \"Chance 2\", \"Chance 3\"],\n \"risks\": [\"Risiko 1\", \"Risiko 2\"],\n \"common_misconceptions\": [\"Missverst\u00e4ndnis 1\", \"Missverst\u00e4ndnis 2\"],\n \"main_thesis\": \"Die zentrale These in einem klaren Satz\",\n \"surprising_insight\": \"Das \u00fcberraschendste Finding\",\n \"forecast_6_months\": \"Was in 6 Monaten passieren wird\",\n \"forecast_12_months\": \"Was in 12 Monaten passieren wird\",\n \"content_angle\": \"Der beste Blickwinkel f\u00fcr einen Artikel\",\n \"hook_ideas\": [\"M\u00f6glicher Einstieg 1\", \"M\u00f6glicher Einstieg 2\"],\n \"must_include\": [\"Punkt1 der unbedingt erw\u00e4hnt werden muss\", \"Punkt2\"],\n \"seo_keywords\": \"keyword1, keyword2, keyword3, keyword4, keyword5\"\n}`;\n\nreturn [{ json: { prompt, topic, category, opp_id: $input.first().json.opp_id } }];"
},
"id": "build-research-prompt",
"name": "Research-Prompt bauen",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
900,
380
]
},
{
"parameters": {
"method": "POST",
"url": "=https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key={{ $env.GEMINI_API_KEY }}",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
}
]
},
"sendBody": true,
"contentType": "json",
"body": "={ \"contents\": [{ \"role\": \"user\", \"parts\": [{ \"text\": \"{{ $json.prompt }}\" }] }], \"generationConfig\": { \"temperature\": 0.5, \"maxOutputTokens\": 4096 } }"
},
"id": "gemini-deep",
"name": "Gemini: Tiefenrecherche",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
1120,
380
]
},
{
"parameters": {
"jsCode": "const gemRes = $input.first().json;\nconst rawText = gemRes.candidates?.[0]?.content?.parts?.[0]?.text ?? '{}';\nconst topic = $('Research-Prompt bauen').item.json.topic;\nconst category = $('Research-Prompt bauen').item.json.category;\nconst oppId = $('Research-Prompt bauen').item.json.opp_id;\n\nlet brief = {};\ntry {\n const match = rawText.match(/\\{[\\s\\S]*\\}/);\n if (match) brief = JSON.parse(match[0]);\n} catch(_) {\n brief = { executive_summary: rawText.substring(0, 500) };\n}\n\nconst pieceId = `research-${Date.now()}`;\n\nreturn [{ json: {\n piece_id: pieceId,\n opp_id: oppId,\n topic,\n category,\n title: `Research Brief: ${topic}`,\n excerpt: brief.executive_summary ?? '',\n content_text: JSON.stringify(brief, null, 2),\n seo_keywords: brief.seo_keywords ?? '',\n main_thesis: brief.main_thesis ?? '',\n forecast: `6M: ${brief.forecast_6_months ?? ''} | 12M: ${brief.forecast_12_months ?? ''}`\n} }];"
},
"id": "parse-brief",
"name": "Brief parsen",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1340,
380
]
},
{
"parameters": {
"method": "POST",
"url": "https://directus.automation-plus-ki.de/items/330_knowledge_items",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer ={{ $env.DIRECTUS_TOKEN }}"
}
]
},
"sendBody": true,
"contentType": "json",
"body": "={ \"piece_id\": \"{{ $json.piece_id }}\", \"title\": \"{{ $json.title }}\", \"topic\": \"{{ $json.topic }}\", \"category\": \"{{ $json.category }}\", \"status\": \"research\", \"excerpt\": \"{{ $json.excerpt }}\", \"content_text\": \"{{ $json.content_text }}\", \"seo_keywords\": \"{{ $json.seo_keywords }}\" }"
},
"id": "create-research-piece",
"name": "Research Piece anlegen",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
1560,
380
]
},
{
"parameters": {
"method": "POST",
"url": "https://directus.automation-plus-ki.de/items/audit_log",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer ={{ $env.DIRECTUS_TOKEN }}"
}
]
},
"sendBody": true,
"contentType": "json",
"body": "={ \"ts\": \"{{ new Date().toISOString() }}\", \"actor\": \"30_360_DEEP_INSIGHTS\", \"action\": \"research.brief_created\", \"resource_type\": \"content_pieces\", \"resource_id\": \"{{ $('Brief parsen').item.json.piece_id }}\", \"result\": \"ok\" }"
},
"id": "audit-log",
"name": "Audit Log",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
1780,
380
]
}
],
"connections": {
"Mittwoch 11:00": {
"main": [
[
{
"node": "Beste Opportunity laden",
"type": "main",
"index": 0
}
]
]
},
"Manuell starten": {
"main": [
[
{
"node": "Beste Opportunity laden",
"type": "main",
"index": 0
}
]
]
},
"Beste Opportunity laden": {
"main": [
[
{
"node": "Topic extrahieren",
"type": "main",
"index": 0
}
]
]
},
"Topic extrahieren": {
"main": [
[
{
"node": "Research-Prompt bauen",
"type": "main",
"index": 0
}
]
]
},
"Research-Prompt bauen": {
"main": [
[
{
"node": "Gemini: Tiefenrecherche",
"type": "main",
"index": 0
}
]
]
},
"Gemini: Tiefenrecherche": {
"main": [
[
{
"node": "Brief parsen",
"type": "main",
"index": 0
}
]
]
},
"Brief parsen": {
"main": [
[
{
"node": "Research Piece anlegen",
"type": "main",
"index": 0
}
]
]
},
"Research Piece anlegen": {
"main": [
[
{
"node": "Audit Log",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
},
"tags": [
"research",
"insights",
"forecast",
"briefing"
]
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
30_360_DEEP_INSIGHTS. Uses httpRequest. Scheduled trigger; 9 nodes.
Source: https://github.com/timo-goetz-ai/apki-core-platform/blob/5cd9c9d9ed0ed464da995af94683e9301965a3bc/automations/n8n-workflows/research/30_360_DEEP_INSIGHTS.json — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Birthday Automation - Production (Fixed). Uses stopAndError, httpRequest, emailSend, bannerbear. Scheduled trigger; 86 nodes.
This template runs two scheduled workflows to govern Microsoft Entra ID (Azure AD) guest accounts by detecting stale users via Microsoft Graph, staging deletions in SharePoint with a 72-hour window, n
Jira-Allure-Auto-Qa. Uses httpRequest, jira. Scheduled trigger; 68 nodes.
Spotify-Sync-Surrealdb-V1. Uses httpRequest, n8n-nodes-surrealdb, spotify. Scheduled trigger; 62 nodes.
As n8n instances scale, teams often lose track of sub-workflows—who uses them, where they are referenced, and whether they can be safely updated. This leads to inefficiencies like unnecessary copies o