LinkedIn to Airtable, curated digests with Slack alerts
Keeping up with LinkedIn posts sounds simple until you’re tracking more than a few people. Then it turns into tabs, screenshots, half-finished notes, and that nagging feeling you missed something important.
This is the kind of mess community managers feel every day. Content leads and agency owners feel it too, especially when a LinkedIn digest automation would give them one clean place to review, decide, and share.
This workflow collects new posts into Airtable, summarizes them with AI, and alerts your team in Slack. You’ll see what it does, what you need, and how teams use it to curate faster without living on LinkedIn.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: LinkedIn to Airtable, curated digests with Slack alerts
flowchart LR
subgraph sg0["Schedule Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Schedule Trigger", pos: "b", h: 48 }
n1["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Get Daily LinkedIn Post"]
n2["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Extract Info"]
n3["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Random Delay"]
n4@{ icon: "mdi:cog", form: "rounded", label: "Wait", pos: "b", h: 48 }
n5@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items", pos: "b", h: 48 }
n6@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If", pos: "b", h: 48 }
n7@{ icon: "mdi:cog", form: "rounded", label: "No Operation, do nothing", pos: "b", h: 48 }
n8@{ icon: "mdi:cog", form: "rounded", label: "No Operation, do nothing2", pos: "b", h: 48 }
n9@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set Date Variables", pos: "b", h: 48 }
n10["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/airtable.svg' width='40' height='40' /></div><br/>Daily Check"]
n11["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/airtable.svg' width='40' height='40' /></div><br/>Lookup CB Community"]
n12@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If2", pos: "b", h: 48 }
n13@{ icon: "mdi:cog", form: "rounded", label: "No Operation, do nothing3", pos: "b", h: 48 }
n14@{ icon: "mdi:swap-vertical", form: "rounded", label: "Clean Profile Data1", pos: "b", h: 48 }
n15@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model", pos: "b", h: 48 }
n16@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser", pos: "b", h: 48 }
n17@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check if post exist?", pos: "b", h: 48 }
n18["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/airtable.svg' width='40' height='40' /></div><br/>Lookup Post"]
n19@{ icon: "mdi:swap-vertical", form: "rounded", label: "Formatting", pos: "b", h: 48 }
n20@{ icon: "mdi:robot", form: "rounded", label: "LinkedIn Digestion", pos: "b", h: 48 }
n21@{ icon: "mdi:cog", form: "rounded", label: "No Operation, do nothing1", pos: "b", h: 48 }
n22["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/airtable.svg' width='40' height='40' /></div><br/>Create Digestion"]
n6 --> n2
n6 --> n7
n12 --> n19
n12 --> n13
n4 --> n1
n19 --> n20
n10 --> n5
n18 --> n17
n2 --> n14
n3 --> n4
n5 --> n8
n5 --> n3
n22 --> n5
n0 --> n9
n15 -.-> n20
n20 --> n18
n9 --> n10
n14 --> n11
n11 --> n12
n17 --> n21
n17 --> n22
n1 --> n6
n7 --> n5
n16 -.-> n20
n21 --> n5
n13 --> n5
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0 trigger
class n16,n20 ai
class n15 aiModel
class n6,n12,n17 decision
class n10,n11,n18,n22 database
class n1 api
class n2,n3 code
classDef customIcon fill:none,stroke:none
class n1,n2,n3,n10,n11,n18,n22 customIcon
The Problem: LinkedIn Monitoring Turns Into Tab Hell
If you’re responsible for “keeping an eye” on a community’s LinkedIn activity, you already know the trap. You start with good intentions. Then you’re bouncing between profiles, trying to remember who posted yesterday, copying links into a doc, and telling yourself you’ll summarize it later. Later rarely happens. And when it does, it’s inconsistent because you’re tired, rushing, or missing context. The real cost isn’t just the time. It’s that you don’t trust your own curation process, so you check everything twice.
It adds up fast. Here’s where it breaks down in real life.
- Checking 30 profiles manually can burn about 2 hours, and it’s still easy to miss posts from “quiet” members who suddenly pop off.
- Your “digest” lives in scattered places (notes app, Slack DMs, random Airtable rows), so nobody knows what’s been reviewed.
- Duplicates creep in because you don’t remember if you already saved that post link last week.
- By the time you share highlights with your team, the moment is gone and the conversation has moved on.
The Solution: Daily LinkedIn Digests in Airtable With Slack Alerts
This n8n workflow runs on a schedule and scans the LinkedIn profiles you’ve stored in Airtable. For each profile, it pulls posts from yesterday through a LinkedIn data API (via RapidAPI), then extracts the useful bits like the content, author details, timestamps, and engagement metrics. Next, an AI step generates a quick preview so you can scan faster without reading every full post. Before saving anything, the workflow checks Airtable to prevent duplicates, which keeps your database clean over time. Finally, you can route highlights to Slack so your team sees what matters without another manual “daily roundup” task.
The workflow starts on a daily schedule, then loops through each profile in your Airtable list. It waits between API calls using randomized delays (important for rate limits), summarizes posts with OpenAI, and stores structured records so your digest becomes searchable and shareable.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you track 40 community members. If you spend only 3 minutes per profile to check “did they post yesterday?”, that’s about 2 hours per day, and you still haven’t summarized anything. With this workflow, you do roughly 10 minutes of setup once, then each morning you skim an Airtable digest plus Slack highlights in about 15 minutes. Even if the API calls and AI processing take a while in the background, your time stays small and predictable.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Airtable for profile lists and stored digests.
- Slack to notify your team of key highlights.
- RapidAPI key (Professional Network Data API) (get it from your RapidAPI dashboard)
- OpenAI API key (get it from the OpenAI API dashboard)
Skill level: Intermediate. You’ll connect accounts, add API keys, and match Airtable fields to the workflow.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
A daily run kicks it off. The workflow starts on a schedule, assigns the date window (yesterday), and pulls your profile list from Airtable.
Profiles are processed in batches. n8n loops through each record and uses a randomized pause plus a wait timer so your LinkedIn data requests don’t fire all at once (rate limiting matters here).
Posts are fetched, cleaned, and summarized. For each profile, it pulls recent posts via HTTP Request, checks if there’s anything to process, parses the post details, and then generates a short preview using an AI Agent with the OpenAI chat model and a structured JSON parser.
Airtable becomes your digest database. Before saving, the workflow searches Airtable for an existing post and skips duplicates. New items get saved with consistent fields (content, author, timestamps, engagement) so filtering and sorting stays easy.
You can easily modify Slack alert rules to only ping for high-engagement posts based on likes or comments. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Schedule Trigger
Set the workflow to run on a schedule so it automatically checks LinkedIn posts and updates your Airtable digest.
- Add and open Scheduled Automation Start.
- Configure the schedule rule in Scheduled Automation Start to match your desired run frequency.
- Keep the default connection from Scheduled Automation Start to Assign Date Fields.
Step 2: Connect Airtable
Link all Airtable nodes so profile data, community records, and digest records can be searched and created.
- Open Retrieve Profile List and set your Airtable Base and Table values.
- Credential Required: Connect your airtableTokenApi credentials in Retrieve Profile List.
- Open Search Community Base and set the correct Base and Table for community matching.
- Credential Required: Connect your airtableTokenApi credentials in Search Community Base.
- Open Find Existing Post and set the Airtable Base and Table where posts are stored.
- Credential Required: Connect your airtableTokenApi credentials in Find Existing Post.
- Open Create Digest Record and set the Airtable Base and Table where new digest entries should be created.
- Credential Required: Connect your airtableTokenApi credentials in Create Digest Record.
Step 3: Set Up LinkedIn Data Retrieval
Prepare date calculations, record iteration, pacing, and the HTTP request used to fetch LinkedIn posts.
- In Assign Date Fields, set yesterday to
{{ new Date(Date.now() - 24 * 60 * 60 * 1000).toISOString().split('T')[0] }}. - Ensure Retrieve Profile List flows into Iterate Records to process each profile.
- Keep Iterate Records connected to Randomized Pause and Idle Step A to control pacing.
- In Randomized Pause, keep the provided JavaScript that returns randomized seconds.
- In Delay Execution Timer, set Amount to
{{ $('Randomized Pause').item.json.seconds }}. - In Fetch Daily LinkedIn Posts, set URL to
https://professional-network-data.p.rapidapi.com/get-profile-posts?start=0&username={{ $('Retrieve Profile List').item.json['LinkedIn profile URN'] }}. - In Fetch Daily LinkedIn Posts, set query parameter postedAt to
{{ $('Assign Date Fields').item.json.yesterday }}.
Step 4: Configure Parsing and Matching Logic
Parse the LinkedIn response, normalize identifiers, validate the data, and map fields for downstream usage.
- In Validate Post Presence, keep the condition
{{ $json.data && $json.data.length > 0 }}to only process profiles with posts. - In Parse Post Details, keep the JavaScript that extracts post content, author info, and timestamps.
- In Normalize Profile URN, set linkedin_profile_clean_urn to
{{ $('Parse Post Details').item.json.linkedinProfileUrn.replace('urn:li:fsd_profile:', '') }}. - In Search Community Base, keep Operation as search with Filter by Formula set to
=, and adjust your actual filter formula. - In Confirm Community Match, ensure the condition checks
{{ $json }}is not empty. - In Map Post Fields, map fields using expressions:
{{ $('Parse Post Details').item.json.postContent }},{{ $json.Name }},{{ $json['LinkedIn profile URL'] }},{{ $json['LinkedIn profile URN'] }},{{ $('Parse Post Details').item.json.postUrl }}, and{{ $('Parse Post Details').item.json.dateCreated }}.
Step 5: Set Up AI Preview Generation
Generate a short preview of each LinkedIn post using the AI chain and structured JSON parser.
- Open Generate Post Preview and confirm Text is set to the full prompt with
{{ $json.postcontent }}embedded. - Connect OpenAI Chat Engine as the language model for Generate Post Preview and keep the model set to
gpt-4o-mini. - Credential Required: Connect your openAiApi credentials in OpenAI Chat Engine.
- Keep Structured JSON Parser connected as the output parser for Generate Post Preview with jsonSchemaExample set to
{ "post_preview": "My top 5 fire tools to help im..." }.
Step 6: Configure Deduplication and Record Creation
Check for duplicate posts in Airtable and create new digest records when needed.
- In Find Existing Post, ensure Operation is set to search and set a proper Airtable formula in Filter by Formula to match posts.
- In Verify Post Duplicate, keep the condition
{{ $json }}is not empty to detect existing records. - In Create Digest Record, keep Operation as create and map fields to the appropriate Airtable columns.
- Ensure the success path from Verify Post Duplicate routes to Create Digest Record, and the duplicate path routes to Idle Step D.
Step 7: Test and Activate Your Workflow
Run a manual test to verify that posts are fetched, parsed, previewed, deduplicated, and stored correctly.
- Click Execute Workflow and inspect data flowing from Scheduled Automation Start through Create Digest Record.
- Confirm that Fetch Daily LinkedIn Posts returns data and that Validate Post Presence routes to Parse Post Details when posts exist.
- Verify that Generate Post Preview outputs structured JSON with
post_previewand that records appear in Airtable via Create Digest Record. - If everything looks correct, toggle the workflow to Active to run on schedule.
Common Gotchas
- Airtable permissions can block record creation if your token only has read access. If inserts fail, check the base share settings and the connection in n8n credentials first.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- OpenAI prompts in the AI Agent are generic by default, honestly. Add your “what good looks like” (tone, length, what to extract) early or you’ll keep rewriting summaries in Airtable.
Frequently Asked Questions
About 45 minutes if your Airtable base and API keys are ready.
No. You will connect accounts, paste API keys, and map a few Airtable fields. The only “technical” part is making sure your LinkedIn profile URNs are formatted correctly.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in API costs like RapidAPI LinkedIn calls (~$0.01-0.05 per profile check) and OpenAI processing (~$0.001-0.01 per post).
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Yes, and it’s a common tweak. You add a simple condition after the workflow parses engagement metrics, then only send Slack messages when likes or comments pass your threshold. You can also route different channels based on topic (for example, product mentions to #product, hiring posts to #talent). If you want, you can store the threshold in Airtable so non-technical teammates can change it without touching n8n.
Usually it’s permissions or a base/table mismatch. Confirm the Airtable credential in n8n has access to the right workspace, then double-check the table names and field IDs used in the “Retrieve Profile List” and “Create Digest Record” steps. If it worked yesterday and fails today, regenerate the Airtable token and update it in n8n.
A few thousand posts a month is realistic for most teams, as long as you keep API limits in mind.
Often, yes, because this workflow needs batching, delays, duplicate checks, and structured AI output. Those are all doable in Zapier or Make, but they get expensive or fiddly once you add loops and “find-or-create” logic. n8n also lets you self-host, which is a big deal if you’re scanning lots of profiles daily. If you only track a handful of people and don’t care about deduping, a simple Zap might be fine. If you’re on the fence, Talk to an automation expert and you’ll get a straight recommendation.
Once this is running, LinkedIn monitoring stops being a daily scavenger hunt. Your digest shows up organized, searchable, and ready to share.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.