@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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clize/clize",
3
- "version": "0.35.2",
3
+ "version": "0.35.3",
4
4
  "mcpName": "ai.clize/clize",
5
5
  "description": "The real-world capability layer for AI agents — domains, email, deploy, media, SEO/GEO. CLI + MCP.",
6
6
  "keywords": [
@@ -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 27 verified cells. A batch plan written under an earlier count rule (`≤5,
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 27 locale tool cells, 15 SERPs bought sat under
246
- "next batch" through three sessions.
245
+ next session (§10). tabledi's B1–B4 sat under "next batch" through three sessionsand 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 our own tenant zero: eleven weeks of rounds that produced ledgers
299
- and no pages. If a page costs a session, the first deliverable is the generator (§7).
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, the rows with the best positions were disproportionately ones the volume table
419
- could not see (kunavo's payment long-tails at 4.5 and 5.8, clize.ai's German MCP cluster at
420
- 130 impressions), while the priced `attackable` rows sat at 65+ the table's coverage and the
421
- incumbents' coverage are the same coverage. On 2026-09-02, 82 of 119 cells left the funnel at
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.** A sibling is one strings entry (tabledi: a `DICT` table in `tools/apps.js`; clize.ai:
551
- a `strings.<loc>.mjs`) and its gate is its own SERP (§7.2). Count existing tools × verified
552
- locale cells before anything else tabledi had 23 tools, 6 markets, 27 cells already verified
553
- open, and three sessions wrote "next batch" beside them while building one page. New tools are
554
- code and tests, one to three per session: they are the next batch's rows, not this batch's
555
- excuse. And **building a page that passed the gates is never a question for the human.** The
556
- human's gates are money, external-facing changes (a redirect, DNS, a published post) and sends.
557
- Ask for those in one line and build while you wait never bundle the pages into the question
558
- (tabledi, 2026-09-02: one redirect that needed a yes was asked together with three pages that
559
- did not, and all four waited).
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 locale SERPs are only loosely coupled a browser CSV
590
- tool holds #1 in German where the English SERP is a tutorial wall, and a Korean payment
591
- long-tail ranked where its English sibling never did. What does not multiply: marketing and
592
- landing pages. Locale copies of those earned zero on every site measured (72 on clize.ai, 199
593
- near-identical on kunavo) and are the composition drag gate 4 exists to prevent.
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
- Mostly `indexed` ship the next family. Mostly `Crawled - currently not indexed`
626
- that is Google's own verdict on those pages; the round is indexing and pruning, not
627
- shipping.
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 noindexed, merged or redirected. The
634
- composition stays clean only if dead pages leave.
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" and "awaiting go-ahead" are not blockers — a row wearing one of
895
- those means the session is not finished, and it goes back to step ⓪. Second, **placement** target /
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