{
  "id": "u2mAzsvf9Aj0k3Ux",
  "name": "Automated_Social_Media_Headline_Poster_via_Bright_data",
  "tags": [],
  "nodes": [
    {
      "id": "22814b65-765e-48c3-98c2-00982b74e70e",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        3000,
        900
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "0fd15cfb-7564-4db3-bdb0-b0a32b69c4fb",
      "name": "LinkedIn post writer",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        2980,
        680
      ],
      "parameters": {
        "text": "={{ $json.Title }}",
        "options": {
          "systemMessage": "Extract the headline and write a post for LinkedIn based on the headline"
        },
        "promptType": "define"
      },
      "typeVersion": 1.9
    },
    {
      "id": "aac3869f-9f8e-49b0-bdc9-9eae0921474c",
      "name": "Run workflow",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        1960,
        680
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "a5187a0d-25b8-45d4-8578-4ad51397ab41",
      "name": "Set Target News URL",
      "type": "n8n-nodes-base.set",
      "position": [
        2180,
        680
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "2c5f11b0-9f25-4b30-b0a0-1080fd33e7d4",
              "name": "SIte",
              "type": "string",
              "value": "Vogue"
            },
            {
              "id": "65be4ab3-6cef-4f70-9cb9-e9753fbf7543",
              "name": "URL",
              "type": "string",
              "value": "https://www.vogue.com/fashion"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "79362a39-b73d-4f40-bdee-780d78abfae6",
      "name": "Publish to LinkedIn",
      "type": "n8n-nodes-base.linkedIn",
      "position": [
        3360,
        680
      ],
      "parameters": {
        "text": "={{ $json.output }}",
        "additionalFields": {}
      },
      "typeVersion": 1
    },
    {
      "id": "fbf2c950-fd2c-4aa3-9e24-45d171f1056b",
      "name": "Publish to X (Twitter)",
      "type": "n8n-nodes-base.twitter",
      "position": [
        3980,
        680
      ],
      "parameters": {
        "text": "={{ $json.output }}",
        "additionalFields": {}
      },
      "typeVersion": 2
    },
    {
      "id": "7f4e4da6-3611-496b-a4bc-93daa1d9039f",
      "name": "X (Twitter) post writer",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        3620,
        680
      ],
      "parameters": {
        "text": "={{ $('Extract Title').item.json.Title }}",
        "options": {
          "systemMessage": "Extract the headline and write a post for Twitter based on the headline"
        },
        "promptType": "define"
      },
      "typeVersion": 1.9
    },
    {
      "id": "7b730fa3-5c0a-422f-8de5-f713b2f945ab",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        0
      ],
      "parameters": {
        "color": 4,
        "width": 1300,
        "height": 320,
        "content": "=======================================\n            WORKFLOW ASSISTANCE\n=======================================\nFor any questions or support, please contact:\n    Yaron@nofluff.online\n\nExplore more tips and tutorials here:\n   - YouTube: https://www.youtube.com/@YaronBeen/videos\n   - LinkedIn: https://www.linkedin.com/in/yaronbeen/\n=======================================\n"
      },
      "typeVersion": 1
    },
    {
      "id": "defc9ec0-917a-4020-940b-9cb926a3a582",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        340
      ],
      "parameters": {
        "color": 4,
        "width": 1289,
        "height": 3418,
        "content": "# \u26a1 Automated Vogue Headline \u2192 Social Media Poster\n\n### \ud83e\udde0 Purpose:\n\nAutomatically scrape trending headlines from Vogue, convert them into engaging posts using AI, and publish them to **LinkedIn** and **Twitter (X)** \u2014 *no manual effort needed*.\n\n---\n\n## \ud83d\udd36 **Section 1: Set the Target Source**\n\n\ud83d\udccc *Nodes:*\n\n* `Run workflow`\n* `Set Target News URL`\n\n### \ud83d\udee0 What\u2019s Happening:\n\n* \u2705 `Run workflow`: Triggers the automation either manually or on a schedule (e.g., daily).\n* \ud83d\udd8a `Set Target News URL`: Sets the **source URL** (e.g., `https://www.vogue.com/fashion`) from where the headlines will be scraped.\n\n### \ud83d\udca1 Why It Matters:\n\nThis lets you choose your news source dynamically. You could even expand this later for other websites like *TechCrunch, Forbes, etc.*\n\n> ![\ud83e\udded](https://em-content.zobj.net/thumbs/120/apple/354/compass_1f9ed.png) Think of this section as the **GPS** \u2013 it tells the system where to go fetch the news from.\n\n---\n\n## \ud83d\udd37 **Section 2: Scrape & Extract Headlines**\n\n\ud83d\udccc *Nodes:*\n\n* `Scrape Vogue via Bright Data`\n* `Extract Title`\n\n### \ud83d\udee0 What\u2019s Happening:\n\n* \ud83c\udf10 `Scrape Vogue via Bright Data`: Uses **Bright Data Web Unlocker** to bypass bot protection and get the full HTML of the Vogue page using a POST request.\n* \ud83e\uddfe `Extract Title`: Extracts the headline(s) from the HTML using a CSS selector like `.article-feed-card__hed-text`.\n\n### \ud83d\udca1 Why It Matters:\n\nSome websites block scraping \u2014 **Bright Data** ensures you can reliably extract content. The extractor node ensures you get clean, usable text.\n\n> ![\ud83d\udd78\ufe0f](https://em-content.zobj.net/thumbs/120/apple/354/spider-web_1f578-fe0f.png) This is your **web crawler** and **filter**, doing the dirty work of fetching and cleaning up info.\n\n---\n\n## \ud83d\udfe3 **Section 3: Use AI to Write Engaging Posts**\n\n\ud83d\udccc *Nodes:*\n\n* `LinkedIn post writer`\n* `X (Twitter) post writer`\n\n### \ud83d\udee0 What\u2019s Happening:\n\n* \ud83e\udd16 `LinkedIn post writer`: Passes the headline to an OpenAI Chat Model to turn it into a professional, catchy LinkedIn post.\n* \ud83d\udc26 `X (Twitter) post writer`: Similarly formats a shorter, witty version for X/Twitter.\n\nBoth use prompts like:\n\n> \u201cWrite a trendy post about the following Vogue headline for \\[LinkedIn/Twitter]. Add hashtags. Keep tone professional/casual.\u201d\n\n### \ud83d\udca1 Why It Matters:\n\nAI tailors each post **per platform** \u2014 no copy-pasting. Your brand voice is preserved while staying context-aware.\n\n> ![\u270d\ufe0f](https://em-content.zobj.net/thumbs/120/apple/354/writing-hand_270d-fe0f.png) This is your **copywriting intern** \u2014 except it works 24/7 and never gets tired.\n\n---\n\n## \ud83d\udd34 **Section 4: Auto-Publish to Social Media**\n\n\ud83d\udccc *Nodes:*\n\n* `Publish to LinkedIn`\n* `Publish to X (Twitter)`\n\n### \ud83d\udee0 What\u2019s Happening:\n\n* \ud83d\udcbc `Publish to LinkedIn`: Posts the AI-generated content directly to your **LinkedIn page or profile**.\n* \ud83d\udce3 `Publish to X (Twitter)`: Tweets the optimized content via your **Twitter developer account**.\n\n> Note: These nodes are showing \u26a0\ufe0f errors \u2014 make sure authentication and permissions (tokens) are set up correctly.\n\n### \ud83d\udca1 Why It Matters:\n\nThis eliminates **manual social media posting** \u2014 great for content marketers, personal branding, or agencies.\n\n> ![\ud83d\ude80](https://em-content.zobj.net/thumbs/120/apple/354/rocket_1f680.png) This section is your **launchpad**, sending your posts to the world.\n\n---\n\n# \ud83e\udde9 Summary Table\n\n| Section | Function                     | What It Does                                     | Key Tools                      |\n| ------- | ---------------------------- | ------------------------------------------------ | ------------------------------ |\n| 1       | Set Target URL               | Tells the system what site to scrape             | `Manual Trigger`, `Set Node`   |\n| 2       | Scrape & Extract             | Uses Bright Data to get HTML + Extract headlines | `HTTP Request`, `HTML Extract` |\n| 3       | AI Content Generation        | Converts headline into social media post         | `OpenAI`, `Chat Model`         |\n| 4       | Auto-Publish to Social Media | Posts to LinkedIn and Twitter                    | `LinkedIn`, `X/Twitter`        |\n\n---\n\n# \u2728 Bonus Suggestions\n\n\u2705 Add a **scheduler** to run this daily\n\u2705 Log posted headlines in **Google Sheets or Notion**\n\u2705 Add a filter to **skip duplicate headlines**\n\n---\n\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "490c2efe-0d1e-408c-806c-5e3a48f61264",
      "name": "Scrape Vogue via Bright data",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2480,
        680
      ],
      "parameters": {
        "url": "https://api.brightdata.com/request",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "sendHeaders": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "zone",
              "value": "n8n_unblocker"
            },
            {
              "name": "url",
              "value": "={{ $json.URL }}"
            },
            {
              "name": "country",
              "value": "us"
            },
            {
              "name": "format",
              "value": "raw"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer YOUR_TOKEN_HERE"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "a7a4f66f-b5a8-4563-a306-57b72c1ac0a1",
      "name": "Extract Title",
      "type": "n8n-nodes-base.html",
      "position": [
        2720,
        680
      ],
      "parameters": {
        "options": {},
        "operation": "extractHtmlContent",
        "extractionValues": {
          "values": [
            {
              "key": "Title",
              "cssSelector": "#\\35 f10df145161a26b33fec09b > div > div > div > div.SummaryItemWrapper-iwvBff.juTBkb.summary-item.summary-item--no-icon.summary-item--text-align-center.summary-item--layout-placement-text-below.summary-item--layout-position-image-left.summary-item--layout-proportions-50-50.summary-item--side-by-side-align-center.summary-item--side-by-side-image-right-mobile-false.summary-item--standard.SummaryCollageFiveItem-kWJUcr.fqnbhT.search_result_item-68507588d2b17faf259ac70e.undefined_summary_item-68507588d2b17faf259ac70e > div.SummaryItemContent-eiDYMl.fSburJ.summary-item__content > a > h3"
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "f4d2614f-ddf7-48ea-83cc-7f7675ca35be",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1940,
        -40
      ],
      "parameters": {
        "color": 5,
        "width": 380,
        "height": 920,
        "content": "## \ud83d\udd36 **Section 1: Set the Target Source**\n\n\ud83d\udccc *Nodes:*\n\n* `Run workflow`\n* `Set Target News URL`\n\n### \ud83d\udee0 What\u2019s Happening:\n\n* \u2705 `Run workflow`: Triggers the automation either manually or on a schedule (e.g., daily).\n* \ud83d\udd8a `Set Target News URL`: Sets the **source URL** (e.g., `https://www.vogue.com/fashion`) from where the headlines will be scraped.\n\n### \ud83d\udca1 Why It Matters:\n\nThis lets you choose your news source dynamically. You could even expand this later for other websites like *TechCrunch, Forbes, etc.*\n\n> ![\ud83e\udded](https://em-content.zobj.net/thumbs/120/apple/354/compass_1f9ed.png) Think of this section as the **GPS** \u2013 it tells the system where to go fetch the news from.\n\n---\n"
      },
      "typeVersion": 1
    },
    {
      "id": "4926a696-817c-417e-86d7-ebb4eacb5c3a",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2420,
        -80
      ],
      "parameters": {
        "color": 7,
        "width": 440,
        "height": 960,
        "content": "## \ud83d\udd37 **Section 2: Scrape & Extract Headlines**\n\n\ud83d\udccc *Nodes:*\n\n* `Scrape Vogue via Bright Data`\n* `Extract Title`\n\n### \ud83d\udee0 What\u2019s Happening:\n\n* \ud83c\udf10 `Scrape Vogue via Bright Data`: Uses **Bright Data Web Unlocker** to bypass bot protection and get the full HTML of the Vogue page using a POST request.\n* \ud83e\uddfe `Extract Title`: Extracts the headline(s) from the HTML using a CSS selector like `.article-feed-card__hed-text`.\n\n### \ud83d\udca1 Why It Matters:\n\nSome websites block scraping \u2014 **Bright Data** ensures you can reliably extract content. The extractor node ensures you get clean, usable text.\n\n> ![\ud83d\udd78\ufe0f](https://em-content.zobj.net/thumbs/120/apple/354/spider-web_1f578-fe0f.png) This is your **web crawler** and **filter**, doing the dirty work of fetching and cleaning up info.\n\n---\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "aaab5f22-013e-4697-80c5-3fac64a76e6f",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2940,
        -80
      ],
      "parameters": {
        "color": 6,
        "width": 540,
        "height": 1100,
        "content": "## \ud83d\udfe3 **Section 3: Use AI to Write Engaging Posts**\n\n\ud83d\udccc *Nodes:*\n\n* `LinkedIn post writer`\n* `X (Twitter) post writer`\n\n### \ud83d\udee0 What\u2019s Happening:\n\n* \ud83e\udd16 `LinkedIn post writer`: Passes the headline to an OpenAI Chat Model to turn it into a professional, catchy LinkedIn post.\n* \ud83d\udc26 `X (Twitter) post writer`: Similarly formats a shorter, witty version for X/Twitter.\n\nBoth use prompts like:\n\n> \u201cWrite a trendy post about the following Vogue headline for \\[LinkedIn/Twitter]. Add hashtags. Keep tone professional/casual.\u201d\n\n### \ud83d\udca1 Why It Matters:\n\nAI tailors each post **per platform** \u2014 no copy-pasting. Your brand voice is preserved while staying context-aware.\n\n> ![\u270d\ufe0f](https://em-content.zobj.net/thumbs/120/apple/354/writing-hand_270d-fe0f.png) This is your **copywriting intern** \u2014 except it works 24/7 and never gets tired.\n\n---\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "fb12e0fa-64e2-4ea3-a01b-8b1204efae2a",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3580,
        -60
      ],
      "parameters": {
        "color": 3,
        "width": 540,
        "height": 940,
        "content": "## \ud83d\udd34 **Section 4: Auto-Publish to Social Media**\n\n\ud83d\udccc *Nodes:*\n\n* `Publish to LinkedIn`\n* `Publish to X (Twitter)`\n\n### \ud83d\udee0 What\u2019s Happening:\n\n* \ud83d\udcbc `Publish to LinkedIn`: Posts the AI-generated content directly to your **LinkedIn page or profile**.\n* \ud83d\udce3 `Publish to X (Twitter)`: Tweets the optimized content via your **Twitter developer account**.\n\n> Note: These nodes are showing \u26a0\ufe0f errors \u2014 make sure authentication and permissions (tokens) are set up correctly.\n\n### \ud83d\udca1 Why It Matters:\n\nThis eliminates **manual social media posting** \u2014 great for content marketers, personal branding, or agencies.\n\n> ![\ud83d\ude80](https://em-content.zobj.net/thumbs/120/apple/354/rocket_1f680.png) This section is your **launchpad**, sending your posts to the world.\n\n---\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "2ea582b1-c9ac-4a6c-8c39-ec97cd14b6f4",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        4240,
        -60
      ],
      "parameters": {
        "color": 7,
        "width": 380,
        "height": 240,
        "content": "## I\u2019ll receive a tiny commission if you join Bright Data through this link\u2014thanks for fueling more free content!\n\n### https://get.brightdata.com/1tndi4600b25"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "cb513f17-9010-4f78-bc85-756813814380",
  "connections": {
    "Run workflow": {
      "main": [
        [
          {
            "node": "Set Target News URL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Title": {
      "main": [
        [
          {
            "node": "LinkedIn post writer",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "LinkedIn post writer",
            "type": "ai_languageModel",
            "index": 0
          },
          {
            "node": "X (Twitter) post writer",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Publish to LinkedIn": {
      "main": [
        [
          {
            "node": "X (Twitter) post writer",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Target News URL": {
      "main": [
        [
          {
            "node": "Scrape Vogue via Bright data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "LinkedIn post writer": {
      "main": [
        [
          {
            "node": "Publish to LinkedIn",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "X (Twitter) post writer": {
      "main": [
        [
          {
            "node": "Publish to X (Twitter)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Scrape Vogue via Bright data": {
      "main": [
        [
          {
            "node": "Extract Title",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}