@clize/clize 0.35.2 → 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 +67 -31
package/package.json
CHANGED
|
@@ -239,11 +239,13 @@ will — it cannot measure those. That half of the state exists only here.
|
|
|
239
239
|
- **Every ledger file counts, and a plan is a queue.** A site may carry more than one ledger
|
|
240
240
|
(tabledi: `worksheet.md` for en-US and `worksheet-global.md` for the other markets); rows in
|
|
241
241
|
all of them are the site's rows, and a round that counts only one file will report "nothing
|
|
242
|
-
to build" beside
|
|
242
|
+
to build" beside the cells the other file already verified. A batch plan written under an earlier count rule (`≤5,
|
|
243
243
|
wait for impressions`) is not re-planned and never "the next batch": each cell is re-gated
|
|
244
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
|
|
246
|
-
|
|
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".
|
|
247
249
|
|
|
248
250
|
**Page batches — the second table in the ledger.** Keyword rows hold bets; the batch table holds
|
|
249
251
|
what the site's composition is doing, and it is what the batch gate and the retire rule (§7.3)
|
|
@@ -295,8 +297,8 @@ run* — all six have been observed in real runs that read as finished.
|
|
|
295
297
|
An opportunity written in prose (a cluster, a family, a locale axis) with no rows behind it
|
|
296
298
|
is test 1 wearing a different coat. The deliverable counts shipped
|
|
297
299
|
URLs, not qualified rows; a ledger of twenty rows and two pages is a session that spent itself
|
|
298
|
-
on the analysis. Observed on
|
|
299
|
-
|
|
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).
|
|
300
302
|
|
|
301
303
|
---
|
|
302
304
|
|
|
@@ -415,10 +417,11 @@ So: a `no_volume` row whose SERP is already full of category roundups is worth a
|
|
|
415
417
|
A `no_data` row goes to `seo serp` like any other survivor — the SERP does not need a volume
|
|
416
418
|
figure to show who occupies it. Open and servable → buildable, enrolled as `pending`; wall →
|
|
417
419
|
skip row with the reason. What `no_data` never is: a reason to drop the cell. Measured across
|
|
418
|
-
three sites
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
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
|
|
422
425
|
the pricing step without a single SERP look; keeping them would have cost $1.64 in serp calls.
|
|
423
426
|
|
|
424
427
|
### `--ai` is a different unit
|
|
@@ -547,16 +550,27 @@ a family generator existed, and tabledi shipped forty in two days from one. Buil
|
|
|
547
550
|
before the second page of any family, and never machine-translate a family page.
|
|
548
551
|
|
|
549
552
|
**On a site that already has tools, this round's page count is the locale siblings of the tools
|
|
550
|
-
it has
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
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.
|
|
560
574
|
|
|
561
575
|
### 7.1 The pipeline — five steps, each with a pass/fail
|
|
562
576
|
|
|
@@ -586,11 +600,17 @@ Judgment calls that matter:
|
|
|
586
600
|
translates almost for free, and the non-English cells of your matrix are the low-competition
|
|
587
601
|
ones. Each locale page is a real, distinct intent — this is not page-stuffing. Build every
|
|
588
602
|
locale cell whose *own* SERP is not a wall (`seo serp --locale`, $0.02); the English page's
|
|
589
|
-
impressions are not the gate, because
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
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.
|
|
594
614
|
- **Pick tools with a shelf life.** Protocol- and format-level tools (llms.txt, schema, robots)
|
|
595
615
|
keep earning links for years; trend-chasing tools die with the trend. Ask: will anyone search
|
|
596
616
|
this in a year?
|
|
@@ -622,16 +642,23 @@ do the protecting, not experience:
|
|
|
622
642
|
locale page written in-locale, a host page whose install and config really differ;
|
|
623
643
|
- **the last batch is being indexed** — `gsc.pages.unseen` (§9) shows the previous batch's
|
|
624
644
|
`index`; find the batch by `firstSeen`, and book the counts in the ledger's batch table (§3).
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
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.
|
|
628
653
|
Impressions are not the gate for the next batch: at zero authority they arrive five to six
|
|
629
654
|
weeks after shipping and clicks may not arrive in a quarter, so a rule that waits for them
|
|
630
655
|
ships nothing for months — that was the mechanism behind five pages a month. Waiting is for
|
|
631
656
|
*deciding a new page type* (§10), never for the siblings of a type already decided. The
|
|
632
657
|
retire rule is the other half of shipping fast: a page indexed for two windows with no
|
|
633
|
-
impressions, or refused by the index for two, is
|
|
634
|
-
|
|
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.
|
|
635
662
|
|
|
636
663
|
### 7.4 E-E-A-T floor and locales
|
|
637
664
|
|
|
@@ -891,8 +918,9 @@ every row the round touched, one line each:
|
|
|
891
918
|
it), `skip` (with the reason). A `to build` row carries a blocker, and only three exist:
|
|
892
919
|
`needs human` (a redirect, a send, money — asked in one line, §7), `needs tool code` (a new
|
|
893
920
|
client-side tool; name the session it ships in), `needs generator` (no family scaffold yet).
|
|
894
|
-
"Analysis round", "next batch"
|
|
895
|
-
|
|
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 /
|
|
896
924
|
page / status (`sent` / `drafted` / `blocked: needs human`). Then at most five lines of
|
|
897
925
|
narrative. A report that is findings and no pages table is test 1 (§3) in its final form: the
|
|
898
926
|
human cannot act on a paragraph. A round with an empty pages table says so *in* the table, with
|
|
@@ -925,6 +953,14 @@ So: **promise time series against yourself, never absolute share.** "Our AI refe
|
|
|
925
953
|
it. Breaking this rule in customer-facing copy is a product-integrity failure, not a rounding
|
|
926
954
|
error.
|
|
927
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
|
+
|
|
928
964
|
---
|
|
929
965
|
|
|
930
966
|
## What this skill will not do
|