AutomationFlowsAI & RAG › Repurpose White Papers Into Linkedin Pdfs and Blog Posts with Browseract and…

Repurpose White Papers Into Linkedin Pdfs and Blog Posts with Browseract and…

Original n8n title: Repurpose White Papers Into Linkedin Pdfs and Blog Posts with Browseract and Gpt-4o

ByMadame AI Team | Kai @madame-ai on n8n.io

This workflow automates the labor-intensive process of turning long-form white papers into ready-to-publish social media assets. It scrapes the content from a URL or PDF, uses AI to ghostwrite a LinkedIn carousel script and an SEO-optimized blog post, generates a downloadable…

Event trigger★★★★☆ complexityAI-powered14 nodesOpenRouter ChatOutput Parser StructuredGoogle SheetsN8N Nodes BrowseractAgentApi Template IoSlack
AI & RAG Trigger: Event Nodes: 14 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow corresponds to n8n.io template #13376 — we link there as the canonical source.

This workflow follows the Agent → Google Sheets recipe pattern — see all workflows that pair these two integrations.

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
{
  "id": "44lF5XzhSAjkzJbQ",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Repurpose white papers from URLs to LinkedIn PDFs and Blog Posts With BrowserAct",
  "tags": [],
  "nodes": [
    {
      "id": "7f4c2999-907b-4e36-9ec6-5f7270941c0d",
      "name": "Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        448,
        32
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "54bbdc70-5c9e-4151-bd47-8aeedcbbcfbd",
      "name": "OpenRouter Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "position": [
        1088,
        208
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "openRouterApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "5c116bcf-5a34-4d86-b53c-48897eb1d787",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1280,
        224
      ],
      "parameters": {
        "autoFix": true,
        "jsonSchemaExample": "{\n  \"linkedin_carousel_data\": {\n    \"caption\": \"The text for the LinkedIn post...\",\n    \"slides\": [\n      { \"page\": 1, \"title\": \"HOOK\", \"body\": \"Short text for slide 1\" },\n      { \"page\": 2, \"title\": \"PROBLEM\", \"body\": \"Short text for slide 2\" },\n      { \"page\": 3, \"title\": \"DATA\", \"body\": \"Short text for slide 3\" },\n      { \"page\": 4, \"title\": \"SOLUTION\", \"body\": \"Short text for slide 4\" },\n      { \"page\": 5, \"title\": \"CTA\", \"body\": \"Short text for slide 5\" }\n    ]\n  },\n  \"blog_post_html\": \"<h1>Title...</h1>...\"\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "3dbe71be-da8f-48d0-9394-0a9a6902910f",
      "name": "Manual trigger",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        0,
        32
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "15a1378b-9001-4b1c-9aca-ee322b5fd6d7",
      "name": "Get links",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        224,
        32
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1a48QzRoAHXu_scXCZ-lIOEUVyd1kUThdm3KGkscgzkQ/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1a48QzRoAHXu_scXCZ-lIOEUVyd1kUThdm3KGkscgzkQ",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1a48QzRoAHXu_scXCZ-lIOEUVyd1kUThdm3KGkscgzkQ/edit?usp=drivesdk",
          "cachedResultName": "White Paper to Social Media Converter"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "835c00fd-85a9-46ab-b388-e658dfb3c192",
      "name": "Scrape the data",
      "type": "n8n-nodes-browseract.browserAct",
      "position": [
        720,
        48
      ],
      "parameters": {
        "type": "WORKFLOW",
        "workflowId": "76074693265123883",
        "workflowConfig": {
          "value": {
            "input-White_Paper_Link": "={{ $json[\"Target Page Url\"] }}"
          },
          "schema": [
            {
              "id": "input-White_Paper_Link",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "description": "If left blank, the default value defined in BrowserAct will be used.",
              "displayName": "White_Paper_Link",
              "defaultMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "input-White_Paper_Link"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        }
      },
      "credentials": {
        "browserActApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "3858862c-80fd-4fcf-8381-474c88f4cc17",
      "name": "Convert whitepaper to carousel",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1120,
        48
      ],
      "parameters": {
        "text": "=Input : {{ $json.output.string }}",
        "options": {
          "systemMessage": "You are an expert Content Ghostwriter and Technical Editor. Your job is to take raw, scraped content from industry white papers and transform it into two distinct, high-value content assets.\n\n**INPUT DATA:**\nYou will receive raw text extracted from a website or PDF.\n\n**OUTPUT REQUIREMENTS:**\nYou must return a SINGLE valid JSON object containing two specific keys: `linkedin` and `blog_post`. Do not include markdown formatting (like ```json) outside the object.\n\n---\n\n### **ASSET 1: LINKEDIN CAROUSEL & POST**\nStructure this for a \"Carousel\" format (slides) plus a post caption.\n- **Tone:** Professional, authoritative, but punchy (viral B2B style).\n- **Format:**\n  - `caption`: The text to go *above* the carousel. engaging hook, 3 short bullet points, and 3 relevant hashtags.\n  - `slides`: An array of 5 slides. Each slide must have a `headline` (big text) and `content` (supporting text).\n\n### **ASSET 2: SEO BLOG POST (HTML)**\nStructure this as a full-length article ready to publish.\n- **Tone:** Educational, \"How-to\", and insightful.\n- **Format:** Pure HTML string.\n- **Requirements:**\n  - Use `<h1>` for the main title.\n  - Use `<h2>` and `<h3>` for headers.\n  - Use `<p>` for paragraphs.\n  - Use `<ul>` and `<li>` for lists.\n  - **Crucial:** Do NOT use `<html>`, `<head>`, or `<body>` tags. Just return the body content starting with the `<h1>`.\n  - Include a \"Key Takeaways\" section near the top.\n\n---\n\n**STRICT OUTPUT FORMAT (JSON ONLY):**\n{\n  \"linkedin\": {\n    \"caption\": \"Here is the caption text...\",\n    \"slides\": [\n      { \"slide_number\": 1, \"headline\": \"HOOK TEXT\", \"content\": \"Short context\" },\n      { \"slide_number\": 2, \"headline\": \"PROBLEM\", \"content\": \"Explanation\" },\n      { \"slide_number\": 3, \"headline\": \"DATA\", \"content\": \"Key stat\" },\n      { \"slide_number\": 4, \"headline\": \"SOLUTION\", \"content\": \"Actionable tip\" },\n      { \"slide_number\": 5, \"headline\": \"OUTRO\", \"content\": \"Call to action\" }\n    ]\n  },\n  \"blog_post\": \"<h1>Title Here</h1><p>Intro paragraph...</p><h2>First Section</h2>...\"\n}"
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 3
    },
    {
      "id": "c4ffac7e-3a50-4ba3-9557-1de171d49259",
      "name": "Create a carousel PDF",
      "type": "n8n-nodes-base.apiTemplateIo",
      "position": [
        1664,
        48
      ],
      "parameters": {
        "options": {},
        "download": true,
        "resource": "pdf",
        "pdfTemplateId": "63677b23c0543794",
        "jsonParameters": true,
        "propertiesJson": "={{ $('Convert whitepaper to carousel').first().json.output.linkedin_carousel_data }}"
      },
      "credentials": {
        "apiTemplateIoApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "56cd7e8c-71eb-454c-841b-d7598de290cb",
      "name": "Update Database",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2048,
        160
      ],
      "parameters": {
        "columns": {
          "value": {
            "PDF Link": "={{ $json.download_url }}",
            "Blog Post": "={{ $('Convert whitepaper to carousel').first().json.output.blog_post_html }}",
            "row_number": "={{ $('Loop Over Items').item.json.row_number }}",
            "Linkdin Post": "={{ $('Convert whitepaper to carousel').first().json.output.linkedin_carousel_data }}",
            "Target Page Url": "="
          },
          "schema": [
            {
              "id": "Target Page Url",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Target Page Url",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Blog Post",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Blog Post",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Linkdin Post",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Linkdin Post",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "PDF Link",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "PDF Link",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "row_number"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1a48QzRoAHXu_scXCZ-lIOEUVyd1kUThdm3KGkscgzkQ/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1a48QzRoAHXu_scXCZ-lIOEUVyd1kUThdm3KGkscgzkQ",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1a48QzRoAHXu_scXCZ-lIOEUVyd1kUThdm3KGkscgzkQ/edit?usp=drivesdk",
          "cachedResultName": "White Paper to Social Media Converter"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "5b408ffe-d7c7-43bd-bdf3-e589b56293cb",
      "name": "Documentation",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -384,
        -704
      ],
      "parameters": {
        "width": 380,
        "height": 540,
        "content": "## \u26a1 Workflow Overview & Setup\n\n**Summary:** This workflow automatically converts dense white papers (from URLs or PDFs) into engaging social media content. It scrapes the text, uses AI to generate a LinkedIn carousel script and a blog post, creates a PDF of the carousel, and updates a Google Sheet with the assets.\n\n### Requirements\n* **Credentials:** BrowserAct, OpenRouter (GPT-4), Google Sheets, APITemplate.io, Slack.\n* **Mandatory:** BrowserAct API (Template: **White Paper to Social Media Converter**)\n\n### How to Use\n1.  **Credentials:** Set up API keys for all services.\n2.  **BrowserAct Template:** Ensure the **White Paper to Social Media Converter** template is active.\n3.  **Google Sheet:** Prepare a sheet with a `Target Page Url` column.\n4.  **APITemplate.io:** Create a PDF template for the carousel slides.\n5.  **Execution:** Trigger manually to process the list.\n\n### Need Help?\n[How to Find Your BrowserAct API Key & Workflow ID](https://docs.browseract.com)\n[How to Connect n8n to BrowserAct](https://docs.browseract.com)\n[How to Use & Customize BrowserAct Templates](https://docs.browseract.com)"
      },
      "typeVersion": 1
    },
    {
      "id": "31fc9a6d-02f3-4ed7-b29c-6beee3a841c1",
      "name": "Step 1 Explanation",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        16,
        -256
      ],
      "parameters": {
        "color": 7,
        "width": 844,
        "height": 108,
        "content": "### \ud83d\udce5 Step 1: Input & Scraping\n\nThe workflow reads a list of white paper URLs from Google Sheets. BrowserAct then navigates to each link and extracts the full text content, handling PDF viewers or web pages automatically."
      },
      "typeVersion": 1
    },
    {
      "id": "dd8d1530-5b0d-4ff7-8465-fb53b5b1df74",
      "name": "Step 3 Explanation",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1120,
        -176
      ],
      "parameters": {
        "color": 7,
        "width": 1032,
        "height": 184,
        "content": "### \ud83c\udfa8 Step 2: Asset Generation\n\nAn AI analyzes the scraped text. It simultaneously drafts:\n\n1.  A viral-style LinkedIn post with a 5-slide carousel script.\n2.  A comprehensive, HTML-formatted blog post summarizing the white paper. \n\nThe carousel script is sent to APITemplate.io to generate a professional PDF document ready for LinkedIn upload. This PDF link, along with the blog post HTML, is saved back to the Google Sheet\n"
      },
      "typeVersion": 1
    },
    {
      "id": "3afbd0ca-656e-46f9-bcd0-784e90888d5f",
      "name": "Notify on completion",
      "type": "n8n-nodes-base.slack",
      "position": [
        720,
        -112
      ],
      "parameters": {
        "text": "All the white papers extracted from links and updated in Google Sheets.",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "list",
          "value": "C09KLV9DJSX",
          "cachedResultName": "all-browseract-workflow-test"
        },
        "otherOptions": {}
      },
      "credentials": {
        "slackApi": {
          "name": "<your credential>"
        }
      },
      "executeOnce": true,
      "typeVersion": 2.4,
      "alwaysOutputData": false
    },
    {
      "id": "c49f35de-9ac0-40ee-a9d5-3aa6995a5061",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        32,
        -704
      ],
      "parameters": {
        "color": 6,
        "width": 720,
        "height": 416,
        "content": "@[youtube](fcWlF0Bza80)"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "e34dfb44-c1f1-4ffa-8e31-4de51a5426e3",
  "connections": {
    "Get links": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Manual trigger": {
      "main": [
        [
          {
            "node": "Get links",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [
          {
            "node": "Notify on completion",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Scrape the data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Scrape the data": {
      "main": [
        [
          {
            "node": "Convert whitepaper to carousel",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Database": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create a carousel PDF": {
      "main": [
        [
          {
            "node": "Update Database",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenRouter Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Convert whitepaper to carousel",
            "type": "ai_languageModel",
            "index": 0
          },
          {
            "node": "Structured Output Parser",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Convert whitepaper to carousel",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Convert whitepaper to carousel": {
      "main": [
        [
          {
            "node": "Create a carousel PDF",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

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

About this workflow

This workflow automates the labor-intensive process of turning long-form white papers into ready-to-publish social media assets. It scrapes the content from a URL or PDF, uses AI to ghostwrite a LinkedIn carousel script and an SEO-optimized blog post, generates a downloadable…

Source: https://n8n.io/workflows/13376/ — 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 workflow performs a comprehensive security audit on your web scraping infrastructure to detect potential IP leaks or bot detection flags. It iterates through a list of fingerprinting services and

OpenRouter Chat, Output Parser Structured, Google Sheets +3
AI & RAG

This workflow transforms your Telegram bot into an intelligent creative assistant. It can chat conversationally, fetch trending image prompts from PromptHero for inspiration, or perform a deep "remix"

Telegram Trigger, Output Parser Structured, Telegram +6
AI & RAG

YouTube Strategist. Uses formTrigger, splitOut, splitInBatches, agent. Event-driven trigger; 50 nodes.

Form Trigger, Agent, OpenRouter Chat +5
AI & RAG

This advanced multi-phase n8n workflow automates the complete research, analysis, and ideation pipeline for a YouTube strategist. It scrapes competitor channels, analyzes top-performing titles and thu

Form Trigger, Agent, OpenRouter Chat +5
AI & RAG

This workflow acts as an AI-powered "Viral Architect" for YouTube creators. Simply send a video topic (e.g., "Kling 2.6") to your Telegram bot, and it will scrape top-performing competitor thumbnails,

Output Parser Structured, N8N Nodes Browseract, OpenRouter Chat +6