Browse Hacker News in the sidebar, preview articles in a readable panel, and save stories to Obsidian — without leaving the editor.
Features
- Stories sidebar — a dedicated Activity Bar view listing a Hacker News feed (Top / New / Best / Ask / Show / Jobs). Switch feeds from the view title bar, refresh on demand.
- Article preview — the eye action opens a readable, themed webview of the article (Readability-extracted). Ask/Show posts without a link show their text.
- Save to Obsidian — the cloud-upload action saves the story via the Local REST API, either as a link note or the full scraped article.
- Row click opens the story in the browser; the context menu opens the HN discussion.
Build
pnpm install # from the monorepo root
pnpm --filter ./packages/plugin-vscode build
The bundle is written to dist/extension.js.
Dev mode (watch): pnpm --filter ./packages/plugin-vscode dev.
Run / debug
Open packages/plugin-vscode in VS Code and press F5 (Run Extension), or build
and package a .vsix with pnpm --filter ./packages/plugin-vscode package (requires
@vscode/vsce). Install the .vsix via the Extensions view → "Install from VSIX…".
Settings
Configure under File → Preferences → Settings → HN Reader (or the gear in the view title):
| Setting | Default | Meaning |
|---|---|---|
hnReader.obsidianUrl |
http://127.0.0.1:27123 |
Local REST API base URL (use the non-encrypted HTTP server) |
hnReader.obsidianApiKey |
— | API key from the Local REST API plugin |
hnReader.obsidianFolder |
Hacker News |
Vault folder for notes |
hnReader.saveMode |
link |
link or article (full scrape) |
hnReader.defaultFeed |
top |
Feed shown on load |
hnReader.storiesLimit |
30 |
Stories loaded per feed |
Obsidian setup
Enable the Local REST API community plugin, turn on its non-encrypted HTTP
server (http://127.0.0.1:27123), and paste the URL and API key into the
settings above.
Notes
- The extension host is Node, so article scraping uses
linkedom+ Readability (no browser DOM). @hn/coreis bundled directly from its TypeScript sources via the esbuild alias.