n-seo 0.1.0 → 0.1.1

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.
Files changed (37) hide show
  1. package/README.md +28 -5
  2. package/docs/RELEASING.md +21 -0
  3. package/ingest/__pycache__/analyze_metadata.cpython-312.pyc +0 -0
  4. package/ingest/__pycache__/google_auth.cpython-312.pyc +0 -0
  5. package/ingest/__pycache__/http_util.cpython-312.pyc +0 -0
  6. package/ingest/__pycache__/seo_config.cpython-312.pyc +0 -0
  7. package/ops/__pycache__/daily.cpython-312.pyc +0 -0
  8. package/ops/__pycache__/daily_diff.cpython-312.pyc +0 -0
  9. package/ops/__pycache__/demo_data.cpython-312.pyc +0 -0
  10. package/ops/__pycache__/export_static.cpython-312.pyc +0 -0
  11. package/ops/__pycache__/llm.cpython-312.pyc +0 -0
  12. package/ops/__pycache__/publish.cpython-312.pyc +0 -0
  13. package/package.json +2 -2
  14. package/probes/__pycache__/site_probe.cpython-312.pyc +0 -0
  15. package/ingest/__pycache__/analyze_ga4.cpython-313.pyc +0 -0
  16. package/ingest/__pycache__/analyze_gsc.cpython-313.pyc +0 -0
  17. package/ingest/__pycache__/analyze_metadata.cpython-313.pyc +0 -0
  18. package/ingest/__pycache__/analyze_trends.cpython-313.pyc +0 -0
  19. package/ingest/__pycache__/google_auth.cpython-313.pyc +0 -0
  20. package/ingest/__pycache__/http_util.cpython-313.pyc +0 -0
  21. package/ingest/__pycache__/pull_ga4.cpython-313.pyc +0 -0
  22. package/ingest/__pycache__/pull_gsc.cpython-313.pyc +0 -0
  23. package/ingest/__pycache__/pull_index_status.cpython-313.pyc +0 -0
  24. package/ingest/__pycache__/pull_timeseries.cpython-313.pyc +0 -0
  25. package/ingest/__pycache__/seo_config.cpython-313.pyc +0 -0
  26. package/ops/__pycache__/daily.cpython-313.pyc +0 -0
  27. package/ops/__pycache__/daily_diff.cpython-313.pyc +0 -0
  28. package/ops/__pycache__/demo_data.cpython-313.pyc +0 -0
  29. package/ops/__pycache__/doctor.cpython-313.pyc +0 -0
  30. package/ops/__pycache__/export_static.cpython-313.pyc +0 -0
  31. package/ops/__pycache__/hn_digest.cpython-313.pyc +0 -0
  32. package/ops/__pycache__/indexnow.cpython-313.pyc +0 -0
  33. package/ops/__pycache__/llm.cpython-313.pyc +0 -0
  34. package/ops/__pycache__/opportunity_scan.cpython-313.pyc +0 -0
  35. package/ops/__pycache__/publish.cpython-313.pyc +0 -0
  36. package/ops/__pycache__/reddit_digest.cpython-313.pyc +0 -0
  37. package/probes/__pycache__/site_probe.cpython-313.pyc +0 -0
package/README.md CHANGED
@@ -1,6 +1,10 @@
1
1
  # n-seo
2
2
 
