link-pulse
v0.2.0
Published
Personal CLI for managing your professional network from the terminal
Downloads
20
Maintainers
Readme
link-pulse
A personal CLI for managing your LinkedIn from the terminal — check your feed, search posts, read and send messages, and publish updates. Built to work with Claude Code as an AI-powered workflow.
Install
npm install -g link-pulseChromium will be installed automatically. If it doesn't, run:
npx playwright install chromiumPlatform Notes
- macOS: Works out of the box.
keytarmay prompt for Keychain access — click "Allow". - Linux: Requires
libsecret-1-devand build tools (sudo apt install libsecret-1-dev build-essential). - Windows: Requires windows-build-tools.
Setup
1. Create the config directory
mkdir -p ~/.linkedin-cli2. Add your config
You should have received a config.json file containing your OAuth app credentials. Place it at:
~/.linkedin-cli/config.jsonThe file looks like this:
{
"clientId": "...",
"clientSecret": "...",
"redirectPort": 8765,
"headless": true
}Do not share this file or commit it to any repo. It contains OAuth credentials.
3. Authenticate
link-pulse auth loginA browser window will open. Log in and authorize the app. Your session is saved securely in your OS keychain.
To verify:
link-pulse auth statusUsage
All commands output JSON by default. Add --pretty for human-readable output.
Auth
link-pulse auth login # Authenticate
link-pulse auth status # Check current auth state
link-pulse auth logout # Clear stored sessionFeed
link-pulse feed # Read your home feed
link-pulse feed --limit 5 # Limit number of postsSearch
link-pulse search posts "AI agents" # Search posts
link-pulse search people "Jane Doe" # Search people
link-pulse search posts "AI" --limit 10 # With limitMessages
link-pulse messages list # List recent conversations
link-pulse messages read <conversation-id> # Read a thread
link-pulse messages send <conversation-id> --message "Hello!" # Send a messagePost
link-pulse post create --text "My post text here" # Create a post
link-pulse post comment <post-urn> --text "Great post!" # Comment on a postProfile
link-pulse profile # Show your cached profileGlobal Options
| Flag | Description |
|---|---|
| --pretty | Human-readable output |
| --json | Force JSON output (default) |
| --limit N | Control result count |
| --headless | Run browser in headless mode |
| --no-cache | Skip local cache |
| --debug | Verbose logging |
How It Works
- Auth uses OAuth 2.0 to establish a session
- Posting and commenting use the official REST API
- Feed, search, and messages use Playwright to interact with the platform on your behalf
- Credentials are stored in your OS keychain (via
keytar) — not in plaintext files
Using with Claude Code
This CLI outputs structured JSON, making it a natural fit for Claude Code. Once authenticated, you can give Claude instructions like:
- "Check my feed"
- "Search for posts about AI in Waterloo"
- "Read my latest messages"
- "Post an update about [topic]"
- "Find people working on [topic]"
Claude runs link-pulse commands behind the scenes, parses the JSON, and presents readable results.
Tips
- Install the slash command skills for
/linkedin-feed,/linkedin-search,/linkedin-messages,/linkedin-post - Add instructions to your
CLAUDE.mdto customize how Claude uses link-pulse - The
--headlessflag runs browser interactions in the background
Disclaimer
This tool is intended for personal, interactive use only. Some features use browser automation to access functionality not available through official APIs. It is not designed for bulk automation, scraping, or commercial use. By using this tool, you accept responsibility for compliance with the terms of service of any platforms you interact with.
Troubleshooting
"Auth expired" or commands fail after a while
Tokens expire after 60 days. Re-authenticate:
link-pulse auth login"No feed posts found"
The platform occasionally changes their page structure. Open an issue or let the maintainer know.
Browser doesn't open during login
npx playwright install chromium