@seoagent-official/seoagent 1.54.0 → 1.56.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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Baxter Inc
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -74,10 +74,26 @@ The scaffolded sync hook uses `npx -y @seoagent-official/seoagent sync --silent`
74
74
 
75
75
  Then open Claude Code in this repo and say *"audit my site."* The skill takes it from there.
76
76
 
77
- <!-- Claude Code marketplace install is wired (the mirror serves the plugin
78
- tree) but intentionally NOT documented here yet — holding promotion
79
- until the plugin-install init flow is validated end-to-end. Restore
80
- the marketplace install section once that's confirmed. -->
77
+ ### Option C Plugin marketplace (Claude Code or Codex)
78
+
79
+ Prefer to discover and install from inside your agent? SEOAgent ships a plugin marketplace. The plugin is a thin **bootstrap**: installing it adds a `seoagent-cli-setup` skill that walks the agent through the one-time npm `init` above — which lands the full skill bundle + `.seoagent/` workspace. So you still end up in the same place as Options A/B; this is just a discovery path.
80
+
81
+ **Claude Code:**
82
+
83
+ ```text
84
+ /plugin marketplace add Baxter-Inc/seoagent-npm
85
+ /plugin install seoagent-cli-bootstrap@seoagent-official
86
+ ```
87
+
88
+ **Codex** (requires a Codex version with plugin support):
89
+
90
+ ```bash
91
+ codex plugin marketplace add Baxter-Inc/seoagent-npm
92
+ # then open the plugins list and install SEOAgent:
93
+ codex /plugins
94
+ ```
95
+
96
+ Then tell the agent *"set up SEOAgent"* — it runs `init`, installing the skill to `.claude/skills/seoagent/` (Claude Code) or `.agents/skills/seoagent/` (Codex / Cursor), symlinking the other location so both agents discover it.
81
97
 
82
98
  <!-- `npx skills add Baxter-Inc/seoagent-npm` is also wired (build.ts step 6b
83
99
  emits skills/seoagent/SKILL.md at the mirror root for the Vercel `npx skills`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seoagent-official/seoagent",
3
- "version": "1.54.0",
3
+ "version": "1.56.0",
4
4
  "description": "The persistent AI SEO agent for Claude Code. Audits, keyword strategy, briefs, articles, 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": {
@@ -9,7 +9,8 @@
9
9
  "files": [
10
10
  "index.js",
11
11
  "skills",
12
- "assets"
12
+ "assets",
13
+ "LICENSE"
13
14
  ],
14
15
  "engines": {
15
16
  "node": ">=18"
@@ -29,6 +30,12 @@
29
30
  "claude-code",
30
31
  "claude-skill",
31
32
  "claude-agent",
33
+ "agent-skill",
34
+ "agent-skills",
35
+ "anthropic",
36
+ "codex",
37
+ "cursor",
38
+ "windsurf",
32
39
  "ai-agent",
33
40
  "ai-seo",
34
41
  "aeo",
@@ -494,6 +494,12 @@ Articles need a working place to live before they're worth generating. The good
494
494
 
495
495
  SEOAgent Cloud *hosting* (option C below) exists only as a convenience for users who have **no** content home and no engineering resources — it is NOT the default. Never lead with it.
496
496
 
497
+ > **Guardrail — the "DB-backed / headless blog with no repo files" trap.** Some sites have a blog *route* (`app/blog/[slug]/page.tsx`, `/posts/[slug]`, …) that renders rows from a **database or headless store** — the app's own Postgres/Supabase, an internal admin API, a headless setup — while the **repo contains no content files** for it. When you find this, an existing route + a live `/blog` does NOT mean you've found the publishing path. Do **NOT**:
498
+ > - **write directly into that production database** (e.g. an `INSERT` via an MCP/SQL tool) — that's not how the app publishes, it bypasses every safeguard, and it's usually read-only anyway; and
499
+ > - **assume SEOAgent Cloud (or a "dashboard") will publish it** — the cloud does not publish to the user's own site. Never invent a publishing mechanism you haven't verified.
500
+ >
501
+ > Instead, **the default recommendation is to make the blog repo-native: add a git-based Markdown/MDX content collection** (option A) — a `content/blog/` dir the route reads from — so publishing becomes a reviewed commit, no extra services. If the user would rather keep the DB/headless setup, **ask them how a post actually gets created** (which API endpoint or command produces a live page) and record it as option B / `other` — never guess. When a site has no working content home at all, **recommend creating a Markdown collection as the default**, ahead of adopting a CMS or the cloud.
502
+
497
503
  **Trigger this section when:**
498
504
  - Phase 1 raised a `critical` `upstream_dependency_unreachable` or `page_renders_empty` finding on a content path (e.g., `/blog`, `/docs`, `/resources`)
499
505
  - `project.md` has no `cms` and no `blog_path`, and the user wants to start publishing
@@ -507,6 +513,7 @@ Figure out the destination from the codebase first (you usually already know it
507
513
  The site renders content from files in this repo (Next.js `content/`, Astro `src/content/`, a `_posts/` dir, MDX routes, a static-site generator, etc.).
508
514
 
509
515
  - **How you publish:** **Read an existing published article first** to learn the exact location, filename convention, and frontmatter shape this site expects. Then write `.seoagent/content/{slug}.md`'s content into a new file in that same location, matching that frontmatter exactly (their field names, their date format, their tags). Inject internal links + image refs. If a route/sitemap entry is needed and missing, add it.
516
+ - **First post / just-converted blog (no existing file to copy):** if the content dir is empty — a brand-new blog, or one you're converting from a DB/headless source per the guardrail above — define a simple frontmatter convention yourself (`title`, `description`, `date`, `tags`, `slug`) and, if the route doesn't yet read from files, scaffold the loader + route to read the content dir (this is the one-time setup task in "After the user picks", tracked with `setup_status: pending` until it deploys).
510
517
  - **Ship it the way the repo ships:** open a PR (or commit to a branch) so the user's existing CI/CD deploys it. Never push straight to the default branch without asking.
511
518
  - **Best for:** any site whose content is in version control. This is the most common case and the highest-control path.
512
519