@se-studio/skills 1.3.1 → 1.3.4
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
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# @se-studio/skills
|
|
2
2
|
|
|
3
|
+
## 1.3.4
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- **cms-seo-audit:** Document sitemap+unindexed crawl, all-page `.md` requirement, and expected listing-hub noise.
|
|
8
|
+
|
|
9
|
+
## 1.3.3
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- Upstream CMS SEO tooling from pedestal-sites: JSON-LD `@context` fix, new `@se-studio/cms-seo` package, production HTML audit in site-check, and `cms-seo-audit` agent skill.
|
|
14
|
+
|
|
15
|
+
## 1.3.2
|
|
16
|
+
|
|
17
|
+
### Patch Changes
|
|
18
|
+
|
|
19
|
+
- Add `cms-seo-audit` skill documenting the full CMS SEO workflow (audit CSV, apply, bulk publish, production HTML audit). Cross-link from `screaming-frog-audit` and `contentful-cms-schema-org`.
|
|
20
|
+
|
|
3
21
|
## 1.3.1
|
|
4
22
|
|
|
5
23
|
### Patch Changes
|
package/package.json
CHANGED
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cms-seo-audit
|
|
3
|
+
description: "Run the full marketing-site CMS SEO workflow: audit CSV from Contentful, apply schema/meta fixes, bulk publish, revalidate, and production HTML audit via @se-studio/cms-seo and @se-studio/site-check."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# CMS SEO audit, apply, publish, and production verification
|
|
7
|
+
|
|
8
|
+
Use when improving SEO across a Contentful-backed SE marketing site: meta descriptions, schema.org linking, featured images, bulk publish after CMS edits, and live production HTML checks.
|
|
9
|
+
|
|
10
|
+
**Packages:** `@se-studio/cms-seo` (CMS audit/apply/publish), `@se-studio/site-check/production-audit` (production HTML audit). Screaming Frog: **screaming-frog-audit** skill.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Prerequisites
|
|
15
|
+
|
|
16
|
+
| Item | Notes |
|
|
17
|
+
|------|-------|
|
|
18
|
+
| `.env.local` | `CONTENTFUL_SPACE_ID`, `CONTENTFUL_MANAGEMENT_TOKEN`, `CONTENTFUL_ENVIRONMENT_NAME` (usually `master`) |
|
|
19
|
+
| Site config | Per-app `scripts/seo-audit.ts` with `SiteSeoConfig` (descriptions, keywords, schema IDs, path bases) |
|
|
20
|
+
| Vercel | `VERCEL_PROTECTION_BYPASS_TOKEN` or `VERCEL_AUTOMATION_BYPASS_SECRET` for preview/production fetches |
|
|
21
|
+
| Revalidate | After publish, trigger site revalidation (Vercel deploy hook or `revalidate` API) before production audit |
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Phase 1: Generate audit CSV (dry run)
|
|
26
|
+
|
|
27
|
+
From the app directory (`apps/pedestal-website` or `apps/headwater-website`):
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
pnpm cms:seo-audit
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Writes `docs/seo/<site>-seo-schema-audit.csv` with:
|
|
34
|
+
|
|
35
|
+
- Meta description length and recommended copy
|
|
36
|
+
- Current vs recommended schema links
|
|
37
|
+
- Review status (`Approved` / `Revise` / `Skip`) and flags
|
|
38
|
+
|
|
39
|
+
Review the CSV. Approve rows you want applied (or adjust `SiteSeoConfig` and re-run).
|
|
40
|
+
|
|
41
|
+
Optional flags:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
pnpm cms:seo-audit --sample-articles # hub pages + 5 articles per type only
|
|
45
|
+
pnpm cms:featured-images # featured-image backfill report only
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Phase 2: Apply CMS fixes
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
pnpm cms:seo-audit:apply
|
|
54
|
+
# or featured images only:
|
|
55
|
+
pnpm cms:featured-images:apply
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**What apply does:**
|
|
59
|
+
|
|
60
|
+
- Updates approved meta descriptions on pages, articles, tags, persons, indexes
|
|
61
|
+
- Links canonical schema entries (Organization + WebSite on templates; WebPage on pages; CollectionPage on tags/indexes; ProfilePage on persons)
|
|
62
|
+
- Creates or updates schema markup entries when templates need Org/WebSite/CollectionPage markup
|
|
63
|
+
- Backfills `featuredImage` from hero visuals or site logo when `--featured-images` is set
|
|
64
|
+
|
|
65
|
+
Always dry-run first. CMS changes are space-wide (master environment).
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Phase 3: Bulk publish (phased)
|
|
70
|
+
|
|
71
|
+
After apply, entries are drafts until published. Use the bulk publish script (per-app `scripts/bulk-action-publish.ts` or site-common wrapper) in dependency order:
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
pnpm cms:bulk-publish assets
|
|
75
|
+
pnpm cms:bulk-publish leaf
|
|
76
|
+
pnpm cms:bulk-publish composable
|
|
77
|
+
pnpm cms:bulk-publish chrome
|
|
78
|
+
pnpm cms:bulk-publish taxonomy
|
|
79
|
+
pnpm cms:bulk-publish article
|
|
80
|
+
pnpm cms:bulk-publish page
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Phases match Contentful link dependencies (assets → leaf types → components → chrome → taxonomy → articles → pages). Retry failed phases after fixing blocking entries.
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Phase 4: Revalidate preview / production
|
|
88
|
+
|
|
89
|
+
Trigger revalidation so Next.js serves fresh CMS content:
|
|
90
|
+
|
|
91
|
+
- Vercel production deploy, or
|
|
92
|
+
- Site revalidate API / deploy hook
|
|
93
|
+
|
|
94
|
+
Smoke-test with header nav: Pedestal `/about/`, Headwater `/`.
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Phase 5: Production HTML audit
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
pnpm seo:audit:production
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Uses `@se-studio/site-check/production-audit` (`runProductionSeoAudit`). Crawls **sitemap.xml + sitemap-unindexed.xml**, checks each URL for:
|
|
105
|
+
|
|
106
|
+
- Title, meta description, H1, thin content
|
|
107
|
+
- Canonical, noindex, JSON-LD validity and schema types
|
|
108
|
+
- Markdown export: every sitemap page URL must return 200 for its `.md` mirror (`/download/` and static assets excluded)
|
|
109
|
+
- `markdown-index.txt` cross-check (supplementary — URLs in sitemap but not in the index)
|
|
110
|
+
|
|
111
|
+
High `markdown_missing` on category/listing hubs is expected until those routes ship `.md` exports.
|
|
112
|
+
|
|
113
|
+
Outputs:
|
|
114
|
+
|
|
115
|
+
- `docs/seo/<site>-production-audit.csv`
|
|
116
|
+
- `docs/seo/<site>-production-audit.md` (with Rich Results spot-checks)
|
|
117
|
+
|
|
118
|
+
Exit code 1 when errors remain.
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## Phase 6: Screaming Frog (optional, code-release gate)
|
|
123
|
+
|
|
124
|
+
After content is on preview and again after code ships:
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
pnpm seo:screaming-frog:baseline # tag: content
|
|
128
|
+
pnpm seo:screaming-frog:crawl # after code release
|
|
129
|
+
pnpm seo:screaming-frog:compare
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
See **screaming-frog-audit** skill for full crawl/compare workflow.
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## SiteSeoConfig checklist
|
|
137
|
+
|
|
138
|
+
When adding a new site or major SEO pass, configure in `scripts/seo-audit.ts`:
|
|
139
|
+
|
|
140
|
+
| Field | Purpose |
|
|
141
|
+
|-------|---------|
|
|
142
|
+
| `siteKey` | Identifier for logging and logo slug fallback |
|
|
143
|
+
| `enableSearchAction` | `true` when site has `/search` (adds SearchAction to WebSite schema) |
|
|
144
|
+
| `pageDescriptions` / `pageKeywords` | Hub and static pages by slug |
|
|
145
|
+
| `indexDescriptions` / `indexKeywords` | Article type and custom type index pages |
|
|
146
|
+
| `schemaIds` | Reuse existing Organization, WebSite, WebPage, CollectionPage, ProfilePage entries |
|
|
147
|
+
| `articlesBase`, `tagsBase`, `peopleBase` | URL path prefixes for audit rows |
|
|
148
|
+
|
|
149
|
+
Import primitives from `@se-studio/cms-seo`:
|
|
150
|
+
|
|
151
|
+
```ts
|
|
152
|
+
import {
|
|
153
|
+
createCmaClient,
|
|
154
|
+
parseSeoAuditArgv,
|
|
155
|
+
runSeoAudit,
|
|
156
|
+
runFeaturedImageBackfill,
|
|
157
|
+
type SiteSeoConfig,
|
|
158
|
+
} from '@se-studio/cms-seo';
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
Production audit:
|
|
162
|
+
|
|
163
|
+
```ts
|
|
164
|
+
import {
|
|
165
|
+
runProductionSeoAudit,
|
|
166
|
+
writeProductionSeoAuditOutputs,
|
|
167
|
+
buildRichResultsSpotChecks,
|
|
168
|
+
getProductionAuditExitCode,
|
|
169
|
+
} from '@se-studio/site-check/production-audit';
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## Related skills
|
|
175
|
+
|
|
176
|
+
- **contentful-cms-schema-org** — create Mustache JSON-LD templates (manual/cms-edit path)
|
|
177
|
+
- **contentful-cms-seo-descriptions** — per-page description writing via cms-edit
|
|
178
|
+
- **screaming-frog-audit** — crawl/compare regression checks after code release
|
|
@@ -72,4 +72,4 @@ Create JSON-LD templates using these standard Mustache variables:
|
|
|
72
72
|
|
|
73
73
|
## Related skills
|
|
74
74
|
|
|
75
|
-
See the **core** skill for the full cms-edit workflow. See the **seo-descriptions** skill for meta description generation.
|
|
75
|
+
See the **core** skill for the full cms-edit workflow. See the **seo-descriptions** skill for meta description generation. For bulk audit/apply across all entries, schema linking, publish phases, and production verification, see **cms-seo-audit**.
|
|
@@ -94,6 +94,12 @@ Does **not** replace a full audit for new 404s — run `audit` on the post-relea
|
|
|
94
94
|
|
|
95
95
|
---
|
|
96
96
|
|
|
97
|
+
## CMS SEO workflow
|
|
98
|
+
|
|
99
|
+
For Contentful meta/schema fixes before a crawl baseline, see **cms-seo-audit** (audit CSV → apply → bulk publish → `pnpm seo:audit:production`).
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
97
103
|
## Troubleshooting
|
|
98
104
|
|
|
99
105
|
| Problem | Fix |
|