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

linkpress

v0.3.1

Published

Turn your Slack links into a personal tech magazine with AI-powered summaries

Readme


Why LinkPress?

Great tech articles get shared in Slack every day. But they pile up, get buried, and you never read them.

LinkPress fixes this. It collects links from your Slack channels, uses AI to summarize them, and generates a beautiful magazine you'll actually want to read.

  • 🤖 AI-Powered Summaries — Get the gist before you click (Claude, GPT, or Gemini)
  • 📰 Magazine-Style UI — Not a boring list, but a curated reading experience
  • 🔒 100% Local — Your data stays on your machine
  • 5 Minutes Setup — Install, connect Slack, done

Requirements

  • Node.js 18+
  • AI API key (Anthropic, OpenAI, or Google)
  • Slack account

Quick Start

# Install globally
npm install -g linkpress

# Initialize (set up AI provider)
linkpress init

# Connect your Slack workspace
linkpress source add slack

# Sync, generate, and view!
linkpress sync
linkpress generate
linkpress serve

Step 1: Connect Slack

Connect your Slack workspace with automatic token extraction. Just log in and we'll handle the rest.

🚀 Coming Soon: LinkPress SaaS will support Slack OAuth for one-click workspace connection — no manual login required.

linkpress source add slack

⚠️ Important: When the browser opens, DO NOT open in the Slack desktop app. You must click "Use Slack in your browser" to continue. The automatic token extraction only works in the browser, not in the desktop app.

📝 Note: We recommend the Automatic method (default). If automatic extraction fails, you can select Manual mode and paste tokens from your browser's DevTools. The CLI will guide you through the process.

Select the channels you want to watch with real-time autocomplete. Your Saved Messages is auto-added by default. Type to search, enter to select, and pick "Done" when finished.

💡 Tip: Saved Messages is the easiest way to curate links — just forward interesting articles to yourself in Slack!

Step 2: Sync Links

Fetch links from your connected Slack channels. AI automatically filters out noise (internal docs, videos, etc.) and keeps only valuable tech content.

linkpress sync

Step 3: Generate Magazine

⚠️ Important: Slack tokens expire periodically. If you see invalid_auth errors during sync, re-run linkpress source add slack to refresh your token.

Process articles with AI and generate your personal magazine. Each article gets:

  • Catchy headline
  • TL;DR summary
  • Key points
  • Difficulty level
  • Reading time
linkpress generate
linkpress serve

Note: Some websites with bot detection may fail to scrape (HTTP 403). These articles will be skipped during processing, but you can still access them via the original URL.

Features

🤖 AI-Powered

  • Anthropic (Claude) - Currently supported
  • OpenAI (GPT) - Coming soon
  • Google (Gemini) - Coming soon

📊 Smart Classification

Articles are automatically tagged and classified by:

  • Topic (Frontend, Backend, DevOps, AI/ML, etc.)
  • Difficulty (Beginner, Intermediate, Advanced)
  • Reading time

🌙 Light & Dark Theme

Toggle between light and dark mode. Your preference is saved.

✅ Read/Unread Tracking

Keep track of what you've read. Mark articles as read with a single click.

👀 Watch Mode

Real-time monitoring — new articles appear automatically as they're shared.

linkpress serve --watch

🌍 Multilingual

AI summaries in your preferred language (English, 한국어, 日本語, 中文, etc.)

Commands

| Command | Description | |---------|-------------| | linkpress init | Set up AI provider and preferences | | linkpress source add slack | Connect a Slack workspace | | linkpress source list | List connected sources | | linkpress source remove slack | Remove a workspace | | linkpress sync | Fetch links from Slack | | linkpress add <url> | Manually add a URL | | linkpress list | Show saved articles | | linkpress generate | Process articles and create magazine | | linkpress generate --skip-process | Regenerate without AI processing | | linkpress serve | Start local server (localhost:3000) | | linkpress serve --watch | Start with real-time monitoring | | linkpress clear | Delete all articles |

Configuration

Configuration is stored in ~/.linkpress/config.yaml:

ai:
  provider: anthropic  # anthropic, openai, or gemini
  model: claude-sonnet-4-5-20250929
  apiKey: sk-ant-...
  language: English    # Summary language

sources:
  slack:
    - workspace: MyWorkspace
      channels:
        - id: C01234567
          name: tech-links

output:
  directory: ~/.linkpress/output
  format: html

Contributing

Contributions are welcome! Feel free to:

  • 🐛 Report bugs
  • 💡 Suggest features
  • 🔧 Submit pull requests

Author

Changmin (Chris) Kang