seostudio 0.0.0-stage → 0.1.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 Digital Front LLP
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
@@ -1,3 +1,172 @@
1
- # Temporary Holding Version
1
+ # seostudio
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ A free SEO site audit from your terminal, from [SEOStudio](https://seostudio.com). No account needed.
4
+
5
+ It crawls your site from your computer and checks it: broken links and redirects, titles and
6
+ descriptions, headings, thin pages, indexability, canonical tags, structured data, images, speed
7
+ signals and more. You get a short summary in the terminal and a full report as HTML, JSON or CSV.
8
+
9
+ With an SEOStudio account it can also send its crawls to your project, give your AI agent one MCP
10
+ server for the audit and your SEOStudio tools, and run your scheduled crawls on your own server.
11
+
12
+ **Privacy:** the audit runs on your computer. It sends nothing anywhere except the requests to the
13
+ site it crawls. The CLI collects no usage data.
14
+
15
+ ## Install
16
+
17
+ You need Node.js 22.19 or later.
18
+
19
+ ```bash
20
+ npx seostudio audit example.com
21
+ ```
22
+
23
+ Or install it once:
24
+
25
+ ```bash
26
+ npm install --global seostudio
27
+ ```
28
+
29
+ ## 1. `seostudio audit`: audit a site
30
+
31
+ ```bash
32
+ seostudio audit example.com
33
+ seostudio audit https://example.com/blog/ --max-pages 200 --format csv --out blog.csv
34
+ ```
35
+
36
+ | Option | What it does |
37
+ | --- | --- |
38
+ | `--max-pages N` | The most pages to read (default 500, up to 10,000). |
39
+ | `--format html\|json\|csv` | The report format (default `html`). JSON follows a versioned schema (`schemaVersion: 1`). |
40
+ | `--out file` | Where to write the report (default `seostudio-audit-<site>.<format>`). |
41
+ | `--allow-private` | Let the crawl read the site you named on a private or local address, such as a staging site on your own network. Every other host stays refused. Off by default. |
42
+
43
+ The summary lists the issues by severity, the issues that touch the most pages, and **thin page
44
+ candidates**: pages with little text. The crawl alone cannot tell whether a thin page gets search
45
+ traffic, so check Search Console before you merge or remove one. (SEOStudio does this check for you
46
+ with your Search Console data.)
47
+
48
+ The terminal audit skips the TLS certificate check (SEOStudio's servers run it), so its health score
49
+ can differ by about a point from the one in your dashboard.
50
+
51
+ The crawler is polite: it obeys robots.txt, waits between requests, and never reads private,
52
+ loopback or cloud metadata addresses, and checks every redirect again (unless you pass
53
+ `--allow-private` for your own staging site).
54
+
55
+ ### Save a crawl to your project
56
+
57
+ With an SEOStudio API key, `--save` crawls from your computer and stores the result in your
58
+ project, exactly like a crawl from the SEOStudio desktop app. The project's site audit, history and
59
+ recommendations update as after any other crawl.
60
+
61
+ ```bash
62
+ seostudio login
63
+ seostudio audit example.com --save
64
+ seostudio audit example.com --save --project <project id>
65
+ ```
66
+
67
+ `--project` is needed only when more than one of your projects is the same site. A site behind a
68
+ login (saved sign-in headers or basic auth) is crawled by SEOStudio's servers or the desktop app,
69
+ not by the CLI.
70
+
71
+ ## 2. `seostudio login`: save your API key
72
+
73
+ Create an API key with **Allow MCP access** at
74
+ [seostudio.com/settings/developers](https://seostudio.com/settings/developers), then:
75
+
76
+ ```bash
77
+ seostudio login
78
+ ```
79
+
80
+ The key is read from a hidden prompt (or from stdin), checked with SEOStudio, and saved in your
81
+ user's config folder, readable by you only. `seostudio logout` removes it. You can also set the
82
+ `SEOSTUDIO_API_KEY` environment variable instead; it is used before the saved key. The CLI never
83
+ prints or logs the key.
84
+
85
+ ## 3. `seostudio mcp`: one MCP server for your AI agent
86
+
87
+ `seostudio mcp` runs a local MCP server over stdio. It always has the audit tools, free and with no
88
+ account:
89
+
90
+ | Tool | What it does |
91
+ | --- | --- |
92
+ | `local_audit_run` | Crawl a site from your computer and audit it. |
93
+ | `local_audit_get` | Read a report: the summary, or the whole report as JSON, CSV or HTML (or write it to a file). |
94
+ | `local_audit_issues_list` | List a report's issues by severity, check or page. |
95
+
96
+ With an API key (saved with `seostudio login` or in `SEOSTUDIO_API_KEY`), it also serves every
97
+ SEOStudio tool of your account, so one connector covers both.
98
+
99
+ **Claude Code:**
100
+
101
+ ```bash
102
+ claude mcp add --scope user seostudio -- npx -y seostudio mcp
103
+ ```
104
+
105
+ **Claude Desktop** (`claude_desktop_config.json`):
106
+
107
+ ```json
108
+ {
109
+ "mcpServers": {
110
+ "seostudio": { "command": "npx", "args": ["-y", "seostudio", "mcp"] }
111
+ }
112
+ }
113
+ ```
114
+
115
+ **Codex:**
116
+
117
+ ```bash
118
+ codex mcp add seostudio -- npx -y seostudio mcp
119
+ ```
120
+
121
+ **Cursor** (`~/.cursor/mcp.json`):
122
+
123
+ ```json
124
+ {
125
+ "mcpServers": {
126
+ "seostudio": { "command": "npx", "args": ["-y", "seostudio", "mcp"] }
127
+ }
128
+ }
129
+ ```
130
+
131
+ To pass the key through the app instead of `seostudio login`, add
132
+ `"env": { "SEOSTUDIO_API_KEY": "<your key>" }` next to `"args"`. Keep the key in your app's own
133
+ config, never in a repository.
134
+
135
+ ## 4. `seostudio agent`: crawl from your own server
136
+
137
+ SEOStudio crawls your sites from its own servers every day. You can run those scheduled crawls on
138
+ your own server instead, for example when your site only lets your own IP addresses in:
139
+
140
+ 1. In SEOStudio, open the site audit's settings and switch on **Run on your own server** (under
141
+ Scheduled crawls). Your agent can do it too: `seo_site_audit_update` with
142
+ `settings.runner: "own_server"`.
143
+ 2. Run the agent on your server with an API key and the projects it crawls:
144
+
145
+ ```bash
146
+ SEOSTUDIO_API_KEY=<your key> npx seostudio agent --project <project id>
147
+ ```
148
+
149
+ Every 15 minutes (`--interval` to change it) the agent asks SEOStudio which of the named projects
150
+ are due and crawls them from your server. `--once` runs one pass and stops, for a cron job. The
151
+ agent crawls only the projects you name with `--project` (repeat it) or `SEOSTUDIO_PROJECTS`
152
+ (comma separated).
153
+
154
+ ### Docker
155
+
156
+ The `Dockerfile` and `compose.example.yaml` in this folder run the agent in a small container as a
157
+ non-root user. Put the key and the projects in a `.env` file next to the compose file:
158
+
159
+ ```bash
160
+ SEOSTUDIO_API_KEY=<your key>
161
+ SEOSTUDIO_PROJECTS=<project id>
162
+ ```
163
+
164
+ Then:
165
+
166
+ ```bash
167
+ docker compose -f compose.example.yaml up -d --build
168
+ ```
169
+
170
+ ## License
171
+
172
+ MIT