{"workflow":{"id":13003,"name":"Generate Japanese Twitter posts with GPT-4, quality control, and Notion","views":3,"recentViews":0,"totalViews":3,"createdAt":"2026-01-26T05:50:59.479Z","description":"## AI-Powered Japanese Social Media Content Generator with Quality Control\n\n### 🎯 Who's it for\n\nMarketing teams and social media managers in Japan who want to automate content creation while maintaining high quality standards and cultural appropriateness. Perfect for businesses that need consistent Japanese-language social media presence with built-in compliance checks.\n\n### 📝 What it does\n\nThis workflow creates an intelligent content generation system that:\n\n- Generates culturally-aware Japanese Twitter posts using GPT-4\n- Automatically scores content quality across 5 dimensions (engagement, SEO, brand voice, readability, CTA)\n- Performs sentiment analysis and risk detection for controversial topics\n- Routes content intelligently: auto-posts high-quality/low-risk content, flags medium-risk content for approval, and rejects high-risk content\n- Includes an auto-improvement loop that refines content up to 3 times if quality scores are below 70\n- Provides weekly performance analytics and recommendations\n\n### 🔧 How it works\n\n**Daily Content Generation Flow:**\n1. Schedule trigger runs weekday mornings at 9 AM\n2. Fetches Japanese cultural context (seasons, holidays, business events)\n3. Analyzes brand voice from past 30 days of posts\n4. Generates 3 Twitter post variations with GPT-4\n5. Each post is scored on quality metrics (100-point scale)\n6. Low-scoring content enters auto-improvement loop\n7. Risk analysis checks for controversy, cultural sensitivity, and sentiment\n8. Decision routing: auto-approve and post OR send for manual approval OR reject\n\n**Approval Workflow:**\n- Pending posts trigger approval emails\n- Webhook receives approval/rejection/edit actions\n- Approved posts are published to Twitter and archived in Notion\n\n**Weekly Analytics:**\n- Monday morning trigger analyzes past week's performance\n- GPT-4 generates insights report with best practices\n- Email sent to team with recommendations\n\n### ⚙️ Requirements\n\n**APIs & Credentials:**\n- OpenAI API (GPT-4 access)\n- Twitter API v2 with OAuth 2.0\n- Notion API (database for content storage)\n- Email sending service (SMTP or SendGrid)\n\n**Setup:**\n1. Create a Notion database with columns: Content, Hashtags, Quality Score, Risk Level, Status, Engagement\n2. Configure OpenAI API credentials with HTTP Header Auth\n3. Set up Twitter OAuth 2.0 credentials\n4. Configure email service for approval notifications\n\n### 🎨 How to customize\n\n**Adjust Quality Thresholds:**\n- Modify the quality scoring criteria in \"AI Quality Scoring\" node\n- Change auto-approval threshold (currently 70+ points)\n\n**Content Generation:**\n- Edit GPT-4 prompts in \"Generate Content with GPT-4\" node to match your brand tone\n- Adjust temperature settings for more/less creative content\n- Modify the number of posts generated per run\n\n**Risk Detection:**\n- Customize risk factors in \"Sentiment & Risk Analysis\" node\n- Add industry-specific compliance checks\n\n**Brand Voice Learning:**\n- Adjust the lookback period in \"Get Past 30 Days Posts\" (currently 30 days)\n- Modify brand voice analysis logic in \"Analyze Brand Voice\" node\n\n**Scheduling:**\n- Change cron expressions for daily content generation and weekly reports\n- Add additional triggers for special campaigns\n\n### ⚠️ Important Notes\n\n- This workflow uses Japanese language prompts - modify system prompts if using for other languages\n- Ensure compliance with Twitter's API rate limits and automation policies\n- Review auto-posted content regularly to validate AI quality assessments\n- The workflow stores all generated content in Notion for audit trails","workflow":{"meta":{"instanceId":"3ed66a67b0c238239f2bedab8649c4c1bccb59f66091f0a90b6a4631a3523e6a","templateId":"ready-to-run-ai-workflow","templateCredsSetupCompleted":true},"nodes":[{"id":"753b0708-0a28-4031-bfb1-d9adc567a0ab","name":"Sticky Note - Content Generation","type":"n8n-nodes-base.stickyNote","position":[-1504,-1088],"parameters":{"color":7,"width":400,"height":400,"content":"## 📅 Daily Content Generation Flow\n\nTriggers **Monday-Friday at 9:00 AM JST**\n\n**This section**:\n1. Gets Japanese cultural context (seasons, holidays, business events)\n2. Analyzes your past 30 days of posts for brand voice\n3. Generates 3 Twitter post options with GPT-4\n4. Considers current events and cultural appropriateness"},"typeVersion":1},{"id":"caf02274-68f6-4ce7-aa56-f79af9bea8eb","name":"Sticky Note - Quality Scoring","type":"n8n-nodes-base.stickyNote","position":[-832,-1152],"parameters":{"color":7,"width":380,"height":484,"content":"## 🎯 AI Quality Scoring System\n\n**Evaluates content on 100-point scale**:\n- Engagement prediction (30 pts)\n- SEO/discoverability (20 pts)\n- Brand voice alignment (20 pts)\n- Readability (15 pts)\n- CTA clarity (15 pts)\n\nContent scoring **below 70 points** triggers auto-improvement (up to 3 attempts)"},"typeVersion":1},{"id":"e4561ad5-a3be-4aef-a080-6204a9b9f81e","name":"Sticky Note - Improvement","type":"n8n-nodes-base.stickyNote","position":[-416,-1152],"parameters":{"color":7,"width":360,"height":396,"content":"## 🔄 Self-Improvement Loop\n\nIf content scores **< 70 points** and **< 3 improvement attempts**:\n\n1. GPT-4 rewrites based on specific feedback\n2. Re-evaluates with quality scoring\n3. Repeats up to 3 times\n\nAfter 3 attempts or score ≥70, proceeds to risk analysis"},"typeVersion":1},{"id":"5729b69f-86d8-47b5-99fd-1c526ae9c4bb","name":"Sticky Note - Risk Analysis","type":"n8n-nodes-base.stickyNote","position":[-32,-1280],"parameters":{"color":7,"width":360,"height":552,"content":"## ⚠️ Risk & Sentiment Analysis\n\n**Detects**:\n- Political/religious references\n- Gender/discriminatory language\n- Inappropriate disaster/accident mentions\n- Misleading advertising\n- Competitor attacks\n- Cultural taboos\n- Timing issues (mourning periods, etc.)\n\n**Risk levels**: low / medium / high"},"typeVersion":1},{"id":"aabaf71e-f6eb-4058-a84e-69a970e5fe00","name":"Sticky Note - Routing","type":"n8n-nodes-base.stickyNote","position":[448,-960],"parameters":{"color":7,"width":340,"height":504,"content":"## 🚦 Smart Routing Decision\n\n**Auto-approve** (posts immediately):\n- Quality score ≥ 70\n- Risk level = low\n\n**Requires approval**:\n- Quality score < 70 OR\n- Risk level = medium\n\n**Auto-reject**:\n- Risk level = high\n\n(Rejected content is saved to Notion for review)"},"typeVersion":1},{"id":"410eb215-935f-4c82-b5f0-1bd1e8580c57","name":"Sticky Note - Auto Approve","type":"n8n-nodes-base.stickyNote","position":[880,-880],"parameters":{"color":7,"width":320,"height":244,"content":"## ✅ Auto-Approved Path\n\n1. Saves to Notion (status: published)\n2. Posts to Twitter automatically\n3. No human intervention needed\n\nFor **high-confidence, low-risk content**"},"typeVersion":1},{"id":"f93e3471-ae8d-4c2c-bd98-5014c105c57f","name":"Sticky Note - Approval Path","type":"n8n-nodes-base.stickyNote","position":[880,-288],"parameters":{"color":7,"width":340,"height":324,"content":"## 👤 Human Approval Path\n\n1. Saves to Notion (status: pending)\n2. Sends email to approval team with:\n   - Content preview\n   - Quality scores\n   - Risk assessment\n   - Improvement history\n3. Awaits approval via webhook\n\n**Use the approval webhook** to approve/reject/edit"},"typeVersion":1},{"id":"ec996c7f-8057-496c-aef8-0e2615b096f0","name":"Sticky Note - Webhook","type":"n8n-nodes-base.stickyNote","position":[-1504,-320],"parameters":{"color":7,"width":360,"height":636,"content":"## 🔗 Approval Webhook\n\n**Endpoint**: `/approval-webhook`\n\n**Query parameters**:\n- `action`: approve / reject / edit\n- `id`: content ID from Notion\n\n**Body** (for edits):\n```json\n{\n  \"editedContent\": \"Modified text\",\n  \"approvedBy\": \"user@email.com\"\n}\n```\n\nApproved content gets posted to Twitter"},"typeVersion":1},{"id":"bd65c75e-d488-4c39-8467-d21c4f3824bc","name":"Sticky Note - Analytics","type":"n8n-nodes-base.stickyNote","position":[-1504,336],"parameters":{"color":7,"width":380,"height":512,"content":"## 📊 Weekly Analytics Report\n\n**Triggers**: Every Monday at 10:00 AM\n\n1. Fetches past week's posts from Notion\n2. GPT-4 analyzes performance data\n3. Generates insights report including:\n   - Performance summary\n   - Top 3 best posts\n   - Posts needing improvement\n   - Discovered trends/patterns\n   - Actionable recommendations\n4. Emails report to team\n\n**Helps optimize** future content strategy"},"typeVersion":1},{"id":"d6008133-2353-4db5-b7c1-e31c09be68ae","name":"Sticky Note - Brand Voice","type":"n8n-nodes-base.stickyNote","position":[-1072,-624],"parameters":{"color":7,"width":360,"height":420,"content":"## 🎨 Brand Voice Learning\n\nAnalyzes your **past 30 days** of posts:\n- Average post length\n- Emoji usage patterns\n- Common hashtags\n- Question-based posts frequency\n- Tone and phrasing\n\nGPT-4 creates a **brand voice profile** to ensure new content matches your established style"},"typeVersion":1},{"id":"006b450d-05ee-4bad-8b93-7f712ca365f7","name":"Schedule Daily Content Generation","type":"n8n-nodes-base.scheduleTrigger","position":[-1456,-608],"parameters":{"rule":{"interval":[{"field":"cronExpression","expression":"0 9 * * 1-5"}]}},"typeVersion":1.1},{"id":"4d9a56a3-0b26-4ea9-9967-1050459bc6c2","name":"Generate Content with GPT-4","type":"n8n-nodes-base.httpRequest","position":[-1232,-800],"parameters":{"url":"https://api.openai.com/v1/chat/completions","options":{},"sendBody":true,"sendHeaders":true,"authentication":"genericCredentialType","bodyParameters":{"parameters":[{"name":"model","value":"gpt-4"},{"name":"messages","value":"={{ [{\"role\": \"system\", \"content\": \"あなたは日本市場に特化したコンテンツマーケティングの専門家です。日本の文化、季節、ビジネス習慣を深く理解し、適切な敬語と親しみやすい文体でソーシャルメディア投稿を作成します。\"}, {\"role\": \"user\", \"content\": \"今日は\" + $now.format('yyyy年MM月dd日(ddd)') + \"です。以下の条件でTwitter投稿を3つ作成してください:\\n\\n1. 現在の季節や日本の文化的イベントを考慮\\n2. ビジネスパーソン向けの有益な内容\\n3. 絵文字を2-3個使用\\n4. 200文字以内\\n5. エンゲージメントを促すCTAを含む\\n\\n各投稿をJSON配列で返してください: [{\\\"content\\\": \\\"投稿文\\\", \\\"hashtags\\\": [\\\"タグ1\\\", \\\"タグ2\\\"]}]\"}] }}"},{"name":"temperature","value":"0.7"},{"name":"max_tokens","value":"1000"}]},"genericAuthType":"httpHeaderAuth","headerParameters":{"parameters":[{"name":"Content-Type","value":"application/json"}]}},"typeVersion":4.1},{"id":"bb8094a2-98eb-4e12-aa2c-a3f01a04fec8","name":"Parse Generated Content","type":"n8n-nodes-base.code","position":[-1008,-800],"parameters":{"jsCode":"// Parse GPT-4 response and extract generated content\nconst response = $input.item.json;\nconst content = JSON.parse(response.choices[0].message.content);\n\nconst results = [];\n\nfor (let i = 0; i < content.length; i++) {\n  const post = content[i];\n  results.push({\n    json: {\n      content: post.content,\n      hashtags: post.hashtags,\n      generatedAt: new Date().toISOString(),\n      platform: 'twitter',\n      status: 'pending_quality_check',\n      version: i + 1\n    }\n  });\n}\n\nreturn results;"},"typeVersion":2},{"id":"47c6f1df-ceab-4b18-b22f-4959d4be5760","name":"AI Quality Scoring","type":"n8n-nodes-base.httpRequest","position":[-784,-800],"parameters":{"url":"https://api.openai.com/v1/chat/completions","options":{},"sendBody":true,"sendHeaders":true,"authentication":"genericCredentialType","bodyParameters":{"parameters":[{"name":"model","value":"gpt-4"},{"name":"messages","value":"={{ [{\"role\": \"system\", \"content\": \"あなたはコンテンツ品質評価の専門家です。以下の基準で投稿を100点満点で採点してください:\\n\\n1. エンゲージメント予測 (30点): いいね・リツイート・コメントを獲得しやすいか\\n2. SEO/発見性 (20点): ハッシュタグと検索されやすいキーワード\\n3. ブランドボイス適合 (20点): プロフェッショナルで親しみやすいトーン\\n4. 読みやすさ (15点): 文法、句読点、改行の適切さ\\n5. CTA明確さ (15点): 行動喚起が明確か\\n\\nJSON形式で返答: {\\\"total_score\\\": 85, \\\"engagement_score\\\": 25, \\\"seo_score\\\": 18, \\\"brand_voice_score\\\": 18, \\\"readability_score\\\": 13, \\\"cta_score\\\": 11, \\\"feedback\\\": \\\"改善点の説明\\\", \\\"risk_level\\\": \\\"low/medium/high\\\", \\\"risk_reason\\\": \\\"リスクがある場合の理由\\\"}\"}, {\"role\": \"user\", \"content\": \"以下の投稿を評価してください:\\n\\n\" + $json.content + \"\\n\\nハッシュタグ: \" + $json.hashtags.join(', ')}] }}"},{"name":"temperature","value":"0.3"}]},"genericAuthType":"httpHeaderAuth","headerParameters":{"parameters":[{"name":"Content-Type","value":"application/json"}]}},"typeVersion":4.1},{"id":"a65792c4-475e-41db-a1bd-9e83a621a983","name":"Parse Quality Scores","type":"n8n-nodes-base.code","position":[-560,-864],"parameters":{"jsCode":"// Parse quality scoring results\nconst scoringResponse = $input.item.json;\nconst scores = JSON.parse(scoringResponse.choices[0].message.content);\n\n// Merge with original content\nconst originalData = $('Parse Generated Content').item.json;\n\nreturn {\n  json: {\n    ...originalData,\n    qualityScore: scores.total_score,\n    engagementScore: scores.engagement_score,\n    seoScore: scores.seo_score,\n    brandVoiceScore: scores.brand_voice_score,\n    readabilityScore: scores.readability_score,\n    ctaScore: scores.cta_score,\n    feedback: scores.feedback,\n    riskLevel: scores.risk_level,\n    riskReason: scores.risk_reason || 'None',\n    needsImprovement: scores.total_score < 70,\n    improvementAttempts: 0\n  }\n};"},"typeVersion":2},{"id":"ea9f9825-4276-4f12-a417-f06f757360ed","name":"Check if Improvement Needed","type":"n8n-nodes-base.if","position":[-336,-864],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"needs-improvement","operator":{"type":"boolean","operation":"equals"},"leftValue":"={{ $json.needsImprovement }}","rightValue":true},{"id":"improvement-attempts","operator":{"type":"number","operation":"lt"},"leftValue":"={{ $json.improvementAttempts }}","rightValue":"3"}]}},"typeVersion":2},{"id":"74c37691-36e4-4222-b281-f2ea2dd613a1","name":"Auto-Improve Content","type":"n8n-nodes-base.httpRequest","position":[64,-960],"parameters":{"url":"https://api.openai.com/v1/chat/completions","options":{},"sendBody":true,"sendHeaders":true,"authentication":"genericCredentialType","bodyParameters":{"parameters":[{"name":"model","value":"gpt-4"},{"name":"messages","value":"={{ [{\"role\": \"system\", \"content\": \"あなたはコンテンツ改善の専門家です。フィードバックに基づいて投稿を改善してください。\"}, {\"role\": \"user\", \"content\": \"以下の投稿を改善してください:\\n\\n元の投稿:\\n\" + $json.content + \"\\n\\n品質スコア: \" + $json.qualityScore + \"/100\\n\\n改善フィードバック:\\n\" + $json.feedback + \"\\n\\nリスクレベル: \" + $json.riskLevel + \"\\n\" + ($json.riskReason !== 'None' ? \"リスク理由: \" + $json.riskReason : '') + \"\\n\\n改善版をJSON形式で返してください: {\\\"content\\\": \\\"改善された投稿文\\\", \\\"hashtags\\\": [\\\"タグ1\\\", \\\"タグ2\\\"]}\"}] }}"},{"name":"temperature","value":"0.7"}]},"genericAuthType":"httpHeaderAuth","headerParameters":{"parameters":[{"name":"Content-Type","value":"application/json"}]}},"typeVersion":4.1},{"id":"833cc233-23d4-4d79-bc30-4e8f62d4f38c","name":"Parse Improved Content","type":"n8n-nodes-base.code","position":[288,-864],"parameters":{"jsCode":"// Parse improved content\nconst improveResponse = $input.item.json;\nconst improved = JSON.parse(improveResponse.choices[0].message.content);\n\n// Get original data\nconst originalData = $('Parse Quality Scores').item.json;\n\nreturn {\n  json: {\n    content: improved.content,\n    hashtags: improved.hashtags,\n    generatedAt: new Date().toISOString(),\n    platform: originalData.platform,\n    status: 'pending_quality_check',\n    version: originalData.version,\n    improvementAttempts: originalData.improvementAttempts + 1,\n    previousScore: originalData.qualityScore,\n    previousFeedback: originalData.feedback\n  }\n};"},"typeVersion":2},{"id":"07ea81b3-eea8-40b5-93bf-a102bbc9d6b2","name":"Sentiment & Risk Analysis","type":"n8n-nodes-base.httpRequest","position":[64,-784],"parameters":{"url":"https://api.openai.com/v1/chat/completions","options":{},"sendBody":true,"sendHeaders":true,"authentication":"genericCredentialType","bodyParameters":{"parameters":[{"name":"model","value":"gpt-4"},{"name":"messages","value":"={{ [{\"role\": \"system\", \"content\": \"あなたは日本市場に特化した感情分析とリスク検出の専門家です。以下の観点で分析してください:\\n\\n【炎上リスク要因】\\n1. 政治・宗教への言及\\n2. ジェンダー・差別的表現\\n3. 災害・事故への不適切な言及\\n4. 誇大広告・誤解を招く表現\\n5. 競合への攻撃的言及\\n\\n【日本文化的配慮】\\n1. 不適切な時期の投稿（喪中、災害直後等）\\n2. 敬語の誤用\\n3. 文化的タブー\\n\\nJSON形式で返答: {\\\"sentiment\\\": \\\"positive/neutral/negative\\\", \\\"risk_level\\\": \\\"low/medium/high\\\", \\\"risk_factors\\\": [\\\"要因1\\\", \\\"要因2\\\"], \\\"recommendations\\\": \\\"推奨事項\\\", \\\"cultural_appropriateness\\\": \\\"appropriate/needs_review/inappropriate\\\"}\"}, {\"role\": \"user\", \"content\": \"以下の投稿を分析してください:\\n\\n\" + $json.content}] }}"},{"name":"temperature","value":"0.2"}]},"genericAuthType":"httpHeaderAuth","headerParameters":{"parameters":[{"name":"Content-Type","value":"application/json"}]}},"typeVersion":4.1},{"id":"e31fb9b0-6bf9-4e05-91c3-ffbef666d5e6","name":"Merge Risk Analysis","type":"n8n-nodes-base.code","position":[464,-448],"parameters":{"jsCode":"// Parse sentiment and risk analysis\nconst analysisResponse = $input.item.json;\nconst analysis = JSON.parse(analysisResponse.choices[0].message.content);\n\n// Get content data\nconst contentData = $('Parse Quality Scores').item.json;\n\nreturn {\n  json: {\n    ...contentData,\n    sentiment: analysis.sentiment,\n    riskLevel: analysis.risk_level,\n    riskFactors: analysis.risk_factors,\n    recommendations: analysis.recommendations,\n    culturalAppropriateness: analysis.cultural_appropriateness,\n    finalRiskAssessment: analysis.risk_level === 'high' ? 'auto_reject' : (analysis.risk_level === 'medium' || contentData.qualityScore < 70) ? 'requires_approval' : 'auto_approve'\n  }\n};"},"typeVersion":2},{"id":"451a01cd-63ee-4f36-9363-083d0ee3e6f6","name":"Decision Routing","type":"n8n-nodes-base.if","position":[672,-608],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"auto-approve","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.finalRiskAssessment }}","rightValue":"auto_approve"}]}},"typeVersion":2},{"id":"ebb2b91a-1574-408a-ab8c-5148c985b575","name":"Save to Notion (Auto-Approved)","type":"n8n-nodes-base.notion","position":[912,-608],"parameters":{"pageId":{"__rl":true,"mode":"url","value":""},"options":{}},"typeVersion":2.1},{"id":"58147eae-9a9d-4a61-9153-611e3e958631","name":"Save to Notion (Pending Approval)","type":"n8n-nodes-base.notion","position":[912,-416],"parameters":{"pageId":{"__rl":true,"mode":"url","value":""},"options":{}},"typeVersion":2.1},{"id":"9013da0d-41b9-422c-91f9-926afbc6c497","name":"Send Approval Email","type":"n8n-nodes-base.emailSend","position":[1232,-416],"webhookId":"77e96129-c787-417b-9c48-cde1bcd684ad","parameters":{"options":{},"subject":"【要承認】AIコンテンツ - 品質スコア: {{ $json.qualityScore }}点 | リスク: {{ $json.riskLevel }}","toEmail":"user@example.com","fromEmail":"user@example.com"},"typeVersion":2.1},{"id":"4acc6a07-9613-4703-9232-bc3f3858fd8d","name":"Post to Twitter (Auto-Approved)","type":"n8n-nodes-base.httpRequest","position":[1232,-608],"parameters":{"url":"https://api.twitter.com/2/tweets","options":{},"sendBody":true,"authentication":"genericCredentialType","bodyParameters":{"parameters":[{"name":"text","value":"={{ $json.content + ' ' + $json.hashtags.map(tag => '#' + tag).join(' ') }}"}]},"genericAuthType":"oAuth2Api"},"typeVersion":4.1},{"id":"f599a7ef-39fb-46c7-8b1a-bcb7a589702e","name":"Get Japanese Cultural Context","type":"n8n-nodes-base.httpRequest","position":[-1232,-608],"parameters":{"url":"https://api.openai.com/v1/chat/completions","options":{},"sendBody":true,"sendHeaders":true,"authentication":"genericCredentialType","bodyParameters":{"parameters":[{"name":"model","value":"gpt-4"},{"name":"messages","value":"={{ [{\"role\": \"system\", \"content\": \"あなたは日本の季節・文化イベントの専門家です。現在の日付に基づいて、コンテンツに反映すべき文化的コンテキストを提供してください。\"}, {\"role\": \"user\", \"content\": \"今日は\" + $now.format('yyyy年MM月dd日(ddd)') + \"です。以下を教えてください:\\n\\n1. 現在の季節と特徴\\n2. 近日中の日本の祝日・記念日\\n3. ビジネスシーンで意識すべきイベント（決算期、ボーナス時期等）\\n4. SNS投稿で使うべき季節の表現やキーワード\\n5. 避けるべきトピック（喪中期間、災害記念日等）\\n\\nJSON形式で返答してください。\"}] }}"},{"name":"temperature","value":"0.5"}]},"genericAuthType":"httpHeaderAuth","headerParameters":{"parameters":[{"name":"Content-Type","value":"application/json"}]}},"typeVersion":4.1},{"id":"5f6ec1cb-e46b-4091-9b7c-3eeaa9600128","name":"Get Past 30 Days Posts","type":"n8n-nodes-base.notion","position":[-928,-320],"parameters":{"operation":"getAll"},"typeVersion":2.1},{"id":"7ad8ffaf-34f6-4550-a64f-327a1daa461b","name":"Analyze Brand Voice","type":"n8n-nodes-base.code","position":[-640,-320],"parameters":{"jsCode":"// Analyze past posts to create brand voice profile\nconst posts = $input.all();\n\nif (posts.length === 0) {\n  return {\n    json: {\n      brandVoiceProfile: \"デフォルトプロファイル: カジュアルで親しみやすく、ビジネスパーソン向けの有益な情報を提供\",\n      analyzedPosts: 0\n    }\n  };\n}\n\nconst contents = posts.map(p => p.json.Content || p.json.content).filter(c => c);\n\nconst analysisData = {\n  totalPosts: contents.length,\n  averageLength: Math.round(contents.reduce((sum, c) => sum + c.length, 0) / contents.length),\n  hashtagUsage: posts.flatMap(p => p.json.Hashtags || p.json.hashtags || []),\n  emojiCount: contents.reduce((sum, c) => sum + (c.match(/[\\u{1F300}-\\u{1F9FF}]/gu) || []).length, 0),\n  questionPosts: contents.filter(c => c.includes('?') || c.includes('?')).length\n};\n\nreturn {\n  json: {\n    brandVoiceAnalysis: analysisData,\n    analyzedPosts: contents.length,\n    topHashtags: [...new Set(analysisData.hashtagUsage)].slice(0, 10)\n  }\n};"},"typeVersion":2},{"id":"d437b5ec-fb0e-46e1-badb-bf1f7a5bf22b","name":"Create Brand Voice Profile","type":"n8n-nodes-base.httpRequest","position":[-368,-320],"parameters":{"url":"https://api.openai.com/v1/chat/completions","options":{},"sendBody":true,"sendHeaders":true,"authentication":"genericCredentialType","bodyParameters":{"parameters":[{"name":"model","value":"gpt-4"},{"name":"messages","value":"={{ [{\"role\": \"system\", \"content\": \"過去の投稿データから、ブランドボイスプロファイルを作成してください。\"}, {\"role\": \"user\", \"content\": \"以下のデータに基づいて、ブランドボイスプロファイルを作成してください:\\n\\n分析投稿数: \" + $json.analyzedPosts + \"\\n平均文字数: \" + $json.brandVoiceAnalysis.averageLength + \"\\n絵文字使用数: \" + $json.brandVoiceAnalysis.emojiCount + \"\\n質問形式投稿: \" + $json.brandVoiceAnalysis.questionPosts + \"\\nよく使うハッシュタグ: \" + $json.topHashtags.join(', ') + \"\\n\\nJSON形式で以下を返してください:\\n{\\\"tone\\\": \\\"文体の特徴\\\", \\\"emoji_usage\\\": \\\"絵文字使用ガイドライン\\\", \\\"average_length\\\": \\\"推奨文字数\\\", \\\"key_phrases\\\": [\\\"よく使うフレーズ\\\"], \\\"cta_style\\\": \\\"CTA(行動喚起)のスタイル\\\"}\"}] }}"}]},"genericAuthType":"httpHeaderAuth","headerParameters":{"parameters":[{"name":"Content-Type","value":"application/json"}]}},"typeVersion":4.1},{"id":"8fdc27ce-4ee6-4b4e-9a06-38db4f5b6d7f","name":"Webhook - Approval Dashboard","type":"n8n-nodes-base.webhook","position":[-1456,128],"webhookId":"approval-webhook","parameters":{"path":"approval-webhook","options":{}},"typeVersion":1.1},{"id":"b5e26e78-ec91-4c1f-b892-fa3c15b2d4ed","name":"Process Approval Action","type":"n8n-nodes-base.code","position":[-1248,128],"parameters":{"jsCode":"// Handle approval webhook\nconst action = $input.item.json.query.action; // approve, reject, edit\nconst contentId = $input.item.json.query.id;\nconst editedContent = $input.item.json.body?.editedContent;\n\nreturn {\n  json: {\n    action: action,\n    contentId: contentId,\n    editedContent: editedContent,\n    approvedBy: $input.item.json.body?.approvedBy || 'Unknown',\n    timestamp: new Date().toISOString()\n  }\n};"},"typeVersion":2},{"id":"0b302fff-97a9-48ba-9123-decbb8d3b370","name":"Check Approval Action","type":"n8n-nodes-base.if","position":[-1008,128],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"is-approved","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.action }}","rightValue":"approve"}]}},"typeVersion":2},{"id":"90bb9902-6237-4b2d-b132-d26515ca1921","name":"Update Notion - Approved","type":"n8n-nodes-base.notion","position":[-784,32],"parameters":{"operation":"update"},"typeVersion":2.1},{"id":"b2c8f814-39e4-4233-b35f-b65f0dcc1429","name":"Update Notion - Rejected","type":"n8n-nodes-base.notion","position":[-784,224],"parameters":{"operation":"update"},"typeVersion":2.1},{"id":"ba5bc1a8-dbd9-49b5-add9-a7bf257c6622","name":"Weekly Performance Report Trigger","type":"n8n-nodes-base.scheduleTrigger","position":[-1456,720],"parameters":{"rule":{"interval":[{"field":"cronExpression","expression":"0 10 * * 1"}]}},"typeVersion":1.1},{"id":"c45a573c-7956-4c4f-8fbe-372e8d0fba17","name":"Get Past Week Posts","type":"n8n-nodes-base.notion","position":[-1248,720],"parameters":{"operation":"getAll"},"typeVersion":2.1},{"id":"ae72df4a-5b2f-41bd-a58e-decaa7d0429c","name":"Generate Weekly Analytics Report","type":"n8n-nodes-base.httpRequest","position":[-1008,720],"parameters":{"url":"https://api.openai.com/v1/chat/completions","options":{},"sendBody":true,"sendHeaders":true,"authentication":"genericCredentialType","bodyParameters":{"parameters":[{"name":"model","value":"gpt-4"},{"name":"messages","value":"={{ [{\"role\": \"system\", \"content\": \"あなたはデータアナリストです。過去1週間のソーシャルメディアパフォーマンスを分析し、改善提案を行ってください。\"}, {\"role\": \"user\", \"content\": \"以下のデータを分析してください:\\n\\n\" + JSON.stringify($input.all().map(item => ({content: item.json.Content, qualityScore: item.json['Quality Score'], engagement: item.json.Engagement || 0, platform: item.json.Platform}))) + \"\\n\\n以下の形式でレポートを作成してください:\\n1. 総合パフォーマンスサマリー\\n2. ベストパフォーマンス投稿（TOP3）\\n3. 改善が必要な投稿\\n4. 発見されたトレンド・パターン\\n5. 次週への具体的な改善提案\\n\\nMarkdown形式で返してください。\"}] }}"},{"name":"temperature","value":"0.7"}]},"genericAuthType":"httpHeaderAuth","headerParameters":{"parameters":[{"name":"Content-Type","value":"application/json"}]}},"typeVersion":4.1},{"id":"b8903692-a75a-40d4-8bd1-d07cacf51efc","name":"Send Weekly Report Email","type":"n8n-nodes-base.emailSend","position":[-784,720],"webhookId":"006ff7d7-8f9e-433c-a4db-824abad52bf2","parameters":{"options":{},"subject":"📊 週次パフォーマンスレポート - {{ $now.format('yyyy年MM月dd日') }}","toEmail":"user@example.com","fromEmail":"user@example.com"},"typeVersion":2.1},{"id":"e4135011-c917-41db-90c7-7904781cc800","name":"Sticky Note - Main Overview","type":"n8n-nodes-base.stickyNote","position":[-2176,-1136],"parameters":{"width":560,"height":2164,"content":"## AI-Powered Japanese Social Media Content Generator with Quality Control\n\n### 🎯 Who's it for\n\nMarketing teams and social media managers in Japan who want to automate content creation while maintaining high quality standards and cultural appropriateness. Perfect for businesses that need consistent Japanese-language social media presence with built-in compliance checks.\n\n### 📝 What it does\n\nThis workflow creates an intelligent content generation system that:\n\n- Generates culturally-aware Japanese Twitter posts using GPT-4\n- Automatically scores content quality across 5 dimensions (engagement, SEO, brand voice, readability, CTA)\n- Performs sentiment analysis and risk detection for controversial topics\n- Routes content intelligently: auto-posts high-quality/low-risk content, flags medium-risk content for approval, and rejects high-risk content\n- Includes an auto-improvement loop that refines content up to 3 times if quality scores are below 70\n- Provides weekly performance analytics and recommendations\n\n### 🔧 How it works\n\n**Daily Content Generation Flow:**\n1. Schedule trigger runs weekday mornings at 9 AM\n2. Fetches Japanese cultural context (seasons, holidays, business events)\n3. Analyzes brand voice from past 30 days of posts\n4. Generates 3 Twitter post variations with GPT-4\n5. Each post is scored on quality metrics (100-point scale)\n6. Low-scoring content enters auto-improvement loop\n7. Risk analysis checks for controversy, cultural sensitivity, and sentiment\n8. Decision routing: auto-approve and post OR send for manual approval OR reject\n\n**Approval Workflow:**\n- Pending posts trigger approval emails\n- Webhook receives approval/rejection/edit actions\n- Approved posts are published to Twitter and archived in Notion\n\n**Weekly Analytics:**\n- Monday morning trigger analyzes past week's performance\n- GPT-4 generates insights report with best practices\n- Email sent to team with recommendations\n\n### ⚙️ Requirements\n\n**APIs & Credentials:**\n- OpenAI API (GPT-4 access)\n- Twitter API v2 with OAuth 2.0\n- Notion API (database for content storage)\n- Email sending service (SMTP or SendGrid)\n\n**Setup:**\n1. Create a Notion database with columns: Content, Hashtags, Quality Score, Risk Level, Status, Engagement\n2. Configure OpenAI API credentials with HTTP Header Auth\n3. Set up Twitter OAuth 2.0 credentials\n4. Configure email service for approval notifications\n\n### 🎨 How to customize\n\n**Adjust Quality Thresholds:**\n- Modify the quality scoring criteria in \"AI Quality Scoring\" node\n- Change auto-approval threshold (currently 70+ points)\n\n**Content Generation:**\n- Edit GPT-4 prompts in \"Generate Content with GPT-4\" node to match your brand tone\n- Adjust temperature settings for more/less creative content\n- Modify the number of posts generated per run\n\n**Risk Detection:**\n- Customize risk factors in \"Sentiment & Risk Analysis\" node\n- Add industry-specific compliance checks\n\n**Brand Voice Learning:**\n- Adjust the lookback period in \"Get Past 30 Days Posts\" (currently 30 days)\n- Modify brand voice analysis logic in \"Analyze Brand Voice\" node\n\n**Scheduling:**\n- Change cron expressions for daily content generation and weekly reports\n- Add additional triggers for special campaigns\n\n### ⚠️ Important Notes\n\n- This workflow uses Japanese language prompts - modify system prompts if using for other languages\n- Ensure compliance with Twitter's API rate limits and automation policies\n- Review auto-posted content regularly to validate AI quality assessments\n- The workflow stores all generated content in Notion for audit trails"},"typeVersion":1}],"pinData":{},"connections":{"Decision Routing":{"main":[[{"node":"Save to Notion (Auto-Approved)","type":"main","index":0}],[{"node":"Save to Notion (Pending Approval)","type":"main","index":0}]]},"AI Quality Scoring":{"main":[[{"node":"Parse Quality Scores","type":"main","index":0}]]},"Analyze Brand Voice":{"main":[[{"node":"Create Brand Voice Profile","type":"main","index":0}]]},"Get Past Week Posts":{"main":[[{"node":"Generate Weekly Analytics Report","type":"main","index":0}]]},"Merge Risk Analysis":{"main":[[{"node":"Decision Routing","type":"main","index":0}]]},"Auto-Improve Content":{"main":[[{"node":"Parse Improved Content","type":"main","index":0}]]},"Parse Quality Scores":{"main":[[{"node":"Check if Improvement Needed","type":"main","index":0}]]},"Check Approval Action":{"main":[[{"node":"Update Notion - Approved","type":"main","index":0}],[{"node":"Update Notion - Rejected","type":"main","index":0}]]},"Get Past 30 Days Posts":{"main":[[{"node":"Analyze Brand Voice","type":"main","index":0}]]},"Parse Improved Content":{"main":[[{"node":"AI Quality Scoring","type":"main","index":0}]]},"Parse Generated Content":{"main":[[{"node":"AI Quality Scoring","type":"main","index":0}]]},"Process Approval Action":{"main":[[{"node":"Check Approval Action","type":"main","index":0}]]},"Sentiment & Risk Analysis":{"main":[[{"node":"Merge Risk Analysis","type":"main","index":0}]]},"Check if Improvement Needed":{"main":[[{"node":"Auto-Improve Content","type":"main","index":0}],[{"node":"Sentiment & Risk Analysis","type":"main","index":0}]]},"Generate Content with GPT-4":{"main":[[{"node":"Parse Generated Content","type":"main","index":0}]]},"Webhook - Approval Dashboard":{"main":[[{"node":"Process Approval Action","type":"main","index":0}]]},"Save to Notion (Auto-Approved)":{"main":[[{"node":"Post to Twitter (Auto-Approved)","type":"main","index":0}]]},"Generate Weekly Analytics Report":{"main":[[{"node":"Send Weekly Report Email","type":"main","index":0}]]},"Save to Notion (Pending Approval)":{"main":[[{"node":"Send Approval Email","type":"main","index":0}]]},"Schedule Daily Content Generation":{"main":[[{"node":"Generate Content with GPT-4","type":"main","index":0},{"node":"Get Japanese Cultural Context","type":"main","index":0},{"node":"Get Past 30 Days Posts","type":"main","index":0}]]},"Weekly Performance Report Trigger":{"main":[[{"node":"Get Past Week Posts","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":39,"nodeTypes":{"n8n-nodes-base.if":{"count":3},"n8n-nodes-base.code":{"count":6},"n8n-nodes-base.notion":{"count":6},"n8n-nodes-base.webhook":{"count":1},"n8n-nodes-base.emailSend":{"count":2},"n8n-nodes-base.stickyNote":{"count":11},"n8n-nodes-base.httpRequest":{"count":8},"n8n-nodes-base.scheduleTrigger":{"count":2}}},"status":"published","readyToDemo":null,"user":{"name":"yuta tokumitsu","username":"yuta-tokumitsu","bio":"","verified":true,"links":[],"avatar":"https://gravatar.com/avatar/91257136a13385d7565347be73ba533b77ac08aed0e33de0e2132dc658942445?r=pg&d=retro&size=200"},"nodes":[{"id":11,"icon":"fa:envelope","name":"n8n-nodes-base.emailSend","codex":{"data":{"alias":["SMTP","email","human","form","wait","hitl","approval"],"resources":{"generic":[{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/","icon":"👦","label":"Build your own virtual assistant with n8n: A step by step guide"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.sendemail/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/sendemail/"}]},"categories":["Communication","HITL","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"HITL":["Human in the Loop"]}}},"group":"[\"output\"]","defaults":{"name":"Send Email","color":"#00bb88"},"iconData":{"icon":"envelope","type":"icon"},"displayName":"Send Email","typeVersion":2,"nodeCategories":[{"id":6,"name":"Communication"},{"id":9,"name":"Core Nodes"},{"id":28,"name":"HITL"}]},{"id":19,"icon":"file:httprequest.svg","name":"n8n-nodes-base.httpRequest","codex":{"data":{"alias":["API","Request","URL","Build","cURL"],"resources":{"generic":[{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/","icon":"✍️","label":"Learn how to automatically cross-post your content with n8n"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"url":"https://n8n.io/blog/what-are-apis-how-to-use-them-with-no-code/","icon":" 🪢","label":"What are APIs and how to use them with no code"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/world-poetry-day-workflow/","icon":"📜","label":"Celebrating World Poetry Day with a daily poem in Telegram"},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automate-designs-with-bannerbear-and-n8n/","icon":"🎨","label":"Automate Designs with Bannerbear and n8n"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/how-to-use-the-http-request-node-the-swiss-army-knife-for-workflow-automation/","icon":"🧰","label":"How to use the HTTP Request Node - The Swiss Army Knife for Workflow Automation"},{"url":"https://n8n.io/blog/learn-how-to-use-webhooks-with-mattermost-slash-commands/","icon":"🦄","label":"Learn how to use webhooks with Mattermost slash commands"},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/automations-for-activists/","icon":"✨","label":"How Common Knowledge use workflow automation for activism"},{"url":"https://n8n.io/blog/creating-scheduled-text-affirmations-with-n8n/","icon":"🤟","label":"Creating scheduled text affirmations with n8n"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"output\"]","defaults":{"name":"HTTP Request","color":"#0004F5"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MCAyMEM0MCA4Ljk1MzE0IDMxLjA0NjkgMCAyMCAwQzguOTUzMTQgMCAwIDguOTUzMTQgMCAyMEMwIDMxLjA0NjkgOC45NTMxNCA0MCAyMCA0MEMzMS4wNDY5IDQwIDQwIDMxLjA0NjkgNDAgMjBaTTIwIDM2Ljk0NThDMTguODg1MiAzNi45NDU4IDE3LjEzNzggMzUuOTY3IDE1LjQ5OTggMzIuNjk4NUMxNC43OTY0IDMxLjI5MTggMTQuMTk2MSAyOS41NDMxIDEzLjc1MjYgMjcuNjg0N0gyNi4xODk4QzI1LjgwNDUgMjkuNTQwMyAyNS4yMDQ0IDMxLjI5MDEgMjQuNTAwMiAzMi42OTg1QzIyLjg2MjIgMzUuOTY3IDIxLjExNDggMzYuOTQ1OCAyMCAzNi45NDU4Wk0xMi45MDY0IDIwQzEyLjkwNjQgMjEuNjA5NyAxMy4wMDg3IDIzLjE2NCAxMy4yMDAzIDI0LjYzMDVIMjYuNzk5N0MyNi45OTEzIDIzLjE2NCAyNy4wOTM2IDIxLjYwOTcgMjcuMDkzNiAyMEMyNy4wOTM2IDE4LjM5MDMgMjYuOTkxMyAxNi44MzYgMjYuNzk5NyAxNS4zNjk1SDEzLjIwMDNDMTMuMDA4NyAxNi44MzYgMTIuOTA2NCAxOC4zOTAzIDEyLjkwNjQgMjBaTTIwIDMuMDU0MTlDMjEuMTE0OSAzLjA1NDE5IDIyLjg2MjIgNC4wMzA3OCAyNC41MDAxIDcuMzAwMzlDMjUuMjA2NiA4LjcxNDA4IDI1LjgwNzIgMTAuNDA2NyAyNi4xOTIgMTIuMzE1M0gxMy43NTAxQzE0LjE5MzMgMTAuNDA0NyAxNC43OTQyIDguNzEyNTQgMTUuNDk5OCA3LjMwMDY0QzE3LjEzNzcgNC4wMzA4MyAxOC44ODUxIDMuMDU0MTkgMjAgMy4wNTQxOVpNMzAuMTQ3OCAyMEMzMC4xNDc4IDE4LjQwOTkgMzAuMDU0MyAxNi44NjE3IDI5LjgyMjcgMTUuMzY5NUgzNi4zMDQyQzM2LjcyNTIgMTYuODQyIDM2Ljk0NTggMTguMzk2NCAzNi45NDU4IDIwQzM2Ljk0NTggMjEuNjAzNiAzNi43MjUyIDIzLjE1OCAzNi4zMDQyIDI0LjYzMDVIMjkuODIyN0MzMC4wNTQzIDIzLjEzODMgMzAuMTQ3OCAyMS41OTAxIDMwLjE0NzggMjBaTTI2LjI3NjcgNC4yNTUxMkMyNy42MzY1IDYuMzYwMTkgMjguNzExIDkuMTMyIDI5LjM3NzQgMTIuMzE1M0gzNS4xMDQ2QzMzLjI1MTEgOC42NjggMzAuMTA3IDUuNzgzNDYgMjYuMjc2NyA0LjI1NTEyWk0xMC42MjI2IDEyLjMxNTNINC44OTI5M0M2Ljc1MTQ3IDguNjY3ODQgOS44OTM1MSA1Ljc4MzQxIDEzLjcyMzIgNC4yNTUxM0MxMi4zNjM1IDYuMzYwMjEgMTEuMjg5IDkuMTMyMDEgMTAuNjIyNiAxMi4zMTUzWk0zLjA1NDE5IDIwQzMuMDU0MTkgMjEuNjAzIDMuMjc3NDMgMjMuMTU3NSAzLjY5NDg0IDI0LjYzMDVIMTAuMTIxN0M5Ljk0NjE5IDIzLjE0MiA5Ljg1MjIyIDIxLjU5NDMgOS44NTIyMiAyMEM5Ljg1MjIyIDE4LjQwNTcgOS45NDYxOSAxNi44NTggMTAuMTIxNyAxNS4zNjk1SDMuNjk0ODRDMy4yNzc0MyAxNi44NDI1IDMuMDU0MTkgMTguMzk3IDMuMDU0MTkgMjBaTTI2LjI3NjYgMzUuNzQyN0MyNy42MzY1IDMzLjYzOTMgMjguNzExIDMwLjg2OCAyOS4zNzc0IDI3LjY4NDdIMzUuMTA0NkMzMy4yNTEgMzEuMzMyMiAzMC4xMDY4IDM0LjIxNzkgMjYuMjc2NiAzNS43NDI3Wk0xMy43MjM0IDM1Ljc0MjdDOS44OTM2OSAzNC4yMTc5IDYuNzUxNTUgMzEuMzMyNCA0Ljg5MjkzIDI3LjY4NDdIMTAuNjIyNkMxMS4yODkgMzAuODY4IDEyLjM2MzUgMzMuNjM5MyAxMy43MjM0IDM1Ljc0MjdaIiBmaWxsPSIjM0E0MkU5Ii8+Cjwvc3ZnPgo="},"displayName":"HTTP Request","typeVersion":4,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":20,"icon":"fa:map-signs","name":"n8n-nodes-base.if","codex":{"data":{"alias":["Router","Filter","Condition","Logic","Boolean","Branch"],"details":"The IF node can be used to implement binary conditional logic in your workflow. You can set up one-to-many conditions to evaluate each item of data being inputted into the node. That data will either evaluate to TRUE or FALSE and route out of the node accordingly.\n\nThis node has multiple types of conditions: Bool, String, Number, and Date & Time.","resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/create-a-toxic-language-detector-for-telegram/","icon":"🤬","label":"Create a toxic language detector for Telegram in 4 step"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"If","color":"#408000"},"iconData":{"icon":"map-signs","type":"icon"},"displayName":"If","typeVersion":2,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":47,"icon":"file:webhook.svg","name":"n8n-nodes-base.webhook","codex":{"data":{"alias":["HTTP","API","Build","WH"],"resources":{"generic":[{"url":"https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/","icon":"✍️","label":"Learn how to automatically cross-post your content with n8n"},{"url":"https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/what-are-apis-how-to-use-them-with-no-code/","icon":" 🪢","label":"What are APIs and how to use them with no code"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/how-a-digital-strategist-uses-n8n-for-online-marketing/","icon":"💻","label":"How a digital strategist uses n8n for online marketing"},{"url":"https://n8n.io/blog/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/","icon":"📹","label":"The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"},{"url":"https://n8n.io/blog/how-to-automatically-give-kudos-to-contributors-with-github-slack-and-n8n/","icon":"👏","label":"How to automatically give kudos to contributors with GitHub, Slack, and n8n"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/creating-custom-incident-response-workflows-with-n8n/","label":"How to automate every step of an incident response workflow"},{"url":"https://n8n.io/blog/learn-to-build-powerful-api-endpoints-using-webhooks/","icon":"🧰","label":"Learn to Build Powerful API Endpoints Using Webhooks"},{"url":"https://n8n.io/blog/learn-how-to-use-webhooks-with-mattermost-slash-commands/","icon":"🦄","label":"Learn how to use webhooks with Mattermost slash commands"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"trigger\"]","defaults":{"name":"Webhook"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCI+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTM1IDM3Yy0yLjIgMC00LTEuOC00LTRzMS44LTQgNC00IDQgMS44IDQgNC0xLjggNC00IDQiLz48cGF0aCBmaWxsPSIjMzc0NzRmIiBkPSJNMzUgNDNjLTMgMC01LjktMS40LTcuOC0zLjdsMy4xLTIuNWMxLjEgMS40IDIuOSAyLjMgNC43IDIuMyAzLjMgMCA2LTIuNyA2LTZzLTIuNy02LTYtNmMtMSAwLTIgLjMtMi45LjdsLTEuNyAxTDIzLjMgMTZsMy41LTEuOSA1LjMgOS40YzEtLjMgMi0uNSAzLS41IDUuNSAwIDEwIDQuNSAxMCAxMFM0MC41IDQzIDM1IDQzIi8+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTE0IDQzQzguNSA0MyA0IDM4LjUgNCAzM2MwLTQuNiAzLjEtOC41IDcuNS05LjdsMSAzLjlDOS45IDI3LjkgOCAzMC4zIDggMzNjMCAzLjMgMi43IDYgNiA2czYtMi43IDYtNnYtMmgxNXY0SDIzLjhjLS45IDQuNi01IDgtOS44IDgiLz48cGF0aCBmaWxsPSIjZTkxZTYzIiBkPSJNMTQgMzdjLTIuMiAwLTQtMS44LTQtNHMxLjgtNCA0LTQgNCAxLjggNCA0LTEuOCA0LTQgNCIvPjxwYXRoIGZpbGw9IiMzNzQ3NGYiIGQ9Ik0yNSAxOWMtMi4yIDAtNC0xLjgtNC00czEuOC00IDQtNCA0IDEuOCA0IDQtMS44IDQtNCA0Ii8+PHBhdGggZmlsbD0iI2U5MWU2MyIgZD0ibTE1LjcgMzQtMy40LTIgNS45LTkuN2MtMi0xLjktMy4yLTQuNS0zLjItNy4zIDAtNS41IDQuNS0xMCAxMC0xMHMxMCA0LjUgMTAgMTBjMCAuOS0uMSAxLjctLjMgMi41bC0zLjktMWMuMS0uNS4yLTEgLjItMS41IDAtMy4zLTIuNy02LTYtNnMtNiAyLjctNiA2YzAgMi4xIDEuMSA0IDIuOSA1LjFsMS43IDF6Ii8+PC9zdmc+"},"displayName":"Webhook","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":487,"icon":"file:notion.svg","name":"n8n-nodes-base.notion","codex":{"data":{"resources":{"generic":[{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.notion/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/notion/"}]},"categories":["Productivity"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"output\"]","defaults":{"name":"Notion"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjU4Mjc2IDYuOTc2NzlDOC44MjA0NyA3Ljk4MjM4IDkuMjg0NzkgNy45MDU2NiAxMS42MDkxIDcuNzUwNTdMMzMuNTIwNiA2LjQzNDg4QzMzLjk4NTMgNi40MzQ4OCAzMy41OTg5IDUuOTcxMjcgMzMuNDQzOSA1Ljg5NDIzTDI5LjgwNDkgMy4yNjM0OEMyOS4xMDc2IDIuNzIyMTMgMjguMTc4NiAyLjEwMjE3IDI2LjM5ODIgMi4yNTcyNkw1LjE4MTE1IDMuODA0NzZDNC40MDczNiAzLjg4MTQ4IDQuMjUyODIgNC4yNjgzNyA0LjU2MDk2IDQuNTc4NDdMNy41ODI3NiA2Ljk3Njc5Wk04Ljg5ODI5IDEyLjA4MzNWMzUuMTM4MUM4Ljg5ODI5IDM2LjM3NzEgOS41MTc0NiAzNi44NDA3IDEwLjkxMSAzNi43NjRMMzQuOTkxOSAzNS4zNzA2QzM2LjM4NjIgMzUuMjkzOSAzNi41NDE1IDM0LjQ0MTcgMzYuNTQxNSAzMy40MzUyVjEwLjUzNTFDMzYuNTQxNSA5LjUzMDE5IDM2LjE1NDkgOC45ODgyOSAzNS4zMDE0IDkuMDY1NjRMMTAuMTM2NyAxMC41MzUxQzkuMjA3OTkgMTAuNjEzMSA4Ljg5ODIxIDExLjA3NzcgOC44OTgyMSAxMi4wODMzSDguODk4MjlaTTMyLjY3MDggMTMuMzJDMzIuODI1MiAxNC4wMTcgMzIuNjcwOCAxNC43MTMzIDMxLjk3MjUgMTQuNzkxN0wzMC44MTIzIDE1LjAyMjlWMzIuMDQzNEMyOS44MDQ5IDMyLjU4NDggMjguODc1OSAzMi44OTQ0IDI4LjEwMTggMzIuODk0NEMyNi44NjI1IDMyLjg5NDQgMjYuNTUyMSAzMi41MDcyIDI1LjYyMzcgMzEuMzQ3NEwxOC4wMzQzIDE5LjQzMjlWMzAuOTYwNUwyMC40MzU5IDMxLjUwMjRDMjAuNDM1OSAzMS41MDI0IDIwLjQzNTkgMzIuODk0NCAxOC40OTgzIDMyLjg5NDRMMTMuMTU2OCAzMy4yMDQyQzEzLjAwMTYgMzIuODk0NCAxMy4xNTY4IDMyLjEyMTQgMTMuNjk4NiAzMS45NjY1TDE1LjA5MjUgMzEuNTgwMlYxNi4zMzg1TDEzLjE1NzIgMTYuMTgzNEMxMy4wMDE5IDE1LjQ4NjQgMTMuMzg4NSAxNC40ODE0IDE0LjQ3MzMgMTQuNDAzNUwyMC4yMDM1IDE0LjAxNzJMMjguMTAxOCAyNi4wODY4VjE1LjQwOTdMMjYuMDg4MSAxNS4xNzg2QzI1LjkzMzUgMTQuMzI2NSAyNi41NTIxIDEzLjcwNzggMjcuMzI2NSAxMy42MzExTDMyLjY3MDggMTMuMzJaTTMuMzk5NzMgMS43MTU5OEwyNS40Njg4IDAuMDkwNzQ1N0MyOC4xNzkgLTAuMTQxNjg4IDI4Ljg3NjMgMC4wMTQwMjQ1IDMwLjU3OTYgMS4yNTEzNUwzNy42MjQzIDYuMjAyNzZDMzguNzg2NyA3LjA1NDIxIDM5LjE3NDIgNy4yODYwMiAzOS4xNzQyIDguMjE0MTlWMzUuMzcwNkMzOS4xNzQyIDM3LjA3MjYgMzguNTU0MiAzOC4wNzkxIDM2LjM4NjUgMzguMjMzMUwxMC43NTc3IDM5Ljc4MDdDOS4xMzA0OSAzOS44NTgzIDguMzU2MDcgMzkuNjI2NCA3LjUwMzkyIDM4LjU0MjZMMi4zMTYwOCAzMS44MTE3QzEuMzg2NTggMzAuNTcyNiAxIDI5LjY0NTcgMSAyOC41NjEzVjQuNDIyODNDMSAzLjAzMTA1IDEuNjIwMTkgMS44NzAwNSAzLjM5OTczIDEuNzE1OThWMS43MTU5OFoiIGZpbGw9ImJsYWNrIi8+Cjwvc3ZnPgo="},"displayName":"Notion","typeVersion":2,"nodeCategories":[{"id":4,"name":"Productivity"}]},{"id":565,"icon":"fa:sticky-note","name":"n8n-nodes-base.stickyNote","codex":{"data":{"alias":["Comments","Notes","Sticky"],"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\"]","defaults":{"name":"Sticky Note","color":"#FFD233"},"iconData":{"icon":"sticky-note","type":"icon"},"displayName":"Sticky Note","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":834,"icon":"file:code.svg","name":"n8n-nodes-base.code","codex":{"data":{"alias":["cpde","Javascript","JS","Python","Script","Custom Code","Function"],"details":"The Code node allows you to execute JavaScript in your workflow.","resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Code"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTcxXzQ0MSkiPgo8cGF0aCBkPSJNMTcwLjI4MyA0OEgxOTYuNUMyMDMuMTI3IDQ4IDIwOC41IDQyLjYyNzQgMjA4LjUgMzZWMTJDMjA4LjUgNS4zNzI1OCAyMDMuMTI3IDAgMTk2LjUgMEgxNzAuMjgzQzEyNi4xIDAgOTAuMjgzIDM1LjgxNzIgOTAuMjgzIDgwVjE3NkM5MC4yODMgMjA2LjkyOCA2NS4yMTA5IDIzMiAzNC4yODMgMjMySDIzQzE2LjM3MjYgMjMyIDExIDIzNy4zNzIgMTEgMjQ0VjI2OEMxMSAyNzQuNjI3IDE2LjM3MjQgMjgwIDIyLjk5OTYgMjgwTDM0LjI4MyAyODBDNjUuMjEwOSAyODAgOTAuMjgzIDMwNS4wNzIgOTAuMjgzIDMzNlY0NDBDOTAuMjgzIDQ3OS43NjQgMTIyLjUxOCA1MTIgMTYyLjI4MyA1MTJIMTk2LjVDMjAzLjEyNyA1MTIgMjA4LjUgNTA2LjYyNyAyMDguNSA1MDBWNDc2QzIwOC41IDQ2OS4zNzMgMjAzLjEyNyA0NjQgMTk2LjUgNDY0SDE2Mi4yODNDMTQ5LjAyOCA0NjQgMTM4LjI4MyA0NTMuMjU1IDEzOC4yODMgNDQwVjMzNkMxMzguMjgzIDMwOS4wMjIgMTI4LjAxMSAyODQuNDQzIDExMS4xNjQgMjY1Ljk2MUMxMDYuMTA5IDI2MC40MTYgMTA2LjEwOSAyNTEuNTg0IDExMS4xNjQgMjQ2LjAzOUMxMjguMDExIDIyNy41NTcgMTM4LjI4MyAyMDIuOTc4IDEzOC4yODMgMTc2VjgwQzEzOC4yODMgNjIuMzI2OSAxNTIuNjEgNDggMTcwLjI4MyA0OFoiIGZpbGw9IiNGRjk5MjIiLz4KPHBhdGggZD0iTTMwNSAzNkMzMDUgNDIuNjI3NCAzMTAuMzczIDQ4IDMxNyA0OEgzNDIuOTc5QzM2MC42NTIgNDggMzc0Ljk3OCA2Mi4zMjY5IDM3NC45NzggODBWMTc2QzM3NC45NzggMjAyLjk3OCAzODUuMjUxIDIyNy41NTcgNDAyLjA5OCAyNDYuMDM5QzQwNy4xNTMgMjUxLjU4NCA0MDcuMTUzIDI2MC40MTYgNDAyLjA5OCAyNjUuOTYxQzM4NS4yNTEgMjg0LjQ0MyAzNzQuOTc4IDMwOS4wMjIgMzc0Ljk3OCAzMzZWNDMyQzM3NC45NzggNDQ5LjY3MyAzNjAuNjUyIDQ2NCAzNDIuOTc5IDQ2NEgzMTdDMzEwLjM3MyA0NjQgMzA1IDQ2OS4zNzMgMzA1IDQ3NlY1MDBDMzA1IDUwNi42MjcgMzEwLjM3MyA1MTIgMzE3IDUxMkgzNDIuOTc5QzM4Ny4xNjEgNTEyIDQyMi45NzggNDc2LjE4MyA0MjIuOTc4IDQzMlYzMzZDNDIyLjk3OCAzMDUuMDcyIDQ0OC4wNTEgMjgwIDQ3OC45NzkgMjgwSDQ5MEM0OTYuNjI3IDI4MCA1MDIgMjc0LjYyOCA1MDIgMjY4VjI0NEM1MDIgMjM3LjM3MyA0OTYuNjI4IDIzMiA0OTAgMjMyTDQ3OC45NzkgMjMyQzQ0OC4wNTEgMjMyIDQyMi45NzggMjA2LjkyOCA0MjIuOTc4IDE3NlY4MEM0MjIuOTc4IDM1LjgxNzIgMzg3LjE2MSAwIDM0Mi45NzkgMEgzMTdDMzEwLjM3MyAwIDMwNSA1LjM3MjU4IDMwNSAxMlYzNloiIGZpbGw9IiNGRjk5MjIiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTcxXzQ0MSI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="},"displayName":"Code","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":839,"icon":"fa:clock","name":"n8n-nodes-base.scheduleTrigger","codex":{"data":{"alias":["Time","Scheduler","Polling","Cron","Interval"],"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.scheduletrigger/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"trigger\",\"schedule\"]","defaults":{"name":"Schedule Trigger","color":"#31C49F"},"iconData":{"icon":"clock","type":"icon"},"displayName":"Schedule Trigger","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]}],"categories":[{"id":31,"name":"Content Creation"},{"id":51,"name":"Multimodal AI"}],"image":[]}}