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 →
{
"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.
apiTemplateIoApibrowserActApigoogleSheetsOAuth2ApiopenRouterApislackApi
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 →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
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
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"
YouTube Strategist. Uses formTrigger, splitOut, splitInBatches, agent. Event-driven trigger; 50 nodes.
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
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,