keywordpro README

The project's README from github.com/AgriciDaniel/keywordpro. As one markdown file: README.md.

Keyword Pro

Keyword Pro

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.

Application

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.

Research workspace

Keyword Pro research workspace with report overview, demand trend, and search intent

Opportunity and difficulty

Keyword Pro opportunity map, difficulty spread, highest-volume keywords, and easiest wins

Keyword Pro interest trends and historical volume, CPC, and competition

Audience and regional demand

Keyword Pro audience demographics and regional demand

Search discovery

Keyword Pro autocomplete, people-also-ask, and related-search findings

Keyword table

Keyword Pro keyword table with volume, trends, difficulty, intent, CPC, and competition

Keyword details

Keyword Pro expanded keyword details and monthly history

Connections

Keyword Pro DataForSEO connection settings

What it does

Keyword Pro admits keyword endpoints only. Website, Social, and Commerce modes are not available in the interface or through the run APIs.

Run locally

Requirements: Node.js 24, pnpm 9, OpenSSL, and Podman or Docker.

cp .env.example .env
openssl rand -base64 32
pnpm install --frozen-lockfile --ignore-workspace

Paste 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.sh

The 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 seed

db: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:inventory

If 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.json

The 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.

Routes

/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 check

Credentials and cost

DataForSEO 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.

Community

Verify

pnpm --ignore-workspace run ci

The 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 start

It checks the database TLS decision and encryption-key material before opening the loopback application port.

Project documentation

License

Keyword Pro is open source under the Apache License 2.0.

Release status

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.

keywordpro (AgriciDaniel/keywordpro)

Searching Database…

What is this?Keyword Pro is a standalone, local keyword research console that runs a guided report alongside an advanced DataForSEO endpoint explorer, with saved sessions, charts, and PDF, CSV, and JSON exports.
Is this a hosted SEO service or something I run myself?It is a local, single-user application with no signup, billing, or hosted account system — you run it on your own machine and supply your own DataForSEO credentials.
How do I get it running?Generate an OpenSSL key, put it in KEYWORDPROENCRYPTIONKEY inside .env, start the local services with Podman or Docker, then run the db:migrate script to initialize the database on first run.
What do I need installed before trying it?Node.js 24, pnpm 9, OpenSSL, and Podman or Docker, plus your own DataForSEO API credentials since the app ships none.
Can I just expose this to my team over the network?No — it binds to 127.0.0.1 by default and is built as a single-user tool; exposing it to a LAN or the internet means you have to add your own authentication and run a security review first.
Where are my DataForSEO credentials stored?They are entered under Settings/Connections or via .env and stored encrypted locally with AES-256-GCM, and they are never sent back to the browser in plaintext.
Does using Keyword Pro cost money?The app itself is free and open source, but live research calls spend money from your connected DataForSEO account; it shows the estimated cost before any paid run begins.
How many markets and languages does the guided report cover?It supports 94 markets and all 46 languages available in the guided keyword report, and it blocks invalid country-language pairs before they can spend money.
What's different about Advanced mode?Advanced mode exposes 332 keyword-oriented DataForSEO endpoint definitions, but Keyword Pro only admits keyword endpoints — Website, Social, and Commerce modes aren't available.
Do I get charged again for opening an old report?No, completed reports are saved locally, so reopening a saved report never triggers another paid API call.
Size
4.7 MB
Stars
263
Updated
CommitSep 11
Age
1mo
Commits · 90 Days