Skip to content

Chrome Extensions

linkedin-followers-ghl

When someone follows one of my LinkedIn company pages, this tool grabs their name, title, and profile URL and adds them to whichever GHL subaccount I pick (All Things Handy, Go-Kart Park, or JamesHurst.com). One click per batch of followers — no more copy-paste out of LinkedIn admin. Every contact lands tagged linkedin-follower + linkedin-page-<handle> so I can segment them easily.

  • After someone new follows a company page. LinkedIn tells you in the admin dashboard but does nothing else with the lead — this closes that loop.
  • Weekly sweep — pop open the followers analytics page, scrape, and any new followers since the last sweep come through with the “Added” state visible. Already-added followers are dimmed and unchecked by default.
  • Different pages, different subaccounts — the subaccount dropdown means a follower on the MyTechSupport page can land in JamesHurst.com while a follower on a Go-Kart Park page lands in the GKP subaccount.
  1. Load unpacked from ~/apps/linkedin-followers-ghl/extension/ at chrome://extensions.
  2. Visit a LinkedIn company admin followers page (e.g., https://www.linkedin.com/company/{id}/admin/analytics/followers/).
  3. Click the extension popup → “Scrape Followers.”
  4. Review the list (checkboxes, “All / None / New only” buttons), pick a subaccount, → “Add Selected to GHL.”
RequirementWhere
GHL Personal Integration Tokensbaked into extension/background.js on install (local-only extension, not published)
LinkedIn Page admin rolerequired to see the admin analytics followers view
Manifest permissionsstorage, tabs, activeTab; hosts: linkedin.com, services.leadconnectorhq.com, 127.0.0.1
Log receiver~/apps/cc/chrome-log-receiver.py running under launchd on port 9876
  • Repo: ~/apps/linkedin-followers-ghl/
  • Entry files: extension/manifest.json, popup.html, popup.js, background.js, content.js, logger.js
  • Top 2 only on the analytics page. The /admin/analytics/followers/ view shows just the most recent 2 followers. For a full sweep, click “Show all followers” and scrape the paginated list page.
  • LinkedIn DOM is ember-based. Selectors use semantic classes (.artdeco-entity-lockup__title, etc.), never ember-generated IDs. If LinkedIn ships a redesign, the scraper needs an update.
  • Deduplication is local. chrome.storage.local.addedLinkedinUrls tracks who has already been added, so a follower is never double-pushed. Clearing extension storage resets this.
  • No phone/email. Profile URL is the only way to contact the follower after add — future builds may pull additional contact info from the profile page.
  • Build 1.