New:Socket for Asana Is Now Available.Learn more
Get Started

@techsnif/cli

Package Overview
Dependencies
Maintainers
1
Versions
10
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@techsnif/cli - npm Package Compare versions

Comparing version
0.3.0
to
0.4.0
+131
-16
dist/lib/public-commands.js
import { Option } from 'commander';
import { exec } from 'node:child_process';
import { getDefaultApiUrl, getStories, getStory, getTechEvents, searchStories, } from './api.js';

@@ -10,2 +11,58 @@ import { formatDate, htmlToText, printOutput, } from './output.js';

}
// ─── Filtering Helpers ──────────────────────────────────────
function filterCommentaryByPlatform(links, platform) {
if (!links)
return [];
const lower = platform.toLowerCase();
return links.filter(l => l.platform.toLowerCase() === lower);
}
function filterStories(stories, opts) {
let result = stories;
if (opts.platform) {
const lower = opts.platform.toLowerCase();
result = result
.map(s => ({
...s,
commentaryLinks: (s.commentaryLinks || []).filter(l => l.platform.toLowerCase() === lower),
}))
.filter(s => (s.commentaryLinks ?? []).length > 0);
}
if (opts.hasDiscussion) {
result = result.filter(s => (s.commentaryLinks || []).length > 0);
}
return result;
}
function filterStoryDetail(story, opts) {
const result = { ...story };
if (opts.platform) {
result.commentaryLinks = filterCommentaryByPlatform(result.commentaryLinks, opts.platform);
}
if (opts.publisher) {
const lower = opts.publisher.toLowerCase();
result.links = (result.links || []).filter(l => l.linkType === 'lead' || (l.publisher && l.publisher.toLowerCase().includes(lower)));
}
return result;
}
// ─── URL Opener ─────────────────────────────────────────────
const MAX_OPEN_URLS = 5;
function openInBrowser(url) {
const cmd = process.platform === 'darwin' ? 'open'
: process.platform === 'win32' ? 'start'
: 'xdg-open';
exec(`${cmd} ${JSON.stringify(url)}`);
}
function openStoryUrls(story, opts) {
let urls;
if (opts.platform) {
urls = filterCommentaryByPlatform(story.commentaryLinks, opts.platform).map(l => l.url);
}
else {
urls = [story.leadUrl];
}
const opened = urls.slice(0, MAX_OPEN_URLS);
for (const url of opened)
openInBrowser(url);
return opened;
}
// ─── Renderers ──────────────────────────────────────────────
const TIER_LABELS = { 3: '[TOP STORY]', 2: '[MAJOR]', 1: '' };

