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

@bisibility/cli

v0.4.3

Published

Command-line client for Bisibility - run rank checks and read ranking history from your terminal.

Readme

@bisibility/cli

Part of bisibility - open-source keyword rank tracking you can self-host and automate. This repository contains the command-line interface for the Bisibility REST API.

Docs · API reference · Roadmap

Status: Developer preview.

Command-line access to Bisibility projects, keywords, rank checks, analytics, alerts, and administration.

Install

Install the published package:

npm install -g @bisibility/cli

Check for an update without changing the installation, or upgrade through the detected global package manager:

bisibility upgrade --check
bisibility upgrade

The CLI checks npm for a newer stable release at most once per day while an interactive command is running. A cached notification is printed to stderr after successful command output. Checks are suppressed for JSON output, help, version output, CI, and non-interactive sessions. Set BISIBILITY_NO_UPDATE_CHECK=1 or the conventional NO_UPDATE_NOTIFIER=1 to disable them. The upgrade command supports npm, pnpm, and Bun; when the installation method cannot be identified, it prints manual commands without changing the installation. Yarn Classic installations also use this manual fallback to avoid creating a second global installation with another package manager.

To work on the CLI from source:

git clone https://github.com/CorgiCorner/bisibility-cli.git
cd bisibility-cli
npm install
npm run check
npm link

Quickstart

Sign in, select a project, and run the first keyword workflow:

bisibility auth login
bisibility projects list
bisibility projects use example.com

bisibility keywords add "rank tracker api" \
  --device desktop \
  --country "United States" \
  --target-url https://example.com/rank-tracker \
  --tag api

bisibility keywords list --limit 50

projects use accepts an exact project name, domain, or public project ID. Once selected, the project becomes the default for commands that need one. Pass --project <project-id> to override it for a single command.

Run bisibility --help for the complete command list and bisibility <command> --help for command-specific options.

Authentication and configuration

The CLI checks credentials in this order:

  1. BISIBILITY_API_KEY
  2. the config file

The API base URL defaults to https://eu.bisibility.com/api/v1.

For Bisibility Cloud, use OAuth Authorization Code with PKCE:

bisibility auth login
bisibility auth status
bisibility auth logout

Login opens the browser and creates a personal access token. By default, the token is named CLI on <hostname> and expires after 90 days. Use --scope read|write|admin, --name, and --expires 30|90|365|never to change those defaults.

auth logout removes the credential from the local config without revoking it. Use bisibility auth logout --revoke when you also want to invalidate the active personal access token on the server. Credentials supplied through --api-key or BISIBILITY_API_KEY must be removed from the command or environment explicitly.

On a headless machine, create a PAT at bisibility.com/app/account/security, then store it:

bisibility config set apiKey bsb_pat_live_...
bisibility config set baseUrl https://eu.bisibility.com/api/v1
bisibility config get

Environment variables take precedence over stored values:

export BISIBILITY_API_KEY=bsb_key_live_...
export BISIBILITY_BASE_URL=https://eu.bisibility.com/api/v1

Self-hosted authentication

Install the published CLI and configure both URLs before signing in:

npm install -g @bisibility/cli

bisibility config set baseUrl https://rank.example.com/api/v1
bisibility config set cloudUrl https://rank.example.com
bisibility auth login
bisibility auth status
bisibility projects list
bisibility projects use example.com

cloudUrl is the Bisibility app origin that serves the browser authorization flow. baseUrl is the REST API root and includes /api/v1; do not append that path to cloudUrl. During login, the browser returns to a temporary loopback listener on the machine running the CLI. If that machine cannot open a browser automatically, open the authorization URL printed by the CLI manually in a browser on that same machine. For truly headless machines, use the environment-variable flow below.

For headless automation, provide a personal or project credential directly and set both self-host URLs in the environment:

export BISIBILITY_API_KEY=bsb_pat_live_...
export BISIBILITY_BASE_URL=https://rank.example.com/api/v1
export BISIBILITY_CLOUD_URL=https://rank.example.com

bisibility auth status
bisibility projects use example.com

Project selection follows this order:

  1. --project <id> or -p <id>
  2. BISIBILITY_PROJECT_ID
  3. the nearest .bisibility/project.json directory link
  4. the global projectId in the config file
  5. automatic inference when the credential can access exactly one project

Link a repository to a project when you want a directory-specific default:

