npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

link-pulse

v0.2.0

Published

Personal CLI for managing your professional network from the terminal

Downloads

20

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-pulse

Chromium will be installed automatically. If it doesn't, run:

npx playwright install chromium

Platform Notes

  • macOS: Works out of the box. keytar may prompt for Keychain access — click "Allow".
  • Linux: Requires libsecret-1-dev and build tools (sudo apt install libsecret-1-dev build-essential).
  • Windows: Requires windows-build-tools.

Setup

1. Create the config directory

mkdir -p ~/.linkedin-cli

2. Add your config

You should have received a config.json file containing your OAuth app credentials. Place it at:

~/.linkedin-cli/config.json

The 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 login

A browser window will open. Log in and authorize the app. Your session is saved securely in your OS keychain.

To verify:

link-pulse auth status

Usage

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 session

Feed

link-pulse feed                  # Read your home feed
link-pulse feed --limit 5        # Limit number of posts

Search

link-pulse search posts "AI agents"          # Search posts
link-pulse search people "Jane Doe"          # Search people
link-pulse search posts "AI" --limit 10      # With limit

Messages

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 message

Post

link-pulse post create --text "My post text here"          # Create a post
link-pulse post comment <post-urn> --text "Great post!"    # Comment on a post

Profile

link-pulse profile           # Show your cached profile

Global 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.md to customize how Claude uses link-pulse
  • The --headless flag 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