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

storymine

v0.1.1

Published

A local-first CLI that finds useful blog ideas in Claude and Codex coding chats.

Readme

Storymine

Storymine reads your recent Claude and Codex coding chats and finds the few ideas that may be worth turning into blog posts.

It looks for work with a real shape: a concrete problem, failed attempts, a useful change of direction, a recipe someone else can follow, and proof that the result worked.

The evidence pass is deterministic. Storymine gets project directories from the selected chats, resolves their Git roots, and inspects recent commits, created files, package metadata, repository remotes, and configured site URLs. It does not assume a particular folder layout.

Install

npm install --global storymine

Storymine needs Node.js 20 or newer. It also needs either the Codex CLI or Claude Code for the model pass.

Scan your recent chats

storymine scan

This scans the last seven days. Indexing and redaction happen locally. Storymine ranks sessions before it calls a model, so a busy week does not turn into hundreds of model calls.

Narrow the scan when you already know where the useful work happened:

storymine scan --project seo
storymine scan --provider codex --days 14
storymine scan --agent claude

Personal interests are optional ranking hints, not built-in product opinions:

storymine scan --topics "marketing,seo,AI coding"

Set STORYMINE_TOPICS to use the same interests on every scan. With no interests configured, Storymine stays topic-neutral. Interests add a small deterministic boost and never rescue a weak story.

A scan can take several minutes. It is resumable. Sessions with valid stored summaries are skipped on the next run, while failed or invalid summaries are tried again.

See what you built

Use the deterministic evidence pass without a model:

storymine work --days 14
storymine work --topics "marketing,seo,AI coding" --json

This lists recent tools, projects, created-file and commit counts, command or skill signals, package names, repository remotes, and configured site URLs. It is also included in storymine scan output.

Read and review ideas

storymine ideas

Each idea includes the problem, what failed, the non-obvious move, a reusable recipe, evidence, matched interests, and any locally declared repository, package, or site links. Raw transcript text is not included.

A Git remote proves that a repository URL is configured. It does not prove that the repository is public. Storymine labels its visibility as unknown. Site URLs come from local package or deployment configuration and are not checked over the network.

Keep useful ideas and reject weak ones:

storymine ideas approve <idea-id>
storymine ideas reject <idea-id>
storymine ideas needs-work <idea-id>

That feedback stays in the local database. It gives future prompt and eval work something real to improve against.

Agents and scripts should use JSON:

storymine scan --json
storymine ideas --status all --json

JSON mode does not print progress or terminal decoration.

What a good result looks like

Weak output sounds like advice anyone could have written without doing the work:

  • write tests
  • be clear with AI
  • use a better library
  • review the output

A useful idea names what actually happened. For example, a raster logo kept producing messy traced paths. The useful move was to measure the intended geometry, rebuild the shape from circles and shared slopes, then compare renders with image metrics. The passing metrics and generated asset provide the proof.

Storymine rejects ideas that are too short, generic, routine, missing a failure-to-result arc, or missing measurable evidence. It also limits projects from dominating a run, collapses repeat stories into supporting evidence, and keeps invalid model responses retryable. Human review is still part of the workflow. A model score is not a publishing decision.

Privacy

Transcript files and Storymine's SQLite database stay on your machine. Stored chunks have common secrets, email addresses, and usernames in home directory paths removed.

The model pass is a separate boundary. Redacted excerpts are sent to the command used by storymine scan, which defaults to codex exec --ephemeral -. Your model provider may process those excerpts outside your machine.

Inspect local paths and counts with:

storymine privacy
storymine doctor

storymine doctor also checks whether the Codex and Claude commands are available and reports their installed versions.

Delete Storymine's local state only when you mean to:

storymine reset --yes

See PRIVACY.md for the full boundary.

Install the agent skill

Storymine ships one small skill that teaches coding agents when to scan, use the deterministic work inventory, and review ideas. Install it through the same skills ecosystem used by the SEO CLI:

storymine skill install

Without a global Storymine install, run:

npx storymine skill install

The installer delegates to npx skills add iannuttall/storymine.

MCP

storymine mcp serve

The MCP server exposes four jobs:

  • storymine_scan
  • storymine_recent_work
  • storymine_list_ideas
  • storymine_review_idea

The CLI and MCP server call the same functions in packages/core.

Power tools

Normal use should stay on scan and ideas. The indexing, search, summary, finding, and old candidate commands remain available for debugging and deeper audits.

storymine help all
storymine me transcripts --help
storymine findings --help

Work on the source

pnpm install
pnpm build
pnpm typecheck
pnpm lint
pnpm test
pnpm test:package-install

The monorepo has three private workspaces:

  • packages/core owns storage, parsing, redaction, ranking, summaries, mining, ideas, and the full scan
  • packages/cli owns command parsing and terminal output
  • packages/mcp owns the small stdio server

The root storymine package bundles those workspaces into one public API, one CLI binary, and storymine/mcp.