serpkin 0.2.8 → 0.2.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -39,7 +39,7 @@ Requires Node 22 or newer. No dependencies. Builder and Pro start with a 7-day f
|
|
|
39
39
|
- **Cursor**: merges into `.cursor/mcp.json` and writes the project rule `.cursor/rules/serpkin.mdc` with the SEO loop.
|
|
40
40
|
- **Codex**: appends `[mcp_servers.serpkin]` to `~/.codex/config.toml` once and adds a short "Serpkin SEO" section to the project's `AGENTS.md` (it asks first, and creates the file if it's missing).
|
|
41
41
|
|
|
42
|
-
All three configs run a small local MCP bridge, `npx -y serpkin@0.2.
|
|
42
|
+
All three configs run a small local MCP bridge, `npx -y serpkin@0.2.9 mcp`, which reads the key saved at sign-in and forwards requests to `https://serpkin.com/api/mcp` (a self-hosted server adds `--server <origin>` to the args). The configs hold no key and no environment variable, so there is nothing to export.
|
|
43
43
|
|
|
44
44
|
The rule and the `AGENTS.md` section sit between `<!-- serpkin:start -->` and `<!-- serpkin:end -->`. Re-running init refreshes only that block and keeps everything else.
|
|
45
45
|
4. **Registers the site**, which queues its initial audit on the server, and uploads a route map (URL path → source file), so missions can name the files to change.
|
|
@@ -61,7 +61,7 @@ Inside a session you can run `/plugin marketplace add apwn/serpkin`, then `/plug
|
|
|
61
61
|
|
|
62
62
|
- the **`serpkin-seo` skill**, which runs the loop: next mission → implement → run checks → check the preview → submit → verify the preview → verify production after you deploy. It treats page text and search data as untrusted and never deploys.
|
|
63
63
|
- **commands**: `/serpkin:next` gets the next mission and implements it. `/serpkin:ship <preview-url>` submits it, checks the preview and verifies. `/serpkin:check <preview-url>` runs `npx serpkin check`. `/serpkin:status` shows the site status.
|
|
64
|
-
- the **Serpkin MCP server**, run as the same stdio bridge (`npx -y serpkin@0.2.
|
|
64
|
+
- the **Serpkin MCP server**, run as the same stdio bridge (`npx -y serpkin@0.2.9 mcp`). It uses the key saved at sign-in, so there is nothing to export. `SERPKIN_API_KEY` is an optional override, and `SERPKIN_SERVER` picks a self-hosted or local server (default `https://serpkin.com`).
|
|
65
65
|
|
|
66
66
|
- **hooks** (quiet by design, only in repositories with `.serpkin.json`):
|
|
67
67
|
- **Session start**: one line with the next mission and "run /serpkin:next". It is fetched with a 2.5-second timeout and cached for 6 hours per site (failures for 30 minutes), and it says nothing when you are offline, signed out or the project isn't linked.
|
|
@@ -77,7 +77,7 @@ Clients without plugins get the same loop as MCP prompts: `next_mission`, `ship_
|
|
|
77
77
|
|
|
78
78
|
### Where the key goes
|
|
79
79
|
|
|
80
|
-
The key is **never written into your repository.** It is stored in `~/.config/serpkin/credentials.json` (mode 600, keyed by server). Agent configs run `npx -y serpkin@0.2.
|
|
80
|
+
The key is **never written into your repository.** It is stored in `~/.config/serpkin/credentials.json` (mode 600, keyed by server). Agent configs run `npx -y serpkin@0.2.9 mcp`, which reads it from there, so they hold no key and no environment variable, and you don't need to export anything.
|
|
81
81
|
|
|
82
82
|
`SERPKIN_API_KEY` still works and takes precedence over the saved key: use it in CI and GitHub Actions, or if you prefer it. Configs written by older versions (`${SERPKIN_API_KEY}` / `${env:SERPKIN_API_KEY}` / `bearer_token_env_var`) keep working while the variable is set. Re-running `npx serpkin` switches `.mcp.json` and `.cursor/mcp.json` to the bridge; an existing Codex table is left alone and the CLI prints the new block to replace it.
|
|
83
83
|
|
package/package.json
CHANGED
package/plugin/serpkin/.mcp.json
CHANGED
|
@@ -13,6 +13,14 @@ Serpkin ranks this site's SEO work into missions and verifies the result. Use it
|
|
|
13
13
|
- `site_id`: `site_id` in `.serpkin.json` at the repository root, or `serpkin_get_workspace`.
|
|
14
14
|
- No `.serpkin.json` and no site: ask the user to run `npx serpkin` first.
|
|
15
15
|
|
|
16
|
+
## Unlock the full audit
|
|
17
|
+
|
|
18
|
+
An unverified site gets a 6-page preview. To verify it:
|
|
19
|
+
|
|
20
|
+
- If the repo serves static files, add `serpkin-verification.txt` (contents: the token from `serpkin_register_site` or `serpkin_get_site_context`) where it opens at the site root, and deploy. Or, if you manage the domain's DNS (Cloudflare, Vercel…), add the TXT record `_serpkin.<domain>` = `serpkin-verification=<token>` once the user agrees.
|
|
21
|
+
- Call `serpkin_verify_site`. It checks right away and queues the full audit when it matches; if not, `next_steps` says what it found and what to fix.
|
|
22
|
+
- Search Console: give the user `search_console.connect_url` from `serpkin_verify_site`. They open it, approve read-only access, and the site is verified with real search data. Call `serpkin_verify_site` again to confirm.
|
|
23
|
+
|
|
16
24
|
## The loop
|
|
17
25
|
|
|
18
26
|
1. **Next mission.** Call `serpkin_next_mission`. If it returns no mission:
|
|
@@ -36,4 +36,4 @@ jobs:
|
|
|
36
36
|
# Passed through env, not interpolated into the script, so the URL can't inject shell.
|
|
37
37
|
PREVIEW_URL: ${{ github.event.deployment_status.target_url }}
|
|
38
38
|
# Pinned version and registry; update the version deliberately.
|
|
39
|
-
run: npx --yes --registry=https://registry.npmjs.org serpkin@0.2.
|
|
39
|
+
run: npx --yes --registry=https://registry.npmjs.org serpkin@0.2.9 check "$PREVIEW_URL" --site "$SERPKIN_SITE_ID"
|