cd ~/src/example.com
bisibility link example.com
bisibility projects current
bisibility unlink

bisibility link writes a non-secret .bisibility/project.json file and adds its directory to .gitignore.

The default config path is ~/.config/bisibility/config.json. Use --config <path> or BISIBILITY_CONFIG to select another file. Credentials are stored as plaintext JSON. On POSIX systems, the CLI protects the default directory with mode 0700 and the file with mode 0600. Prefer environment variables in managed CI environments.

Public IDs

Resource IDs use public ID v3: a lowercase resource prefix, an underscore, and a 24-character lowercase alphanumeric suffix. For example:

  • project: prj_a1b2c3d4e5f6g7h8j9k0m2n3
  • keyword: kw_b2c3d4e5f6g7h8j9k0m2n3p4

The CLI rejects raw database IDs, legacy IDs, mixed-case values, and IDs with the wrong resource prefix before sending a request. Commands document ID arguments as <project-id>, <keyword-id>, and similar placeholders so examples stay readable.

Locations are different: use a location_key returned by bisibility locations search. Location resource IDs are not supported.

Common workflows

The examples below assume a default project selected with bisibility projects use.

Keywords and rank checks

Set KEYWORD_ID and CHECK_ID to IDs returned by the preceding list and check commands.

bisibility keywords add "rank tracker" "seo monitor" --country Poland --city Krakow
bisibility keywords list --all --json
bisibility keywords research "rank tracker" --estimate --max-cost 6
bisibility keywords metrics --file keywords.txt --json

bisibility keywords get "$KEYWORD_ID"
bisibility keywords update "$KEYWORD_ID" --frequency weekly
bisibility check "$KEYWORD_ID" --async
bisibility check get "$CHECK_ID"

Use keywords add --file <path> for one keyword per line, or --file - for stdin. Blank lines and lines beginning with # are ignored.

Research and uncached metrics can spend the project's DataForSEO budget. Use --estimate before paid lookups and --max-cost <cents> as a best-effort request guard.

check --async returns a running check immediately. Fetch it later with check get.

Locations, analytics, and signals

bisibility locations search "warsaw" --country PL --limit 10 --json
bisibility analytics traffic-snapshots --start-date 2026-07-01 --end-date 2026-07-07
bisibility analytics sync --idempotency-key sync-2026-07-07
bisibility signals create --source deploy --type deploy.completed --severity info
bisibility signals list --source deploy --all

--country and --location both set the market country; --location takes precedence. Use --city for city-level targeting or --location-key for a canonical market key.

Signal payloads must be JSON objects no larger than 8KB after serialization. Writable signal sources are api, cms, and deploy.

Projects and automation

bisibility projects create --name "Example" --domain example.com --use
bisibility projects defaults --country Poland --frequency daily
bisibility export --format json --output dump.json
bisibility cloud import dump.json --token mig_... --dry-run

Use bisibility cloud compat to check import compatibility before sending an export package. Migration tokens can also come from BISIBILITY_MIGRATION_TOKEN.

Command groups

| Group | Purpose | | --- | --- | | auth, config, link, unlink | Authentication and local project selection | | projects, keywords, check | Core rank-tracking workflows | | backlinks, analytics, signals | Research, traffic analytics, and events | | cost, locations | Public cost estimates and location discovery | | alerts, sitemaps | Alert rules, triggered alerts, and sitemap monitoring | | providers, competitors, views | Data providers and project configuration | | team, notifications | Collaboration and notification preferences | | api-keys, me, tokens | API keys, personal tokens, and migration tokens | | export, cloud | Rank-history export and cloud migration | | capabilities, openapi, llms-txt | Machine-readable API discovery |

Administrative commands require a credential with the matching scope. The create commands for API keys, personal tokens, and migration tokens print raw credentials once. Store them securely.

Global options

--api-key <key>          API key, defaults to BISIBILITY_API_KEY or config
--base-url <url>         API v1 base URL, defaults to BISIBILITY_BASE_URL or config
--cloud-url <url>        Cloud host, defaults to BISIBILITY_CLOUD_URL or config
--project <id>, -p <id>  Project ID; flag > env > local link > global config
--config <path>, -c      Config file path
--json                   Print JSON where supported
--help, -h               Show command help
--version, -v            Show the CLI version

Development

npm install
npm run check

License

Licensed under the Apache License, Version 2.0. See LICENSE and NOTICE.