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

chat-dl

v0.1.0

Published

A command-line tool to download and convert AI chat conversations to markdown format. It allows you to save and share conversations from popular AI platforms in a readable, portable format.

Readme

chat-dl

A command-line tool to download and convert AI chat conversations to markdown format. It allows you to save and share conversations from popular AI platforms in a readable, portable format.

Features

| Feature | ChatGPT | Claude | Gemini | Grok | | ------------- | ----------------- | ------ | ------ | ------------------- | | Code Blocks | ✅ | ✅ | ✅ | ✅ | | Web Citations | ✅ (content refs) | ❌ | ❌ | ✅ (tweets, web) | | Artifacts | ❌ | ✅ | ❌ | ❌ | | REPL | ❌ | ✅ | ❌ | ❌ | | Reasoning | ❌ | ❌ | ❌ | ✅ (thinking trace) | | Enterprise | ✅ | ❌ | ❌ | ❌ |

Gemini accepts both the share.gemini.google short link and the gemini.google.com/share/<id> link it redirects to.

Usage

No installation is required, you can run the CLI directly using npx:

# Output to stdout (default)
npx chat-dl <url>

# Save to file
npx chat-dl --output chat.md <url>

Commands

The CLI supports four main commands:

  • url2md: Convert a chat URL or local chat file directly to markdown (default)
  • url2json: Download chat data from a URL or parse a local chat file as JSON
  • json2md: Convert JSON to markdown
  • dir2md: Recursively convert supported local chat files in a directory to markdown
  • opencode2md: Convert sessions from OpenCode's local SQLite database to markdown

Examples

# Basic usage - outputs to console
npx chat-dl https://chatgpt.com/share/feacac46-4201-48c5-9fb6-e3109475c8c8

# Gemini shared conversation
npx chat-dl https://share.gemini.google/3klxEXHcOBOl

# Two-step process with intermediate JSON
npx chat-dl url2json --output chat.json https://x.com/i/grok/share/ntS9ACoPKa2XcPwFnFYT2uUiL
cat chat.json | npx chat-dl json2md --output chat.md

# Convert local Claude Code JSONL transcripts
npx chat-dl dir2md ~/.claude/projects --output ./claude-transcripts

# Convert local Kiro IDE session transcripts
npx chat-dl dir2md ~/.kiro/sessions --output ./kiro-transcripts

# Export every OpenCode session (grouped as <sanitized-full-path>/<YYYY-MM-DD>/<session-id>.md)
npx chat-dl opencode2md --all --output ./opencode-transcripts

# Export one OpenCode session
npx chat-dl opencode2md ses_... --output chat.md

Protected shared links

Some shared links are not publicly accessible and require authentication in your browser. Public links use the default Puppeteer browser path. For protected links, use your existing Chrome credentials by enabling Chrome's remote debugging UI and running the tool while Chrome is still open.

For the Chrome DevTools MCP-style auto-connect flow in Chrome 144+:

  1. Open chrome://inspect/#remote-debugging
  2. Allow incoming debugging connections
  3. Run the tool with --existing-chrome:
npx chat-dl --existing-chrome <protected-share-url>

Development

npm install
npm start -- <url>

Parser verification

To smoke-test the Claude Code parser and renderer against recent local transcripts:

npm run verify:claude-jsonl

The script checks the latest 100 .jsonl files under ~/.claude/projects by default. You can override the source and count with CLAUDE_PROJECTS_DIR and CLAUDE_JSONL_LIMIT.

To check the URL providers against a list of known shared conversations:

npm run verify:urls

Each fixture records the heading count its conversation should render, so a provider that starts dropping turns fails instead of quietly returning less. The run bypasses the download cache, forces headless Chrome, and exits non-zero on any divergence. Pass provider names to narrow it (npm run verify:urls -- gemini), --cached to reuse downloads, and --blocked to also attempt fixtures that bot protection rejects in headless Chrome.

Fixtures recorded as broken or blocked document providers that are already failing: they do not fail the run, but they are reported as FIXED? if they start working, so the list stays honest.