@se-studio/skills 1.2.3 → 1.3.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/CHANGELOG.md
CHANGED
package/package.json
CHANGED
|
@@ -479,10 +479,16 @@ cms-edit types component
|
|
|
479
479
|
cms-edit types collection
|
|
480
480
|
|
|
481
481
|
# List entries with filters
|
|
482
|
+
cms-edit list --type article --sort date -n 10 # recent articles by publication date
|
|
482
483
|
cms-edit list --type article --has-download # articles with a download asset
|
|
483
484
|
cms-edit list --type article --slug my-article # article with a specific slug
|
|
484
485
|
cms-edit list --type article --has-field tags # articles where tags field is non-empty
|
|
485
486
|
|
|
487
|
+
# Find draft articles, then peek/open (both support drafts via CMA)
|
|
488
|
+
cms-edit sitemap --include article --status draft
|
|
489
|
+
cms-edit peek --article-slug resources/blog/my-post
|
|
490
|
+
# Only list --published / resolve --published are published-only
|
|
491
|
+
|
|
486
492
|
# Resolve any entry or asset by ID (no open session required)
|
|
487
493
|
cms-edit resolve --id 4xKj2abcDefGhijK # entry: shows type, title, slug, status
|
|
488
494
|
cms-edit resolve --id 7pQrStuvWxyzAbc # asset: shows title, fileName, URL
|
|
@@ -702,6 +708,7 @@ cms-edit sitemap # All pages, sorted by slug
|
|
|
702
708
|
cms-edit sitemap --prefix /blog # Filter by slug prefix
|
|
703
709
|
cms-edit sitemap --status draft # Draft pages only
|
|
704
710
|
cms-edit sitemap --sort updated # Most recently updated first
|
|
711
|
+
cms-edit sitemap --include article --sort date # Articles by publication date
|
|
705
712
|
cms-edit sitemap --tree # Tree rendering
|
|
706
713
|
cms-edit sitemap --include page,article # Include articles too
|
|
707
714
|
```
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: screaming-frog-audit
|
|
3
|
+
description: "Crawl a marketing site with Screaming Frog, run native compare mode between crawls, and generate prioritized audit/compare reports via @se-studio/site-check and seo/screaming-frog.json."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Screaming Frog crawl, compare, and audit
|
|
7
|
+
|
|
8
|
+
Use when the user wants a Screaming Frog crawl, before/after deployment comparison, or SEO issue audit (404s, canonicals, structured data, content/metadata regressions).
|
|
9
|
+
|
|
10
|
+
**Requires:** Screaming Frog SEO Spider (licensed), **database storage mode** (default with `--save-crawl`).
|
|
11
|
+
|
|
12
|
+
**Config:** each app's `seo/screaming-frog.json` — no site-specific presets in core product.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Deployment workflow (content push → code release)
|
|
17
|
+
|
|
18
|
+
Typical process: crawl after CMS/content is on preview, then crawl again after code ships, and confirm no significant content/metadata regressions.
|
|
19
|
+
|
|
20
|
+
### 1. Baseline after content push
|
|
21
|
+
|
|
22
|
+
From the app directory:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
pnpm seo:screaming-frog:baseline
|
|
26
|
+
# equivalent:
|
|
27
|
+
site-check-screaming-frog crawl --tag content
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
This crawls with the manifest profile, saves to SF's database, and records the database ID as baseline `content` in `docs/seo/sf-crawl-state.json`.
|
|
31
|
+
|
|
32
|
+
### 2. Crawl after code release
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
pnpm seo:screaming-frog:crawl
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Records the new crawl as `lastCrawl` in `sf-crawl-state.json`.
|
|
39
|
+
|
|
40
|
+
### 3. Native compare (before vs after)
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
pnpm seo:screaming-frog:compare
|
|
44
|
+
# equivalent:
|
|
45
|
+
site-check-screaming-frog compare --baseline content
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Uses Screaming Frog **`--crawl-comparison <current-db-id> <previous-db-id>`** (native Compare mode), exports Change Detection CSVs, and writes `docs/seo/<site>-screaming-frog-compare.md`.
|
|
49
|
+
|
|
50
|
+
Exit code 1 when title/meta/H1/word-count regressions are detected.
|
|
51
|
+
|
|
52
|
+
### 4. Optional full issue audit
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
pnpm seo:screaming-frog ~/spider/exports/<timestamp>
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Prioritized P0–P3 report from a single crawl export.
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Other commands
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
site-check-screaming-frog profiles # show crawl profiles from manifest
|
|
66
|
+
site-check-screaming-frog list-crawls # SF database IDs for this siteHost
|
|
67
|
+
site-check-screaming-frog compare --latest # two most recent crawls (same host)
|
|
68
|
+
site-check-screaming-frog compare <current-id> <previous-id> # explicit IDs
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## What native compare checks
|
|
74
|
+
|
|
75
|
+
SF Change Detection exports (current vs previous on **matched URLs**):
|
|
76
|
+
|
|
77
|
+
- Page titles, meta descriptions, H1
|
|
78
|
+
- Word count (flags ≥50 words or ≥10% change)
|
|
79
|
+
- Indexability status
|
|
80
|
+
- Structured data type changes (via dedicated export tab)
|
|
81
|
+
|
|
82
|
+
Does **not** replace a full audit for new 404s — run `audit` on the post-release export for issue triage.
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Prerequisites
|
|
87
|
+
|
|
88
|
+
| Item | Notes |
|
|
89
|
+
|------|-------|
|
|
90
|
+
| SF GUI | Quit before CLI crawl/compare (shared DB lock) |
|
|
91
|
+
| Vercel preview | Bypass header in `.seospiderconfig`; `PREVIEW_SITE_URL` in `.env.local` |
|
|
92
|
+
| Same profile | Compare only meaningful when both crawls use the same URL/profile |
|
|
93
|
+
| Database storage | `--save-crawl` stores crawls; compare needs two DB IDs |
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## Troubleshooting
|
|
98
|
+
|
|
99
|
+
| Problem | Fix |
|
|
100
|
+
|---------|-----|
|
|
101
|
+
| 0 matched URLs in compare | Different URLs/host between crawls — use same profile |
|
|
102
|
+
| No baseline | Run `crawl --tag content` first |
|
|
103
|
+
| GUI lock / FATAL | Quit Screaming Frog app |
|
|
104
|
+
| Wrong crawls picked | `list-crawls` then pass explicit database IDs |
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Screaming Frog site config
|
|
2
|
+
|
|
3
|
+
Each project owns **`seo/screaming-frog.json`** at the app root (or pass `--config` explicitly). The core product package has no built-in site presets.
|
|
4
|
+
|
|
5
|
+
## Required fields
|
|
6
|
+
|
|
7
|
+
| Field | Purpose |
|
|
8
|
+
|-------|---------|
|
|
9
|
+
| `site` | Short site key (for logging) |
|
|
10
|
+
| `siteLabel` | Display name in audit report |
|
|
11
|
+
| `siteHost` | Host substring for filtering redirect samples |
|
|
12
|
+
| `defaultSiteUrl` | Fallback URL when crawl overview is missing |
|
|
13
|
+
| `outputMdName` | Audit markdown filename (written under `docs/seo/`) |
|
|
14
|
+
| `profiles` | Named crawl targets with `configFile` paths |
|
|
15
|
+
|
|
16
|
+
## Optional fields
|
|
17
|
+
|
|
18
|
+
| Field | Purpose |
|
|
19
|
+
|-------|---------|
|
|
20
|
+
| `defaultProfile` | Profile used when `--profile` is omitted |
|
|
21
|
+
| `productionAuditDoc` | Cross-link in report to live HTML audit doc |
|
|
22
|
+
| `issueRuleOverrides` | Per-site P0–P3 rule tweaks (merged over base rules in `@se-studio/site-check`) |
|
|
23
|
+
|
|
24
|
+
## Example manifest
|
|
25
|
+
|
|
26
|
+
```json
|
|
27
|
+
{
|
|
28
|
+
"site": "brightline",
|
|
29
|
+
"siteLabel": "Brightline",
|
|
30
|
+
"siteHost": "hellobrightline.com",
|
|
31
|
+
"defaultSiteUrl": "https://www.hellobrightline.com/",
|
|
32
|
+
"outputMdName": "brightline-screaming-frog-audit.md",
|
|
33
|
+
"defaultProfile": "preview",
|
|
34
|
+
"issueRuleOverrides": [
|
|
35
|
+
{
|
|
36
|
+
"match": "directives_noindex",
|
|
37
|
+
"tier": "p2",
|
|
38
|
+
"category": "indexing",
|
|
39
|
+
"note": "Expected on Vercel preview."
|
|
40
|
+
}
|
|
41
|
+
],
|
|
42
|
+
"profiles": {
|
|
43
|
+
"production": {
|
|
44
|
+
"label": "Production",
|
|
45
|
+
"url": "https://www.hellobrightline.com/",
|
|
46
|
+
"configFile": "~/spider/bl production.seospiderconfig"
|
|
47
|
+
},
|
|
48
|
+
"preview": {
|
|
49
|
+
"label": "Vercel preview",
|
|
50
|
+
"urlEnv": "PREVIEW_SITE_URL",
|
|
51
|
+
"configFile": "~/spider/bl dev.seospiderconfig"
|
|
52
|
+
},
|
|
53
|
+
"localhost": {
|
|
54
|
+
"label": "Local dev",
|
|
55
|
+
"url": "http://localhost:3010/",
|
|
56
|
+
"configFile": "~/spider/bl localhost.seospiderconfig"
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
`.seospiderconfig` files live outside the repo (typically `~/spider/`). Preview configs should embed the Vercel bypass header.
|