@seoagent-official/seoagent 1.134.0 → 1.135.0
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seoagent-official/seoagent",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.135.0",
|
|
4
4
|
"description": "The persistent AI SEO agent for Claude Code. Audits, keyword strategy, briefs, articles, real product screenshots from your repo, and the autopilot loop (cloud detects → CLI executes → ack closes) — other SEO tools write the prompt, SEOAgent runs it.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -201,7 +201,7 @@ Recommendation: "Add ~{target - current} words of substantive content. Target 80
|
|
|
201
201
|
### `keyword_not_in_first_100_words`
|
|
202
202
|
Check: primary keyword (from brief if available, inferred from title otherwise) appears in body before word 100.
|
|
203
203
|
Severity: `medium`
|
|
204
|
-
Recommendation: "Move the primary keyword `{keyword}` into the first paragraph for AI-extractability (on a designed page:
|
|
204
|
+
Recommendation: "Move the primary keyword `{keyword}` into the first paragraph for AI-extractability (on a designed page: suggest a hero copy rewrite to the owner; do not edit it)."
|
|
205
205
|
|
|
206
206
|
### `images_without_alt`
|
|
207
207
|
Check: `evidence.md` — each page section's **images** line (`N total, M missing alt` + the first offending srcs) and the rollup's *Images missing alt* total. The crawl extracts `<img>` tags with no `alt` attribute from the server HTML (`alt=""` on decorative images counts as present). Do NOT conclude alt coverage from WebFetch or repo source — report the counts + srcs the evidence lists, per page.
|
|
@@ -260,7 +260,7 @@ Recommendation: "Robots.txt blocks AI crawlers ({list}). If you want to be cited
|
|
|
260
260
|
### `no_extractable_answer_block`
|
|
261
261
|
Check: page has primary keyword in title/H1 but no paragraph in the first 200 words that directly answers the keyword's intent.
|
|
262
262
|
Severity: `medium`
|
|
263
|
-
Recommendation: "Lead with a definition or direct answer in the first paragraph (40-80 words) so AI search engines can extract it. On a designed page (the homepage, a landing, product or pricing page),
|
|
263
|
+
Recommendation: "Lead with a definition or direct answer in the first paragraph (40-80 words) so AI search engines can extract it. On a designed page (the homepage, a landing, product or pricing page), suggest the answer as a rewrite of the existing hero sub-heading or the first section's copy, for the owner to apply; never insert a new paragraph or block between sections."
|
|
264
264
|
|
|
265
265
|
### `llms_txt_missing`
|
|
266
266
|
Check: `WebFetch https://{domain}/llms.txt`. It fails the check if it 404s, or returns something that isn't markdown starting with an `#` H1 (a soft-404 / SPA shell).
|
|
@@ -74,7 +74,7 @@ Start by reading `.seoagent/inbox/README.md` (or `seoagent inbox`) to see the li
|
|
|
74
74
|
- `rank_expansion` → the page already wins, or is in striking distance, for the queries in the body. Deepen **that** page against **those** queries; never spawn a new one.
|
|
75
75
|
- `low_ctr` → **read the body, not just the reason.** Past roughly position 20 nobody sees the snippet, so the body says "Lift ranking" and a title rewrite is wasted work: fill the gaps a searcher on the page's real queries expects, and add the vocabulary those queries use if the page answers them in different words. Only when the body says "Improve CTR" (shallow position) is rewriting the title + meta description the fix — and write it against the **"Queries this page already ranks for"** section, which both depths now carry, not a keyword guessed from the slug. When one of those queries is the site's own brand name the page is competing with its own homepage, so check the new snippet does not restate what another of this site's results already says.
|
|
76
76
|
- `stale_thin` → expand and update.
|
|
77
|
-
- **The reasons above are article advice.** When the page is a designed page (the homepage, or a landing, product, feature, pricing or `/for/` page built from its own sections and components), the file's step 2 says so and replaces them:
|
|
77
|
+
- **The reasons above are article advice.** When the page is a designed page (the homepage, or a landing, product, feature, pricing or `/for/` page built from its own sections and components), the file's step 2 says so and replaces them: change only what a visitor does not read (title, meta description, schema, alt text, links), never edit its copy or add a section, band or block, and decline the copy changes with `--failed --reason "Suggestion: <the copy> (goes <where>)"` instead of making them. See `references/landing-pages.md` § Editing an existing designed page.
|
|
78
78
|
- Follow the rewrite protocol (`references/rewrite-protocol.md`). Reversible edit — follow the file's go-ahead step: **Standing approval** → apply, commit, ack; otherwise show the user the diff (confirm once per session, then proceed; interactive sessions can review the revised draft via `references/draft-review.md`).
|
|
79
79
|
- Acknowledge: `seoagent ack <action_id>` (or `--failed --reason "kept as-is; ..."`).
|
|
80
80
|
|
|
@@ -165,11 +165,12 @@ images:
|
|
|
165
165
|
|
|
166
166
|
## Editing an existing designed page
|
|
167
167
|
|
|
168
|
-
The homepage and every product, feature, pricing and `/for/*` page are designed: each section is a component with its own layout.
|
|
168
|
+
The homepage and every product, feature, pricing and `/for/*` page are designed: each section is a component with its own layout. SEOAgent changes only what a visitor does not read on one; every wording change and every new section goes to the owner as a suggestion (Alec, 2026-11-04).
|
|
169
169
|
|
|
170
|
-
- **
|
|
171
|
-
- **
|
|
172
|
-
- **
|
|
170
|
+
- **Change what visitors don't read.** The title tag, the meta description, the canonical, structured data, image alt text, and links: on words already on the page, or to it from other pages. Use the page's own components, classes and styles.
|
|
171
|
+
- **Suggest every copy change.** The H1, a sub-heading, the hero and intro copy, a section's copy, new FAQ questions or list entries: give the owner the exact copy and where it goes, and do not edit it.
|
|
172
|
+
- **Never add a standalone section, band or block**: no "What is X?" band between the hero and the next section, no new FAQ block, no answer paragraph dropped between sections, no "Related pages" strip. The article rules (definition block, answer-first opening, FAQ section) are for articles; on a designed page the same intent becomes a suggested rewrite of the hero sub-heading or of a section that is already there.
|
|
173
|
+
- **How a suggestion reaches the owner.** Write the copy and where it goes ("replace the sub-heading under the hero with: …"). For an inbox action or an unattended run, decline the action with a reason that starts `Suggestion:` (or, when you also made an unseen change, end the done result with it). The hosted runner lists it under "Suggestions for you" in its pull request, or, when the run opens no pull request, in a Slack message and a card in the site feed. In an interactive session, show it to the user and build it only if they ask.
|
|
173
174
|
- **Don't change the layout to make room.** Reordering sections, new components and new visual styles are design work for the owner.
|
|
174
175
|
- **Section Ordering** and **Word Count Target** above describe a new page. An existing page with fewer sections is not missing any, and short copy on a designed page is often intentional.
|
|
175
176
|
|
|
@@ -127,7 +127,7 @@ Run `seoagent sync`.
|
|
|
127
127
|
### Rewriting a Landing Page
|
|
128
128
|
|
|
129
129
|
Same protocol but:
|
|
130
|
-
- **Fit the design, or suggest.** Follow `references/landing-pages.md` § Editing an existing designed page:
|
|
130
|
+
- **Fit the design, or suggest.** Follow `references/landing-pages.md` § Editing an existing designed page: the plan changes only what a visitor does not read (title, meta description, schema, alt text, links) and adds no new H2, section, band or block. Every copy change and new section goes in the diagnosis under `### Suggestions for the owner` (the proposed copy and where it would go) and is not built. The article patterns (definition block, answer-first opening, FAQ section) do not apply.
|
|
131
131
|
- Track conversion impact — note in changelog if there's a CRO concern
|
|
132
132
|
- Don't ship the rewrite during a campaign in flight — coordinate with the user
|
|
133
133
|
- Update OG card and Twitter card alt text (often forgotten)
|
|
@@ -55,7 +55,7 @@ When revising a page that already exists — Phase 4b rewrites, `cli_content_upd
|
|
|
55
55
|
- **Make the minimum effective edit.** Fix slop patterns, errors, and unclear passages. Leave strong human sentences alone. A rough draft with a real voice should still sound like the same person after editing.
|
|
56
56
|
- **Keep the user's meaning.** Don't invent claims, examples, stats, or opinions. If something is unclear, ask.
|
|
57
57
|
- **Keep useful edge.** Strong opinions, blunt language, humor, and honest admissions stay if they belong to the writer. Don't replace them with safer wording.
|
|
58
|
-
- **Keep structure unless it hurts the piece.** If you reorganize, say why in the change summary. A designed page (the homepage, a landing, product or pricing page) keeps its sections exactly:
|
|
58
|
+
- **Keep structure unless it hurts the piece.** If you reorganize, say why in the change summary. A designed page (the homepage, a landing, product or pricing page) keeps its sections and its copy exactly: wording changes and new sections are suggestions for the owner, per `references/landing-pages.md` § Editing an existing designed page.
|
|
59
59
|
- Empty qualifiers like "I think", "maybe", "to be honest" stay when they express real uncertainty or the writer's spoken rhythm.
|
|
60
60
|
|
|
61
61
|
## Self-check before showing a draft
|