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

@browserkit-dev/adapter-google-discover

v0.1.1

Published

Google Discover feed adapter for browserkit — personalised articles from your Google account

Readme

@browserkit-dev/adapter-google-discover

Google Discover feed adapter for browserkit — returns personalised articles from your Google Discover feed, running in Pixel 5 mobile emulation so the feed is available even before the desktop rollout reaches your account.

Requirements

  • A Google account with Discover enabled (available in US, UK, Canada, Australia, NZ, Germany)
  • browserkit installed and running

Login

One-time setup — run this once to authenticate:

browserkit login google-discover

This opens a visible Chrome browser in Pixel 5 mobile emulation. Log into your Google account normally. The session is saved to a persistent profile directory. Close the browser when done.

CAPTCHA note: Google may ask you to verify you're human during login. Complete the verification manually — the browser is visible for exactly this reason. After a successful login, subsequent headless runs reuse the saved session without prompting again (unless the session expires).

Tools

| Tool | Input | Description | |---|---|---| | get_feed | count: 1–30 | Personalised Discover articles: title, source, age, URL, topic, thumbnail |

Plus 5 auto-registered management tools from the framework: health_check, set_mode, take_screenshot, get_page_state, navigate.

Article shape

interface Article {
  title: string;
  source: string;       // publisher e.g. "BBC News"
  age: string;          // e.g. "3 hours ago"
  url: string;          // article URL
  topic?: string;       // topic label if shown e.g. "Technology"
  imageUrl?: string;    // thumbnail URL if present
}

Configuration

// browserkit.config.js
import { defineConfig } from "@browserkit-dev/core";

export default defineConfig({
  adapters: {
    "@browserkit-dev/adapter-google-discover": {
      port: 3849,
      deviceEmulation: "Pixel 5",  // required — Discover is a mobile-first surface
    },
  },
});
browserkit start

Connect your MCP client to http://127.0.0.1:3849/mcp.

Why mobile emulation?

Google Discover is still rolling out to desktop browsers and is not available for all accounts. By running the browser in Pixel 5 emulation, google.com serves the full mobile Discover feed regardless of desktop rollout status. The deviceEmulation config field in browserkit triggers this automatically — your other adapters (LinkedIn, HN, etc.) are unaffected.

Selector stability

Google uses dynamically-generated class names that change frequently. This adapter uses data-hveid attributes and semantic HTML (h3, a[href]) which are far more stable — Google uses them for internal analytics. If the feed stops returning results, run:

health_check

The selector health report will show which selectors are no longer found on the live page, making it easy to identify what changed and update src/selectors.ts.

Tests

pnpm test                # unit + MCP protocol + reliability (no auth required)
pnpm test:integration    # live Discover feed (requires google-discover login)