3
- **An SEO, self-hosted.** Website: https://en-dash-consulting.github.io/n-seo/ · From the makers of [n-dx](https://n-dx.dev).
3
+ **An SEO, self-hosted.** Website: https://n-seo.dev/ · From the makers of [n-dx](https://n-dx.dev).
4
+
5
+ [![npm](https://img.shields.io/npm/v/n-seo)](https://www.npmjs.com/package/n-seo)
6
+ [![CI](https://github.com/en-dash-consulting/n-seo/actions/workflows/ci.yml/badge.svg)](https://github.com/en-dash-consulting/n-seo/actions/workflows/ci.yml)
7
+ [![license](https://img.shields.io/npm/l/n-seo)](LICENSE)
4
8
 
5
9
  A local-first control plane for growing organic traffic to your own sites —
6
10
  classic search (SEO), answer engines (AEO) and AI assistants that cite sources
@@ -24,16 +28,35 @@ It runs on hardware you control, on a schedule, and shows you the result on a da
24
28
 
25
29
  ## Quickstart (5 minutes, no Google setup)
26
30
 
31
+ ```sh
32
+ npm install -g n-seo
33
+ n-seo init my-sites && cd my-sites
34
+ n-seo demo # a synthetic dataset for example.com
35
+ n-seo start # dashboard → http://localhost:4600
36
+ ```
37
+
38
+ Open http://localhost:4600. Every page is populated from the demo data, so you
39
+ can see what the tool does before you connect anything. `n-seo demo --clean`
40
+ removes it.
41
+
42
+ Prefer not to install globally? `npx n-seo init my-sites` works the same way.
43
+
44
+ <details>
45
+ <summary>Or run it from a clone, if you want to change the engine itself</summary>
46
+
27
47
  ```sh
28
48
  git clone https://github.com/en-dash-consulting/n-seo.git
29
49
  cd n-seo
30
50
  npm install
31
- npm run demo # writes a synthetic dataset for example.com under data/
32
- npm start # dashboard → http://localhost:4600
51
+ npm run demo
52
+ npm start
33
53
  ```
34
54
 
35
- Open http://localhost:4600. Every page is populated from the demo data, so you
36
- can see what the tool does before you connect anything.
55
+ In this mode the config, queue and data live inside the checkout. That is the
56
+ right shape for hacking on n-seo; for running it, the instance layout above
57
+ keeps your files separate from the engine so upgrades are a reinstall rather
58
+ than a merge. See [docs/INSTANCE.md](docs/INSTANCE.md).
59
+ </details>
37
60
 
38
61
  ## Connect your real sites
39
62
 
package/docs/RELEASING.md CHANGED
@@ -139,6 +139,27 @@ workflow also deliberately omits `registry-url` from `setup-node`, because it
139
139
  writes an `.npmrc` auth line interpolating `NODE_AUTH_TOKEN`, and an empty
140
140
  value there produces the same misleading 404.
141
141
 
142
+ ## Approving a staged release
143
+
144
+ The trusted publisher is configured to allow `npm stage publish` only, so the
145
+ workflow submits a version and stops. It is not on the registry until a human
146
+ approves it with 2FA. That is deliberate: a compromised runner or a stray tag
147
+ cannot put code on npm that other people's machines will then execute.
148
+
149
+ After the release run goes green:
150
+
151
+ ```sh
152
+ npm stage list n-seo # the stage id
153
+ npm stage view <stage-id> # inspect exactly what CI built
154
+ npm stage approve <stage-id> # 2FA; now it is live
155
+ ```
156
+
157
+ `npm stage reject <stage-id>` throws it away. The package's Staged Packages
158
+ tab on npmjs.com does the same thing in a browser, which is easier if your
159
+ second factor is a passkey rather than an authenticator app.
160
+
161
+ The workflow's run summary prints these commands with the version filled in.
162
+
142
163
  ## Verify what was published
143
164
 
144
165
  Do not trust the workflow's own output. Install from the registry, into an
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "n-seo",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Local-first SEO / AEO / GEO control plane: pulls Search Console + GA4, probes your sites, and turns the data into a ranked action queue you can act on without an agency.",
5
5
  "license": "MIT",
6
6
  "author": "En Dash Consulting (https://endash.us)",
7
- "homepage": "https://en-dash-consulting.github.io/n-seo/",
7
+ "homepage": "https://n-seo.dev/",
8
8
  "repository": {
9
9
  "type": "git",
10
10
  "url": "git+https://github.com/en-dash-consulting/n-seo.git"
Binary file