Projects11. LinkedIn Carousel ImplementationExecutive Summary
Executive Summary0 min read

11. LinkedIn Carousel Implementation

Automating visual B2B content: How OmniPost AI and n8n dynamically generate and publish high-converting PDF LinkedIn Carousels autonomously.

LinkedIn Carousel — Part-2 Workflow Implementation Guide

Purpose: Reference notes for enhancing the OmniPost Part-2 n8n workflow to support LinkedIn carousel PDF posts.
Last Updated: 2026-04-17


Architecture Overview

text (diagram)
Part-1 (n8n automation)
  └─ Node 5 (LinkedIn Content Generation)
       └─ Outputs:
           ├─ formatted_markdown (text caption for the post)
           ├─ content_format: "text" | "carousel"
           ├─ carousel_data.slide_outlines (structured slide content)
           └─ carousel_data.carousel_generation_prompt (AI image generation prompt)

Manual Step (Aman via Claude Desktop)
  └─ Take carousel_generation_prompt → Claude Desktop Project (with brand kit)
  └─ Generate carousel slide images
  └─ Export as PDF
  └─ Upload to Google Drive (same folder as other images)

Part-2 (n8n posting automation)
  └─ Reads content_format field
  └─ IF "carousel" → post with PDF document attachment from Drive
  └─ IF "text" → post with single image (existing flow)

Notion Schema Additions Required

Add the following fields to the Social Content Queue database:

FieldTypeDescriptionOptions
LinkedIn_Content_FormatselectFormat of the LinkedIn posttext, image, carousel
LinkedIn_Carousel_Promptrich_textThe AI-generated prompt to create carousel slides in Claude Desktop
LinkedIn_Carousel_PDF_URLurlGoogle Drive URL of the generated carousel PDF
LinkedIn_Slide_CountnumberNumber of slides in the carousel

Part-1 Changes (Already Handled by V4.1 Delta Upgrade)

Node 5 (LinkedIn prompt) now outputs:

json

What Part-1 n8n Workflow Needs to Store in Notion

After Node 5 runs, the Notion update node should map:

Notion FieldSource
LinkedIn Draftstructured_data.posts[0].content (the text caption)
LinkedIn_Content_Formatstructured_data.content_format
LinkedIn_Carousel_Promptstructured_data.carousel_data.carousel_generation_prompt
LinkedIn_Slide_Countstructured_data.carousel_data.slide_count

Part-2 Implementation Notes

Decision Router

Add a Switch node after reading the Notion entry:

text
  1. Read Drive Folder: Use the existing Google Drive connection to find the carousel PDF in the entry's Drive folder
  2. Download PDF: Download the file as binary data
  3. LinkedIn API Post with Document:
    • LinkedIn's API supports document posts (PDF uploads) via the ugcPosts endpoint
    • The formatted_markdown text becomes the post caption
    • The PDF is uploaded as a document attachment
    • Reference: LinkedIn Document Share API

Manual Workflow (Interim)

Until Part-2 carousel automation is built:

  1. Check Notion for entries where LinkedIn_Content_Format = carousel
  2. Copy the LinkedIn_Carousel_Prompt
  3. Paste into Claude Desktop (with your brand project active)
  4. Generate slide images, compile into PDF
  5. Upload PDF to the entry's Google Drive folder
  6. Update LinkedIn_Carousel_PDF_URL in Notion
  7. Post manually or trigger Part-2

Brand Project Setup (Claude Desktop)

Create a Claude Desktop Project called "OmniPost LinkedIn Carousels" with these persistent instructions:

text

Verification Checklist

Before considering Part-2 carousel support complete:

  • Notion schema has all 4 new fields added
  • Part-1 n8n workflow maps Node 5 carousel fields to Notion correctly
  • Claude Desktop brand project is configured with design tokens
  • Test: Run Part-1 on a source with 4+ technical points, verify content_format: carousel is output
  • Test: Take carousel_generation_prompt, generate slides in Claude Desktop, verify quality
  • Part-2 IF/Switch node routes carousel entries correctly
  • Part-2 can post PDF documents via LinkedIn API (or manual posting is documented)