# Serp Keyword Harvester

> Collect and normalize search-demand inputs for public site projects before semantic-core work. Use when a UI/UX or SEO project needs seed keywords, SERP snapshots, autocomplete ideas, People Also Ask, related searches, or a dry-run keyword harvest with approval-gated external search APIs.

- Skill: `sergekostenchuk/serp-keyword-harvester` (Agent Skill, multi-file: 6 files)
- Install (CLI): `npx skillmds@latest add sergekostenchuk/serp-keyword-harvester`
- Raw SKILL.md: https://api.skillmd.com/api/skills/sergekostenchuk/serp-keyword-harvester/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Marketing & Growth
- Author: sergekostenchuk (https://skillmd.com/u/sergekostenchuk)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/sergekostenchuk/serp-keyword-harvester

---


# SERP Keyword Harvester

This skill prepares raw search-demand evidence for the pre-design pipeline. It does not decide final site architecture or source/proxy policy; `serp-source-configurator` owns setup gates and this skill hands structured inputs to `semantic-core-builder`.

## Operating Modes

- `plan`: define seed keywords, locales, sources, approvals, and fallback.
- `harvest-local`: normalize user-provided keywords, exported CSVs, existing site text, or local reports.
- `harvest-external`: use approved SERP/autocomplete APIs or tools; approval required before network calls.
- `audit`: review an existing `reports/keyword-harvest.json`.

## Required Workflow

1. Read [references/keyword-harvest-contract.md](references/keyword-harvest-contract.md).
2. If OpenSERP, AKE, proxy, API keys, engine checkboxes, source settings, or paid-proxy limits are mentioned, route setup to `serp-source-configurator` first and consume its redacted `reports/serp-source-config.json` handoff.
3. If OpenSERP is already approved/configured, read [references/openserp-setup.md](references/openserp-setup.md) and use [assets/openserp-settings.example.json](assets/openserp-settings.example.json) only as a redacted contract, not as a credential store.
4. Confirm privacy and approval mode:
   - local inputs and user-provided public facts: allowed;
   - external SERP/API/crawling: explicit approval required;
   - private/authenticated sources: explicit approval plus data-handling note.
5. Collect or normalize seed keywords, market/locale, project type, and source provenance.
6. Write or update `reports/keyword-harvest.json` using [assets/keyword-harvest.schema.json](assets/keyword-harvest.schema.json) as the field contract.
7. Label every data group as `Ran`, `Skipped`, `Planned`, or `Manual`.
8. Hand off to `semantic-core-builder`; do not invent missing SERP evidence.

## Safety Rules

- Do not scrape or call external services without approval.
- Do not store API keys, cookies, private URLs, recovery codes, or `.env` values in reports.
- Treat OpenSERP as `optional-cloud` / `external-network`: no call without explicit approval, configured credentials, query scope, source config, and a data-transfer note.
- Do not decide proxy provider, paid budget, or engine selection inside this skill when it is not already explicit; use `serp-source-configurator`.
- If search APIs return 429/503 or are unavailable, mark the source `Skipped` and continue with local/user-provided inputs.

## Handoff Shape

```text
Mode:
Locale/market:
Seed keywords:
Sources used:
Sources skipped:
Source config:
Output path:
Privacy/approval note:
Next skill: semantic-core-builder
```

## Validation

When editing this skill, run:

```bash
python3 $CODEX_HOME/skills/.system/skill-creator/scripts/quick_validate.py $CODEX_HOME/skills/serp-keyword-harvester
python3 $CODEX_HOME/skills/senior-skill-architect/scripts/lint_production_skill.py $CODEX_HOME/skills/serp-keyword-harvester
```

