@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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clize/clize",
3
- "version": "0.35.1",
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": [
@@ -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 analysis
123
+ ## 2. The shape of one round
124
124
 
125
- A cold start is a funnel, and the funnel has a known size and a known price.
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 an analysis fails. The first is about *what you found*, the last two about *what you
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 are stock, not output.
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 our own tenant zero: eleven weeks of rounds that produced ledgers
289
- 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).
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, the rows with the best positions were disproportionately ones the volume table
409
- could not see (kunavo's payment long-tails at 4.5 and 5.8, clize.ai's German MCP cluster at
410
- 130 impressions), while the priced `attackable` rows sat at 65+ the table's coverage and the
411
- 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
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 locale SERPs are only loosely coupled a browser CSV
568
- tool holds #1 in German where the English SERP is a tutorial wall, and a Korean payment
569
- long-tail ranked where its English sibling never did. What does not multiply: marketing and
570
- landing pages. Locale copies of those earned zero on every site measured (72 on clize.ai, 199
571
- 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.
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
- Mostly `indexed` ship the next family. Mostly `Crawled - currently not indexed`
604
- that is Google's own verdict on those pages; the round is indexing and pruning, not
605
- 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.
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 noindexed, merged or redirected. The
612
- 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.
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 five steps: read the feedback (`check`, free) allocate (double down / stop
794
- loss / new bet) execute (pages, placement, the occasional paid query) book it (write
795
- what you put in back into the ledger, §3) report it (two tables, below).** Step ④ is the
796
- one that gets skipped, and skipping it breaks step two weeks later: "flat, no signal" and
797
- "flat, no signal, *and we already pitched five roundups*" are different rows, and only the
798
- ledger can tell them apart.
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` (buildable, not shipped — say why),
863
- `exists` (a page already carries it), `skip` (with the reason). Second, **placement** target /
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