Turn your Slack links into a personal tech magazine!
Quick Start · Features · Commands
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
- Node.js 18+
- AI API key (Anthropic, OpenAI, or Google)
- Slack account
# 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 serveConnect 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!
Fetch links from your connected Slack channels. AI automatically filters out noise (internal docs, videos, etc.) and keeps only valuable tech content.
linkpress sync
⚠️ Important: Slack tokens expire periodically. If you seeinvalid_autherrors during sync, re-runlinkpress source add slackto 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 serveNote: 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.
- Anthropic (Claude) - Currently supported
- OpenAI (GPT) - Coming soon
- Google (Gemini) - Coming soon
Articles are automatically tagged and classified by:
- Topic (Frontend, Backend, DevOps, AI/ML, etc.)
- Difficulty (Beginner, Intermediate, Advanced)
- Reading time
Toggle between light and dark mode. Your preference is saved.
Keep track of what you've read. Mark articles as read with a single click.
Real-time monitoring — new articles appear automatically as they're shared.
linkpress serve --watchAI summaries in your preferred language (English, 한국어, 日本語, 中文, etc.)
| 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 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: htmlContributions are welcome! Feel free to:
- 🐛 Report bugs
- 💡 Suggest features
- 🔧 Submit pull requests





