AutomationFlowsAI & RAG › Content Generation & Calendar

Content Generation & Calendar

Content Generation & Calendar. Uses anthropic, httpRequest. Event-driven trigger; 8 nodes.

Event trigger★★★★☆ complexityAI-powered8 nodesAnthropicHTTP Request
AI & RAG Trigger: Event Nodes: 8 Complexity: ★★★★☆ AI nodes: yes Added:

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 →

Download .json
{
  "name": "Content Generation & Calendar",
  "nodes": [
    {
      "parameters": {},
      "id": "node_manual_trigger",
      "name": "Manual Trigger",
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [
        100,
        100
      ]
    },
    {
      "parameters": {
        "functionCode": "// Define content request template\nconst contentRequest = {\n  content_type: 'LinkedIn Post',\n  topic: 'Capital intelligence in Dubai real estate',\n  tone: 'Strategic, data-driven',\n  target_audience: 'HNWIs, institutional investors',\n  key_points: [\n    'Asymmetric information creates alpha',\n    'DLD transaction depth validates entry efficiency',\n    'Institutional discipline beats mass-market noise'\n  ],\n  max_words: 280,\n  include_call_to_action: false\n};\n\nreturn [{\n  request_id: 'content_' + Date.now(),\n  content_request: contentRequest,\n  requested_at: new Date().toISOString()\n}];"
      },
      "id": "node_define_request",
      "name": "Define Content Request",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        300,
        100
      ]
    },
    {
      "parameters": {
        "resource": "message",
        "model": "claude-3-5-sonnet-20241022",
        "messages": {
          "values": [
            {
              "content": "Create content for Titan Crest based on this request:\n\nType: {{ $input.first().content_request.content_type }}\nTopic: {{ $input.first().content_request.topic }}\nTone: {{ $input.first().content_request.tone }}\nAudience: {{ $input.first().content_request.target_audience }}\nKey Points: {{ JSON.stringify($input.first().content_request.key_points) }}\nMax Words: {{ $input.first().content_request.max_words }}\n\nDeliverables:\n1. Primary content ({{ $input.first().content_request.max_words }} words max)\n2. Alternative opening (3 options)\n3. Recommended posting time\n4. Hashtags (3-5)\n\nConstraints:\n- NO emojis\n- NO hype language ('best', '#1', 'game-changer')\n- NO motivational language\n- Data-driven, institutional tone\n- Appropriate for C-suite audience",
              "role": "user"
            }
          ]
        }
      },
      "id": "node_claude_generate",
      "name": "Claude - Generate Draft",
      "type": "n8n-nodes-base.anthropic",
      "typeVersion": 1,
      "position": [
        500,
        100
      ]
    },
    {
      "parameters": {
        "functionCode": "// Enforce Titan Crest brand rules\nconst content = $input.first().message.content;\nconst prohibited_terms = ['best', '#1', 'game changer', 'revolutionary', 'guaranteed', 'assured', 'best deal', 'dream home', 'excited to share', 'hope this helps'];\nconst violations = [];\n\nprohibited_terms.forEach(term => {\n  if (content.toLowerCase().includes(term.toLowerCase())) {\n    violations.push(term);\n  }\n});\n\nconst brand_compliant = violations.length === 0;\n\nreturn [{\n  ...($input.first()),\n  brand_check: {\n    compliant: brand_compliant,\n    violations: violations,\n    status: brand_compliant ? 'PASSED' : 'REQUIRES_REVISION'\n  }\n}];"
      },
      "id": "node_enforce_brand",
      "name": "Enforce Brand Rules",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        700,
        100
      ]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://maqqjchekovcgtbzrbrv.supabase.co/rest/v1/content_queue",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer {{ $env.SUPABASE_SERVICE_ROLE_KEY }}"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        },
        "requestFormat": "json",
        "jsonParameters": {
          "parameters": [
            {
              "name": "content_type",
              "value": "{{ $input.first().content_request.content_type }}"
            },
            {
              "name": "content_draft",
              "value": "{{ $input.first().message.content }}"
            },
            {
              "name": "topic",
              "value": "{{ $input.first().content_request.topic }}"
            },
            {
              "name": "status",
              "value": "{{ $input.first().brand_check.status }}"
            },
            {
              "name": "brand_violations",
              "value": "={{ JSON.stringify($input.first().brand_check.violations) }}"
            },
            {
              "name": "created_at",
              "value": "={{ new Date().toISOString() }}"
            }
          ]
        }
      },
      "id": "node_queue_content",
      "name": "Queue Content",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4,
      "position": [
        900,
        100
      ]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://maqqjchekovcgtbzrbrv.supabase.co/rest/v1/pa_review_queue",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer {{ $env.SUPABASE_SERVICE_ROLE_KEY }}"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        },
        "requestFormat": "json",
        "jsonParameters": {
          "parameters": [
            {
              "name": "item_type",
              "value": "CONTENT_DRAFT"
            },
            {
              "name": "item_reference",
              "value": "{{ $input.first().request_id }}"
            },
            {
              "name": "content_summary",
              "value": "{{ $input.first().content_request.topic }}"
            },
            {
              "name": "status",
              "value": "PENDING_REVIEW"
            },
            {
              "name": "review_points",
              "value": "1. Data Authenticity\n2. Legal Compliance\n3. Brand Tone\n4. Investor Appropriateness\n5. Inference Validity"
            },
            {
              "name": "created_at",
              "value": "={{ new Date().toISOString() }}"
            }
          ]
        }
      },
      "id": "node_create_pa_review",
      "name": "Create PA Review Request",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4,
      "position": [
        1100,
        100
      ]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://maqqjchekovcgtbzrbrv.supabase.co/rest/v1/execution_logs",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer {{ $env.SUPABASE_SERVICE_ROLE_KEY }}"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        },
        "requestFormat": "json",
        "jsonParameters": {
          "parameters": [
            {
              "name": "workflow_name",
              "value": "Content Generation & Calendar"
            },
            {
              "name": "workflow_run_id",
              "value": "={{ $execution.id }}"
            },
            {
              "name": "status",
              "value": "COMPLETED"
            },
            {
              "name": "action_log",
              "value": "Content drafted and queued for PA review. Brand check: {{ $input.first().brand_check.status }}. Type: {{ $input.first().content_request.content_type }}"
            },
            {
              "name": "execution_timestamp",
              "value": "={{ new Date().toISOString() }}"
            }
          ]
        }
      },
      "id": "node_audit_log",
      "name": "Write Audit Log",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4,
      "position": [
        1300,
        100
      ]
    },
    {
      "parameters": {
        "responseData": "={{ { success: true, request_id: $input.first().request_id, status: $input.first().brand_check.status, message: 'Content generated and queued for PA review' } }}"
      },
      "id": "node_respond_success",
      "name": "Respond - Success",
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1,
      "position": [
        1500,
        100
      ]
    }
  ],
  "connections": {
    "node_manual_trigger": {
      "main": [
        [
          {
            "node": "node_define_request",
            "branch": 0
          }
        ]
      ]
    },
    "node_define_request": {
      "main": [
        [
          {
            "node": "node_claude_generate",
            "branch": 0
          }
        ]
      ]
    },
    "node_claude_generate": {
      "main": [
        [
          {
            "node": "node_enforce_brand",
            "branch": 0
          }
        ]
      ]
    },
    "node_enforce_brand": {
      "main": [
        [
          {
            "node": "node_queue_content",
            "branch": 0
          }
        ]
      ]
    },
    "node_queue_content": {
      "main": [
        [
          {
            "node": "node_create_pa_review",
            "branch": 0
          }
        ]
      ]
    },
    "node_create_pa_review": {
      "main": [
        [
          {
            "node": "node_audit_log",
            "branch": 0
          }
        ]
      ]
    },
    "node_audit_log": {
      "main": [
        [
          {
            "node": "node_respond_success",
            "branch": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1"
  }
}
Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Content Generation & Calendar. Uses anthropic, httpRequest. Event-driven trigger; 8 nodes.

Source: https://gist.github.com/prateekgehlot09/37341cecd133286bbbc84ec6be171b90 — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

This n8n workflow automatically generates a comprehensive dataset of 50 AI search prompts tailored to a specific company.

Anthropic, HTTP Request, Form Trigger
AI & RAG

Triggered by a GitLab MR webhook, this workflow automatically assists your team in writing customer-facing release notes by combining Linear issue data with Claude AI.

HTTP Request, RSS Feed Read, Gitlab Trigger +1
AI & RAG

The competitive edge, delivered. This Customer Intelligence Engine simultaneously analyzes the web, Reddit, and X/Twitter to generate a professional, actionable executive briefing.

Reddit, N8N Nodes Serpapi, HTTP Request +4
AI & RAG

Your Cold Email is Now Researched. This pipeline finds specific bottlenecks on prospect websites and instantly crafts an irresistible pitch

Gmail, Google Sheets, HTTP Request +2
AI & RAG

Automatically turn top performing Instagram reels into 7 new ready to use content scripts. This workflow scrapes high performing posts from a chosen Instagram profile, downloads and transcribes the re

OpenAI, HTTP Request, @Apify/N8N Nodes Apify +2