Weekly LinkedIn commenter harvest into HubSpot with Airtop

By General Input

Every Monday at 6am, a cloud browser pulls new LinkedIn post commenters, scores them against your ICP, adds fresh leads to HubSpot, and Slacks the top picks.

Integrations

  • Airtop
  • HubSpot
  • Slack

Type

Agentic Task

Categories

  • Sales

Every Monday at 6am, use Airtop to harvest engaged LinkedIn post commenters into my HubSpot lead pipeline and Slack a triage digest of the top scored names to my sales channel.

Trigger: cron, every Monday at 6:00am in my local time zone.

Editable inputs I should be able to configure on the workflow: (1) targetProfiles, a list of LinkedIn thought-leader profile URLs and/or search keywords to watch; (2) icpCriteria, a plain-text description of my ideal customer profile covering target job titles, industries, seniority, and company signals; (3) linkedinProfileName, the saved Airtop profile that stays logged into LinkedIn across runs (default "linkedin-main"); (4) slackChannel, the destination channel for the digest (default #sales); (5) sourceTag, the value to write into HubSpot's contact source field (default "LinkedIn engagement"); (6) postsPerLeader, cap on how many recent posts to harvest per person per run (default 3); (7) minScore, the ICP score threshold below which commenters are dropped (default 50).

Step 1: Create an Airtop session using Create Session with configuration.profileName set to linkedinProfileName so LinkedIn stays logged in from the previous run. Do not create a fresh profile each time. If the profile ever needs refreshing after this session, use Save Profile on Termination to persist the updated cookies under the same name.

Step 2: For each entry in targetProfiles, open a window and use Airtop Load URL to navigate to that person's LinkedIn recent activity feed (or run their search on LinkedIn if the entry is a keyword). Then use Airtop Query Page to identify the postsPerLeader most recent posts worth harvesting, skipping pinned, promoted, or clearly off-topic content. Have Query Page return each post's canonical URL in structured JSON so the next step can iterate.

Step 3: For every post URL, Load URL to the post detail page, then run Airtop Paginated Extraction across the comment thread to pull every commenter as { name, headline, company, profileUrl, commentSnippet }. Paginated Extraction must follow "load more comments" pagination or infinite scroll until the thread is exhausted. Keep a reference back to the source post URL and the thought leader whose feed it came from so the digest can cite it later.

Step 4: Deduplicate against HubSpot. For each extracted commenter, call HubSpot Search Contacts to check whether they already exist, matching first by LinkedIn profile URL (if we store it as a contact property), then by name+company as a fallback. Anyone already in HubSpot is dropped from the batch immediately so we never re-create existing contacts.

Step 5: Score every remaining new commenter against icpCriteria. Produce a numeric score from 0 to 100 plus a one-line rationale citing specifically what matched or didn't (title, industry, seniority, company signal). Drop anyone with a score below minScore.

Step 6: For the qualifying commenters, call HubSpot Batch Upsert Contacts (up to 100 per batch) to create them as new lead-stage contacts. Populate firstname, lastname, jobtitle, company, and a LinkedIn URL property. Set hs_lead_status to a lead stage value and write the sourceTag into the contact source field. Include the ICP score and rationale as contact properties if the account has properties for them, otherwise stash them in a notes-style field.

Step 7: Compose the Slack digest. Rank the newly added contacts by ICP score, take the top 10 to 15, and format a message that includes for each: name, headline, company, LinkedIn profile URL, score, one-line rationale, and a link back to the LinkedIn post they engaged with. Also include a summary header line with counts (posts crawled, commenters extracted, duplicates skipped, new contacts added). Use Slack Send a Message to post it to slackChannel.

Guardrails and edge cases: (a) never re-create contacts that already exist in HubSpot; always Search Contacts before Batch Upsert. (b) If LinkedIn returns a login wall or challenge, do not silently fail; post a Slack note saying the linkedinProfileName profile needs to be re-authenticated and stop the run. (c) Cap total posts crawled per run so a viral leader doesn't blow up the batch. (d) Use Airtop's costThresholdCredits and timeThresholdSeconds soft caps on Query Page and Paginated Extraction to protect against runaway sessions. (e) At the end, terminate the Airtop session so credits stop billing.

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentWin back LiveChat visitors whose chats went unansweredTurn Mailjet email clicks into ranked HubSpot follow-upsiMessage campaign console with pre-flight checks and delivery boardChat quality review board for LiveChat support leadsA searchable RFP answer library your bid team drafts fromSee which target accounts just started advertising on LinkedInAccount health board that puts product usage next to your CRMLook up a customer's full chat history mid conversationLusha prospecting workbench with credit-safe reveals