@clize/clize 0.35.1 → 0.35.3
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/package.json +1 -1
- package/skills/clize-seo/SKILL.md +96 -28
package/package.json
CHANGED
|
@@ -120,9 +120,10 @@ your list. No amount of enumeration produces this. Fold it back into the matrix
|
|
|
120
120
|
|
|
121
121
|
---
|
|
122
122
|
|
|
123
|
-
## 2. The shape of one
|
|
123
|
+
## 2. The shape of one round
|
|
124
124
|
|
|
125
|
-
A
|
|
125
|
+
A round is a funnel with a known size and a known price — and there is no such thing as an
|
|
126
|
+
"analysis round": every round ends in pages or in a blocker the human must clear (§10).
|
|
126
127
|
|
|
127
128
|
```
|
|
128
129
|
30–100 candidates (§1: competitor teardown + capability matrix)
|
|
@@ -235,6 +236,16 @@ will — it cannot measure those. That half of the state exists only here.
|
|
|
235
236
|
rounds while every session executed "the existing ledger").
|
|
236
237
|
- **Narrative goes underneath as footnotes.** Two or three lines about what the pattern means.
|
|
237
238
|
Not six paragraphs of themes.
|
|
239
|
+
- **Every ledger file counts, and a plan is a queue.** A site may carry more than one ledger
|
|
240
|
+
(tabledi: `worksheet.md` for en-US and `worksheet-global.md` for the other markets); rows in
|
|
241
|
+
all of them are the site's rows, and a round that counts only one file will report "nothing
|
|
242
|
+
to build" beside the cells the other file already verified. A batch plan written under an earlier count rule (`≤5,
|
|
243
|
+
wait for impressions`) is not re-planned and never "the next batch": each cell is re-gated
|
|
244
|
+
on its own SERP verdict, and every cell that passes is a `to build` row for step ⓪ of the
|
|
245
|
+
next session (§10). tabledi's B1–B4 sat under "next batch" through three sessions — and when a
|
|
246
|
+
session finally counted, only 15 of its cells had a SERP and 6 of those were unbuilt: a plan
|
|
247
|
+
is not a verified list until each cell has its own verdict; buy the missing ones ($0.02 each)
|
|
248
|
+
in the same session, never "next time".
|
|
238
249
|
|
|
239
250
|
**Page batches — the second table in the ledger.** Keyword rows hold bets; the batch table holds
|
|
240
251
|
what the site's composition is doing, and it is what the batch gate and the retire rule (§7.3)
|
|
@@ -252,7 +263,7 @@ sitemap — and `unseenTotal` says how much of the site the list is showing you.
|
|
|
252
263
|
|
|
253
264
|
### The pass/fail test
|
|
254
265
|
|
|
255
|
-
Six ways
|
|
266
|
+
Six ways a round fails. The first is about *what you found*, the last two about *what you
|
|
256
267
|
funded*; the middle three are about *whether you actually ran the analysis you claim to have
|
|
257
268
|
run* — all six have been observed in real runs that read as finished.
|
|
258
269
|
|
|
@@ -281,12 +292,13 @@ run* — all six have been observed in real runs that read as finished.
|
|
|
281
292
|
the pages they support. Observed in the field (2026-08-31 second run): five funded pages,
|
|
282
293
|
placement nearly invisible in the deliverable.
|
|
283
294
|
6. **Rows without pages — and families without rows.** Buildable rows — a serp verdict that is
|
|
284
|
-
not a wall, an intent you can serve — left unshipped at session end
|
|
295
|
+
not a wall, an intent you can serve — left unshipped at session end, or handed to "next
|
|
296
|
+
round" without one of the three blockers in §10 ⑤, are stock, not output.
|
|
285
297
|
An opportunity written in prose (a cluster, a family, a locale axis) with no rows behind it
|
|
286
298
|
is test 1 wearing a different coat. The deliverable counts shipped
|
|
287
299
|
URLs, not qualified rows; a ledger of twenty rows and two pages is a session that spent itself
|
|
288
|
-
on the analysis. Observed on
|
|
289
|
-
|
|
300
|
+
on the analysis. Observed on kunavo: five rounds, five pages, three of the rounds at zero; and on clize.ai
|
|
301
|
+
the opposite failure — eleven weeks in which no round ran at all. If a page costs a session, the first deliverable is the generator (§7).
|
|
290
302
|
|
|
291
303
|
---
|
|
292
304
|
|
|
@@ -405,10 +417,11 @@ So: a `no_volume` row whose SERP is already full of category roundups is worth a
|
|
|
405
417
|
A `no_data` row goes to `seo serp` like any other survivor — the SERP does not need a volume
|
|
406
418
|
figure to show who occupies it. Open and servable → buildable, enrolled as `pending`; wall →
|
|
407
419
|
skip row with the reason. What `no_data` never is: a reason to drop the cell. Measured across
|
|
408
|
-
three sites
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
420
|
+
three sites: the demand the table could not see was real (clize.ai's German MCP cluster,
|
|
421
|
+
`no_data` in the table, 130 impressions in Search Console), and the only page-1 positions any
|
|
422
|
+
of the sites hold are on such cells (kunavo's payment long-tails at 4.5 and 5.8), while the
|
|
423
|
+
priced `attackable` rows sat at 65+ or unseen — the table's coverage and the incumbents'
|
|
424
|
+
coverage are the same coverage. On 2026-09-02, 82 of 119 cells left the funnel at
|
|
412
425
|
the pricing step without a single SERP look; keeping them would have cost $1.64 in serp calls.
|
|
413
426
|
|
|
414
427
|
### `--ai` is a different unit
|
|
@@ -536,6 +549,29 @@ each after the first. clize.ai went from one page per session to seven in one se
|
|
|
536
549
|
a family generator existed, and tabledi shipped forty in two days from one. Build the generator
|
|
537
550
|
before the second page of any family, and never machine-translate a family page.
|
|
538
551
|
|
|
552
|
+
**On a site that already has tools, this round's page count is the locale siblings of the tools
|
|
553
|
+
it has**, and the gate is each cell's own SERP (§7.2). Siblings come in two prices. A *format*
|
|
554
|
+
tool (viewer, merge, split, convert) is one strings entry (tabledi: a `DICT` table in
|
|
555
|
+
`tools/apps.js`; clize.ai: a `strings.<loc>.mjs`) — ten in a session is ordinary. A *text* tool
|
|
556
|
+
(duplicates, compare, clean) carries locale semantics — full-width and half-width forms in
|
|
557
|
+
Japanese, composed and decomposed accents in French — and a sibling that ignores them reports
|
|
558
|
+
"0 duplicates" on a real file, which is gate 3 failed; budget two or three of those per session.
|
|
559
|
+
Count existing tools × verified locale cells before anything else, and buy the SERPs the cells
|
|
560
|
+
lack ($0.02 each) in the same breath — tabledi had 23 tools and 6 markets; when a session
|
|
561
|
+
finally counted, 15 cells had a SERP, 6 were passed and unbuilt, and "next batch" had been
|
|
562
|
+
written beside them three times. New tools are code and tests, one to three per session: the
|
|
563
|
+
next batch's rows, not this batch's excuse.
|
|
564
|
+
|
|
565
|
+
**Building and publishing a page that passed the gates on the user's own site is never a
|
|
566
|
+
question for the human.** The human's gates are money, changes that alter what the world already
|
|
567
|
+
sees (a redirect, DNS, a canonical), sends, and posts on other people's platforms. Ask for those
|
|
568
|
+
in one line and build while you wait — never bundle the pages into the question. When a
|
|
569
|
+
human-gated change shares a deploy with pages (a redirect map in the same `vercel.json`), split
|
|
570
|
+
the deploy: ship the pages, hold the change. Step ⓪ is done when the pages are *live*, not
|
|
571
|
+
committed — tabledi, 2026-09-02: one session built three things and ended asking about a
|
|
572
|
+
redirect; the next found all three returning 404 in production and ended the same way. Four
|
|
573
|
+
pages built across two sessions, zero live. A session does not end with built, undeployed pages.
|
|
574
|
+
|
|
539
575
|
### 7.1 The pipeline — five steps, each with a pass/fail
|
|
540
576
|
|
|
541
577
|
| step | act | it passed if |
|
|
@@ -564,11 +600,17 @@ Judgment calls that matter:
|
|
|
564
600
|
translates almost for free, and the non-English cells of your matrix are the low-competition
|
|
565
601
|
ones. Each locale page is a real, distinct intent — this is not page-stuffing. Build every
|
|
566
602
|
locale cell whose *own* SERP is not a wall (`seo serp --locale`, $0.02); the English page's
|
|
567
|
-
impressions are not the gate, because
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
603
|
+
impressions are not the gate, because the same intent draws a different page in each market —
|
|
604
|
+
kunavo's `claude code pricing`: `official_wall` in de-DE and es-ES, `open` in ja-JP and
|
|
605
|
+
fr-FR; one keyword, four verdicts. What does not multiply: marketing and landing pages. Read
|
|
606
|
+
that evidence for what it varied, not for what it sounds like: clize.ai's 72 translated
|
|
607
|
+
landing pages earn about what their English originals earn — impressions in the tens, zero
|
|
608
|
+
clicks — so the failure is the *type*, in every language; kunavo's 199 untranslated copies
|
|
609
|
+
were duplicates, collapsed by canonicalization, and say nothing about locales; the locale
|
|
610
|
+
pages that do earn on both sites are translated guides and tools (kunavo's Korean pricing
|
|
611
|
+
guide is its top non-brand page). The bar for adding a locale to a marketing page is local
|
|
612
|
+
non-brand impressions on the ones that exist — indexing is the floor, not the pass. Locale is
|
|
613
|
+
not a page-generation primitive; a SERP-backed intent is.
|
|
572
614
|
- **Pick tools with a shelf life.** Protocol- and format-level tools (llms.txt, schema, robots)
|
|
573
615
|
keep earning links for years; trend-chasing tools die with the trend. Ask: will anyone search
|
|
574
616
|
this in a year?
|
|
@@ -600,16 +642,23 @@ do the protecting, not experience:
|
|
|
600
642
|
locale page written in-locale, a host page whose install and config really differ;
|
|
601
643
|
- **the last batch is being indexed** — `gsc.pages.unseen` (§9) shows the previous batch's
|
|
602
644
|
`index`; find the batch by `firstSeen`, and book the counts in the ledger's batch table (§3).
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
645
|
+
Read the four states apart: `URL is unknown to Google` and `Discovered - currently not
|
|
646
|
+
indexed` are the queue (a day-old batch sits there; not a verdict); `Crawled - currently
|
|
647
|
+
not indexed` is Google's verdict on a page it has read — after you rule out your own hand
|
|
648
|
+
(a canonical pointing elsewhere, hreflang missing or one-way, a stray `noindex`), which
|
|
649
|
+
produces the same state. Mostly indexed → ship the next family. Mostly crawled-not-indexed
|
|
650
|
+
on a clean implementation → the round is indexing and pruning, not shipping. This check
|
|
651
|
+
paces shipping; it does not certify composition — kunavo's 440 locale model pages indexed
|
|
652
|
+
fine and earned nothing. Composition is the second check and the retire rule.
|
|
606
653
|
Impressions are not the gate for the next batch: at zero authority they arrive five to six
|
|
607
654
|
weeks after shipping and clicks may not arrive in a quarter, so a rule that waits for them
|
|
608
655
|
ships nothing for months — that was the mechanism behind five pages a month. Waiting is for
|
|
609
656
|
*deciding a new page type* (§10), never for the siblings of a type already decided. The
|
|
610
657
|
retire rule is the other half of shipping fast: a page indexed for two windows with no
|
|
611
|
-
impressions, or refused by the index for two, is
|
|
612
|
-
|
|
658
|
+
impressions, or refused by the index for two, is retired: `noindex` by default (the page keeps
|
|
659
|
+
serving users, only its index exposure goes), merge or redirect when another page carries the
|
|
660
|
+
intent, delete only what nobody visits. The composition stays clean only if dead pages leave
|
|
661
|
+
the index.
|
|
613
662
|
|
|
614
663
|
### 7.4 E-E-A-T floor and locales
|
|
615
664
|
|
|
@@ -790,12 +839,18 @@ which is free (sv/kd are monthly data, SERPs move slowly). The entry read is the
|
|
|
790
839
|
each round's real question is **where the next unit of work goes** — double down where a signal
|
|
791
840
|
appeared, stop where none did, and keep enumerating cells the ledger has not priced yet.
|
|
792
841
|
|
|
793
|
-
**A round is
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
842
|
+
**A round is a pipeline, and it opens by building.** ⓪ **ship the qualified batch** — every
|
|
843
|
+
`to build` row from the last round and every plan cell with its own SERP verdict (§3), in every
|
|
844
|
+
ledger file — before reading a single number, while the session's budget is whole → ① read the
|
|
845
|
+
feedback (`check`, free) → ② allocate (double down / stop loss / new bet) → ③ execute what is
|
|
846
|
+
cheap now (siblings, retargets, placement drafts) and write the rest as the next session's
|
|
847
|
+
`to build` rows → ④ book it (§3) → ⑤ report it (two tables, below). This round's analysis
|
|
848
|
+
qualifies the *next* round's batch; it does not postpone this one's. Step ⓪ is the step that
|
|
849
|
+
vanished in three consecutive runs: each read, diagnosed, wrote a ledger, named itself an
|
|
850
|
+
"analysis round" and handed the pages to "next time". Step ④ is the other one that gets
|
|
851
|
+
skipped, and skipping it breaks step ② two weeks later: "flat, no signal" and "flat, no signal,
|
|
852
|
+
*and we already pitched five roundups*" are different rows, and only the ledger can tell them
|
|
853
|
+
apart.
|
|
799
854
|
|
|
800
855
|
```
|
|
801
856
|
clize seo check # free — every session on an existing site starts here
|
|
@@ -859,8 +914,13 @@ every row the round touched, one line each:
|
|
|
859
914
|
| open webui api key | en-US | open | /docs/integrations/open-webui | integration doc | to build: generator first |
|
|
860
915
|
| claude code preise | de-DE | official_wall | — | — | skip |
|
|
861
916
|
|
|
862
|
-
`status` is one of `built` (shipped this round), `to build` (
|
|
863
|
-
|
|
917
|
+
`status` is one of `built` (shipped this round), `to build`, `exists` (a page already carries
|
|
918
|
+
it), `skip` (with the reason). A `to build` row carries a blocker, and only three exist:
|
|
919
|
+
`needs human` (a redirect, a send, money — asked in one line, §7), `needs tool code` (a new
|
|
920
|
+
client-side tool; name the session it ships in), `needs generator` (no family scaffold yet).
|
|
921
|
+
"Analysis round", "next batch", "awaiting go-ahead" and "needs a SERP" are not blockers — a
|
|
922
|
+
SERP is $0.02 inside the fuse and is bought on the spot — and a row wearing one of those means
|
|
923
|
+
the session is not finished: it goes back to step ⓪. Second, **placement** — target /
|
|
864
924
|
page / status (`sent` / `drafted` / `blocked: needs human`). Then at most five lines of
|
|
865
925
|
narrative. A report that is findings and no pages table is test 1 (§3) in its final form: the
|
|
866
926
|
human cannot act on a paragraph. A round with an empty pages table says so *in* the table, with
|
|
@@ -893,6 +953,14 @@ So: **promise time series against yourself, never absolute share.** "Our AI refe
|
|
|
893
953
|
it. Breaking this rule in customer-facing copy is a product-integrity failure, not a rounding
|
|
894
954
|
error.
|
|
895
955
|
|
|
956
|
+
**The cases in this file are samples of one to three sites, and each varied one thing.** Before
|
|
957
|
+
a case is cited for a rule, say what it varied, how many, and over which window: clize.ai's 72
|
|
958
|
+
locale pages varied *page type* (their English originals earn the same nothing); kunavo's 199
|
|
959
|
+
copies varied *translation* (identical, so Google collapsed them); tabledi's page-1 tools varied
|
|
960
|
+
*age* (three years), not links; tabledi's 36 marketing locales were a day old when first read.
|
|
961
|
+
A rule that survives only because its example was misread is a rule waiting to fail — three
|
|
962
|
+
such misreadings were found in this file on 2026-09-02 and corrected.
|
|
963
|
+
|
|
896
964
|
---
|
|
897
965
|
|
|
898
966
|
## What this skill will not do
|