@@ -34,3 +91,3 @@ function renderStorySummary(story) {

}
function renderStoryFull(story) {
function renderStoryFull(story, opts = {}) {
const tier = TIER_LABELS[story.headlineTier] || '';

@@ -88,3 +145,5 @@ const attribution = [story.sourceAuthor, story.sourcePublisher].filter(Boolean).join(' / ') || 'Source';

lines.push('', ` ${take.excerpt}`);
lines.push('', htmlToText(take.content));
if (!opts.brief) {
lines.push('', htmlToText(take.content));
}
}

@@ -98,2 +157,3 @@ return lines.join('\n');

}
// ─── Commands ───────────────────────────────────────────────
export function registerPublicCommands(program) {

@@ -107,14 +167,17 @@ addCommonReadOptions(program

.addOption(new Option('--publisher <name>', 'Filter by lead publisher name (e.g. TechCrunch, TechSnif)'))
.addOption(new Option('--platform <name>', 'Filter to stories discussed on this platform (e.g. x, bluesky, threads)'))
.addOption(new Option('--has-discussion', 'Only show stories with social discussion links'))
.action(async (options) => {
const tier = options.tier ? Number.parseInt(options.tier, 10) : undefined;
const result = await getStories({
limit: Number.parseInt(options.limit, 10),
sort: options.sort,
tier,
publisher: options.publisher,
}, options);
const result = await getStories({ limit: Number.parseInt(options.limit, 10), sort: options.sort, tier, publisher: options.publisher }, options);
const filtered = filterStories(result.stories, {
platform: options.platform,
hasDiscussion: options.hasDiscussion,
});
const filterDesc = options.publisher
? ` from ${options.publisher}`
: options.tier ? ` at tier ${options.tier}` : '';
printOutput(result, { json: options.json, targetEnv: options.apiUrl }, (data) => renderStoriesBlock(`Story clusters${filterDesc} (${data.stories.length} shown of ${data.total})`, data.stories));
const platformDesc = options.platform ? ` discussed on ${options.platform}` : '';
const discussionDesc = !options.platform && options.hasDiscussion ? ' with discussion' : '';
printOutput({ stories: filtered, total: result.total }, { json: options.json, targetEnv: options.apiUrl }, (d) => renderStoriesBlock(`Story clusters${filterDesc}${platformDesc}${discussionDesc} (${d.stories.length} shown of ${d.total})`, d.stories));
});

@@ -125,5 +188,28 @@ addCommonReadOptions(program

.argument('<slug>', 'Story cluster slug')
.addOption(new Option('--platform <name>', 'Filter discussion links to this platform (e.g. x, bluesky, threads)'))
.addOption(new Option('--publisher <name>', 'Filter coverage links by publisher name'))
.addOption(new Option('--brief', 'Show metadata and links only, skip the full TechSnif article body'))
.addOption(new Option('--open', 'Open URLs in browser (lead article, or filtered platform discussion URLs)'))
.action(async (slug, options) => {
const story = await getStory(slug, options);
printOutput(story, { json: options.json, targetEnv: options.apiUrl }, (data) => renderStoryFull(data));
const filtered = filterStoryDetail(story, {
platform: options.platform,
publisher: options.publisher,
});
const warnings = [];
if (options.open) {
const opened = openStoryUrls(story, { platform: options.platform });
if (opened.length === 0) {
warnings.push(`No URLs to open${options.platform ? ` for platform "${options.platform}"` : ''}.`);
}
else {
const totalUrls = options.platform
? filterCommentaryByPlatform(story.commentaryLinks, options.platform).length
: 1;
if (totalUrls > MAX_OPEN_URLS) {
warnings.push(`Opened ${MAX_OPEN_URLS} of ${totalUrls} URLs. Use --platform to narrow results.`);
}
}
}
printOutput(filtered, { json: options.json, targetEnv: options.apiUrl }, (data) => renderStoryFull(data, { brief: options.brief }), warnings);
});

@@ -136,9 +222,13 @@ addCommonReadOptions(program

.addOption(new Option('--publisher <name>', 'Filter by lead publisher name'))
.addOption(new Option('--platform <name>', 'Filter to stories discussed on this platform (e.g. x, bluesky, threads)'))
.addOption(new Option('--has-discussion', 'Only show stories with social discussion links'))
.action(async (query, options) => {
const result = await searchStories({
query,
limit: Number.parseInt(options.limit, 10),
publisher: options.publisher,
}, options);
printOutput(result, { json: options.json, targetEnv: options.apiUrl }, (data) => renderStoriesBlock(`Search results for "${query}" (${data.stories.length} of ${data.total})`, data.stories));
const result = await searchStories({ query, limit: Number.parseInt(options.limit, 10), publisher: options.publisher }, options);
const filtered = filterStories(result.stories, {
platform: options.platform,
hasDiscussion: options.hasDiscussion,
});
const platformDesc = options.platform ? ` discussed on ${options.platform}` : '';
const discussionDesc = !options.platform && options.hasDiscussion ? ' with discussion' : '';
printOutput({ stories: filtered, total: result.total }, { json: options.json, targetEnv: options.apiUrl }, (d) => renderStoriesBlock(`Search results for "${query}"${platformDesc}${discussionDesc} (${d.stories.length} of ${d.total})`, d.stories));
});

@@ -180,3 +270,28 @@ addCommonReadOptions(program

});
addCommonReadOptions(program
.command('platforms')
.description('List social discussion platforms active across current stories'))
.action(async (options) => {
const result = await getStories({ limit: 80, sort: 'rank' }, options);
const counts = {};
for (const story of result.stories) {
const seen = new Set((story.commentaryLinks || []).map(l => l.platform));
for (const p of seen) {
counts[p] = (counts[p] || 0) + 1;
}
}
const sorted = Object.entries(counts).sort((a, b) => b[1] - a[1]);
const data = {
platforms: sorted.map(([platform, storyCount]) => ({ platform, storyCount })),
storiesScanned: result.stories.length,
};
printOutput(data, { json: options.json, targetEnv: options.apiUrl }, (d) => {
if (d.platforms.length === 0)
return 'No discussion platforms found across current stories.';
const maxLen = Math.max(...d.platforms.map(p => p.platform.length));
const rows = d.platforms.map(p => ` ${p.platform.padEnd(maxLen)} ${p.storyCount} ${p.storyCount === 1 ? 'story' : 'stories'}`);
return [`Active discussion platforms (across ${d.storiesScanned} stories):`, '', ...rows].join('\n');
});
});
}
//# sourceMappingURL=public-commands.js.map
+1
-1

@@ -1,1 +0,1 @@

{"version":3,"file":"public-commands.js","sourceRoot":"","sources":["../../src/lib/public-commands.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"public-commands.js","sourceRoot":"","sources":["../../src/lib/public-commands.ts"],"names":[],"mappings":"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"}
{
"name": "@techsnif/cli",
"version": "0.3.0",
"version": "0.4.0",
"description": "Public CLI for TechSnif. Agent-first tech news and story clusters from your terminal.",

@@ -5,0 +5,0 @@ "type": "module",

+84
-29
# @techsnif/cli
Public CLI for TechSnif intelligence queries.
Public CLI for TechSnif — query story clusters, coverage links, social discussion, and tech events from the terminal.
The public CLI exposes TechSnif's API-backed intelligence surface:
- `article`
- `categories`
- `feed`
- `trending`
- `search`
- `summary`
## Install

@@ -19,3 +11,3 @@

Or run it without installing globally:
Or run without installing:

@@ -26,20 +18,85 @@ ```bash

## Usage
## Commands
These commands default to `https://api.techsnif.com` and support `--json` for scripts and agents:
### `stories` — List story clusters
```bash
techsnif article my-article-slug --format markdown --json
techsnif categories --json
techsnif feed --category AI --limit 5 --json
techsnif trending --limit 5 --json
techsnif search "AI funding" --last 7d --json
techsnif summary --topic "semiconductors" --last 7d --json
techsnif stories
techsnif stories --sort newest --limit 10
techsnif stories --tier 3
techsnif stories --publisher "The Verge"
techsnif stories --platform x
techsnif stories --has-discussion
techsnif stories --platform bluesky --has-discussion --json
```
Result caps:
- `feed`: default `10`, max `50`
- `trending`: default `5`, max `20`
- `search`: default `20`, max `50`
| Option | Description |
|---|---|
| `--limit <n>` | Results to return (default 20, max 80) |
| `--sort <order>` | `rank` (prominence, default) or `newest` |
| `--tier <n>` | Filter by headline tier: 1=standard, 2=major, 3=top |
| `--publisher <name>` | Filter by lead publisher name |
| `--platform <name>` | Only stories discussed on this platform (x, bluesky, threads, linkedin, forums, mastodon) |
| `--has-discussion` | Only stories with social discussion links |
| `--json` | Machine-readable JSON output |
| `--api-url <url>` | Override API base URL |
### `story` — Full story cluster detail
```bash
techsnif story flipboard-launches-surf
techsnif story flipboard-launches-surf --platform x
techsnif story flipboard-launches-surf --publisher TechCrunch
techsnif story flipboard-launches-surf --brief
techsnif story flipboard-launches-surf --platform bluesky --open
```
| Option | Description |
|---|---|
| `--platform <name>` | Filter discussion to this platform only |
| `--publisher <name>` | Filter coverage links by publisher name |
| `--brief` | Skip the full TechSnif article body, show metadata and links only |
| `--open` | Open URLs in browser (lead article, or filtered platform discussion URLs) |
| `--json` | Machine-readable JSON output |
| `--api-url <url>` | Override API base URL |
### `search` — Search by headline keyword
```bash
techsnif search "AI funding"
techsnif search "robotics" --platform x --has-discussion
techsnif search "Apple" --publisher "The Verge" --limit 5 --json
```
| Option | Description |
|---|---|
| `--limit <n>` | Results to return (default 10, max 50) |
| `--publisher <name>` | Filter by lead publisher name |
| `--platform <name>` | Only stories discussed on this platform |
| `--has-discussion` | Only stories with social discussion links |
| `--json` | Machine-readable JSON output |
| `--api-url <url>` | Override API base URL |
### `events` — Upcoming tech events
```bash
techsnif events
techsnif events --limit 5 --json
```
| Option | Description |
|---|---|
| `--limit <n>` | Results to return (default 10, max 50) |
| `--json` | Machine-readable JSON output |
| `--api-url <url>` | Override API base URL |
### `platforms` — Active discussion platforms
```bash
techsnif platforms
techsnif platforms --json
```
Lists social platforms with active discussion across current stories, with story counts.
## Local Development

@@ -54,3 +111,3 @@

```bash
pnpm techsnif trending --api-url http://localhost:4321 --json
pnpm techsnif stories --api-url http://localhost:4321
```

@@ -60,3 +117,3 @@

Every public command supports `--json` and returns a stable envelope:
Every command supports `--json` and returns a stable envelope:

@@ -71,9 +128,7 @@ ```json

For `article`, `--format html|text|markdown` controls the returned `content` field in both human-readable and JSON output. The default is `html`.
## Notes
- User-facing attribution never exposes `Techmeme`.
- The public CLI is intentionally API-only.
- The public CLI is intentionally API-only — no direct database access.
- Internal/operator workflows remain repo-local and are not part of the published package.
- `categories` is the easiest way for agents to discover valid category values without guessing.
- Platform and publisher filtering is case-insensitive throughout.
- `--open` caps at 5 URLs to prevent tab overload.