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": "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"
}
}
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 →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
This workflow enriches leads from Google Sheets by finding and validating LinkedIn profile URLs with SerpAPI and Anthropic, then scraping matched profiles with Apify to extract a relevant company and
This n8n workflow automatically generates a comprehensive dataset of 50 AI search prompts tailored to a specific company.
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.
The competitive edge, delivered. This Customer Intelligence Engine simultaneously analyzes the web, Reddit, and X/Twitter to generate a professional, actionable executive briefing.
This workflow lets you upload a tender/RFT PDF via an n8n form, extracts key fields into Google Sheets using LlamaParse, and makes the document chat-searchable by embedding section chunks with Google