AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified Apache-2.0 Self-run

Linkedin

skill-agentproto-ts-linkedin · by agentproto

>-

No reviews yet
0 installs
15 views
0.0% view→install

Install

$ agentstack add skill-agentproto-ts-linkedin

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-agentproto-ts-linkedin)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
12d ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Linkedin? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

LinkedIn skill

The browser is just an authenticated transport. The data lives in LinkedIn's own internal API (Voyager). Read from source, not the DOM. (DOM selectors returned 0 reliably; a Voyager fetch returned 217 KB of structured truth.)

Golden rules

  1. API-first — every read is a Voyager fetch; DOM only for the few write

buttons.

  1. Fail fast — ~8 s timeouts, not 60 s. After 5-6 s it's ~90 % a hard hang.
  2. Prefer direct navigation to URLs over clicking links/buttons that

navigate (they hang).

  1. Tab/focus disciplinelist_pages before acting; new_page to isolate.
  2. queryIds + selectors DRIFT — capture live each session; never hardcode.
  3. Gate every write — acts as the user; explicit per-send confirmation.

Read this in order

  • reference/transport.md — chain, lifecycle, tab/focus, timeouts, tool

gotchas.

  • reference/voyager.mdthe data layer: the fetch primitive + query

library + capture method + entity model.

  • reference/recipes.md — read recipes (feed, profile, activity,

who-reacted/commented, connections, search + the identification scorer).

  • reference/write-actions.md — message + attachment (✅ proven, API-first) +

the relationship graph (invite ±note / withdraw, ✅ via social_network / the trusted-input ladder; connect+withdraw are SDUI, not a fetch), gated, safety rails.

  • reference/playbooks.mdthe 100x layer: persona dossiers, the

engagement/relationship graph, discover→dossier→outreach.

Quickstart (once the browser is free)

1. health: api 3040 · tunnel 3600 · daemon 18790  (else: agentproto serve --connect ws://localhost:3600/connect)
2. navigate any linkedin.com page → liFetch(voyagerFeedDashMainFeed, …) → structured feed
3. for a person: search + score → persona.build → (gated) reach out

Harnesses: projects/guilde/apps/api/scripts/linkedin-explore.ts (feed/profile/search/req) and linkedin-message.ts (--send gated). Connect-with-note flow in write-actions.md.

Two transports — prefer camofox (stealth)

Same Voyager-API-first philosophy, two ways to be the authenticated page:

  • Camofox (PREFERRED — stealth Firefox, distinct session). A dedicated

LinkedIn login native to camofox's fingerprint, separate from the daily-driver Chrome (so the site never bounces your real session). Auto-notifies on a login wall. Entry point: projects/browser/packages/social/scripts/social-scrape.mts (@agstudio/browser-social): `` tsx social-scrape.mts login linkedin --hold 300 # log in once, by hand, in the camofox window tsx social-scrape.mts linkedin --slices authored,connections tsx social-scrape.mts search linkedin "" # people → vanity tsx social-scrape.mts content linkedin "" [--limit 20] [--date-range past-week] ``

  • Chrome chain (fallback). createLinkedInVoyager(createBrowser())

createLinkedInVoyager from @agstudio/browser-social, driving the createBrowser() port (scripts/lib/browser.ts) over guilde→tunnel→daemon→chrome-devtools-mcp. Uses your daily Chrome session (revoke risk).

Camofox auth gotcha (cost time once): the launchd :9377 camofox service (~/Library/LaunchAgents/com.agentik.camofox.plist) MUST set EnvironmentVariables/CAMOFOX_PROFILE_DIR = ~/.agentproto/camofox-profiles, else server.js never restores the persisted session (camofox-profiles/linkedin.json) and every tab bounces to /login despite a valid saved login. After fixing: launchctl unload/load the plist; userId="linkedin" restores authed (verify voyager/api/me → 200).

Auth-notify: on a login/anti-bot wall, makeChallengeHandler (social/scripts/lib/challenge.mts) WhatsApps you ("résous dans la fenêtre camofox, je reprends") via resolveAlertChannel (Simone number, WHATSAPP_ADMIN_PHONES), then polls until cleared. Fires only on isBlocked().

Content search (who posted about a topic)

LinkedIn content search is 100% RSC — hashed DOM, no client-side URNs, and all Voyager /search/* routes are dead (404/400/500). So content linkedin (and the Chrome searchContent) walk the rendered result cards from author anchors, then resolve real activity permalinks post-hoc per /in/ author via Voyager profileUpdates + exact normalized-text match (no false positives). /company/ authors keep the profile URL. People search (search linkedin) reads the SSR cards passively instead.

Status

✅ proven live: chain, Voyager fetch, feed/profile/activity endpoints, search+scorer, message SEND + PDF/file attachment, inbox READ + media download, relationship withdraw (productized social_network + social-cancel-request workflow; read-back classifies connectable live). ✅ camofox transport — userId="linkedin" session restore (authed 200), content linkedin search + post-hoc permalink resolution, WhatsApp challenge-handler wired. ⏳ to capture: who-reacted / who-commented / per-person reactions+comments queryIds — methods in voyager.md; DM-react (SDUI-walled).

> Foundation mechanics (transport, capture, cookies/consent, the > find-the-internal-API method, gated writes): the browser skill. Other > sites are their own skills: x-twitter · youtube · instagram · tiktok · > leboncoin · news-media. LinkedIn is the deepest worked instance.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.