
Local-first keyword research with guided reports, charts, saved sessions, and PDF, CSV, and JSON exp
Local-first keyword research with guided reports, charts, saved sessions, and PDF, CSV, and JSON exp
Keyword Pro is a standalone, local keyword research console. It combines a guided keyword report with an advanced endpoint explorer, saved research sessions, charts, and exports.
There is no signup, billing layer, or hosted account system. One local user owns the database and supplies their own DataForSEO credentials.
The screenshots below were captured from the actual local application using a deterministic synthetic report. They contain no account data, credentials, or captured provider results. Live results vary by query, market, language, and available provider data.
Keyword Pro admits keyword endpoints only. Website, Social, and Commerce modes are not available in the interface or through the run APIs.
Requirements: Node.js 24, pnpm 9, OpenSSL, and Podman or Docker.
cp .env.example .env
openssl rand -base64 32
pnpm install --frozen-lockfile --ignore-workspacePaste the OpenSSL output into KEYWORD_PRO_ENCRYPTION_KEY in .env before
starting the app. To keep the key outside .env, leave that value empty and set
KEYWORD_PRO_ENCRYPTION_KEY_FILE to a private file containing the generated
key. For rotation, configure KEYWORD_PRO_ENCRYPTION_KEYS with named keys and
select the write key with KEYWORD_PRO_ENCRYPTION_KEY_ACTIVE. Then run:
./dev-up.shThe startup script validates the required settings before starting local services.
In another terminal, initialize the local database on the first run:
pnpm --ignore-workspace db:migrate
pnpm --ignore-workspace seeddb:migrate creates a fresh canonical schema or transactionally upgrades the
legacy private-preview table names without rewriting saved reports or encrypted
credential values. It stops on a mixed or ambiguous schema instead of guessing.
After upgrading a private-preview database, inspect retained compatibility data without printing record identifiers, cached payloads, or encrypted values:
pnpm --ignore-workspace legacy:inventoryIf you choose to preserve that data outside PostgreSQL, create a private directory outside the repository and provide an explicit new filename:
mkdir -m 700 ../keyword-pro-private
pnpm --ignore-workspace legacy:export -- \
--output ../keyword-pro-private/legacy-compatibility.jsonThe export includes all saved sessions and opportunities plus retained legacy
credential ciphertext. It excludes current DataForSEO credentials, never
decrypts values, writes mode 0600, refuses overwrites, and refuses paths
inside the repository. Treat the resulting file as private. No export or
deletion happens automatically.
Open http://localhost:3002/keyword-pro.
Keyword Pro binds to 127.0.0.1 by default. It is a local, single-user tool,
not a hardened hosted or multi-user service. Do not expose it directly to a LAN
or the internet without adding authentication and a deployment-specific
security review.
/keyword-pro keyword console
/keyword-pro/research/[sessionId] saved keyword report
/settings/connections DataForSEO credentials
/settings/profile local profile
/api/v1/research/run one keyword endpoint
/api/v1/research/module/run curated keyword module
/api/health database checkDataForSEO credentials can be entered under Settings, Connections or supplied
through .env. Saved values are encrypted with AES-256-GCM and are never sent
back to the browser in plaintext.
Live research calls spend money from the connected DataForSEO account. The available report sources and estimate vary by country and language. The offline verification commands do not call a provider and do not spend money.
Keyword Pro is an independent project and is not affiliated with or endorsed by DataForSEO.
pnpm --ignore-workspace run ciThe CI suite performs linting, type checking, offline behavioral verification, and a production build. These checks do not make paid provider calls.
To run the built application locally, use the validated package command:
pnpm --ignore-workspace startIt checks the database TLS decision and encryption-key material before opening the loopback application port.
Keyword Pro is open source under the Apache License 2.0.
The package version is v1.0.0-rc.1, the first public release candidate.
Published releases come from immutable annotated tags after the tagged commit
passes GitHub Actions. See the
GitHub Releases page for
the latest published build.
No open issues yet, or sync has not completed.