@clize/clize 0.35.0 → 0.35.2

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.0",
3
+ "version": "0.35.2",
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)
@@ -225,9 +226,24 @@ will — it cannot measure those. That half of the state exists only here.
225
226
  had recorded in prose that `invoice data extraction` was the site's third-best earning URL
226
227
  despite an enterprise-looking SERP; the next day's session opened a fresh ledger, re-derived
227
228
  the enterprise read from the SERP, and marked the page for retargeting. The rule that would
228
- have caught it is in §4 ("Search Console beats the SERP read").
229
+ have caught it is in §4 ("Search Console beats the SERP read"). Import **skip rows and
230
+ cell-level lessons** only. Do not import site-level verdicts — "the content side has nothing
231
+ left", "the bottleneck is authority" — those expire, and are re-derived every round from the
232
+ cell count (§10, cadence); kunavo carried one such verdict through seven rounds, each session
233
+ re-confirming it instead of counting cells. And a family described in prose is not in the
234
+ ledger: a cluster, a locale axis or a page family with no rows and no `target page` will never
235
+ be built — write the rows (kunavo's nine-cell integrations family sat as a paragraph for two
236
+ rounds while every session executed "the existing ledger").
229
237
  - **Narrative goes underneath as footnotes.** Two or three lines about what the pattern means.
230
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 27 verified cells. 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 — 27 locale tool cells, 15 SERPs bought — sat under
246
+ "next batch" through three sessions.
231
247
 
232
248
  **Page batches — the second table in the ledger.** Keyword rows hold bets; the batch table holds
233
249
  what the site's composition is doing, and it is what the batch gate and the retire rule (§7.3)
@@ -245,7 +261,7 @@ sitemap — and `unseenTotal` says how much of the site the list is showing you.
245
261
 
246
262
  ### The pass/fail test
247
263
 
248
- Six ways an analysis fails. The first is about *what you found*, the last two about *what you
264
+ Six ways a round fails. The first is about *what you found*, the last two about *what you
249
265
  funded*; the middle three are about *whether you actually ran the analysis you claim to have
250
266
  run* — all six have been observed in real runs that read as finished.
251
267
 
@@ -273,8 +289,11 @@ run* — all six have been observed in real runs that read as finished.
273
289
  discussions visible in `items` — so this costs nothing to fix: write them as rows next to
274
290
  the pages they support. Observed in the field (2026-08-31 second run): five funded pages,
275
291
  placement nearly invisible in the deliverable.
276
- 6. **Rows without pages.** Buildable rows — a serp verdict that is not a wall, an intent you can
277
- serve — left unshipped at session end are stock, not output. The deliverable counts shipped
292
+ 6. **Rows without pages — and families without rows.** Buildable rows — a serp verdict that is
293
+ not a wall, an intent you can serve — left unshipped at session end, or handed to "next
294
+ round" without one of the three blockers in §10 ⑤, are stock, not output.
295
+ An opportunity written in prose (a cluster, a family, a locale axis) with no rows behind it
296
+ is test 1 wearing a different coat. The deliverable counts shipped
278
297
  URLs, not qualified rows; a ledger of twenty rows and two pages is a session that spent itself
279
298
  on the analysis. Observed on our own tenant zero: eleven weeks of rounds that produced ledgers
280
299
  and no pages. If a page costs a session, the first deliverable is the generator (§7).
@@ -527,6 +546,18 @@ each after the first. clize.ai went from one page per session to seven in one se
527
546
  a family generator existed, and tabledi shipped forty in two days from one. Build the generator
528
547
  before the second page of any family, and never machine-translate a family page.
529
548
 
549
+ **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).
560
+
530
561
  ### 7.1 The pipeline — five steps, each with a pass/fail
531
562
 
532
563
  | step | act | it passed if |
@@ -698,7 +729,9 @@ comparison with the ledger's `target page` (§3):
698
729
  ### `gsc.pages` — the page face
699
730
 
700
731
  The question the product exists for is "how much traffic does the final page get", answered by
701
- page since 0.34.0 — three facts side by side, no judgment:
732
+ page since 0.34.0 — three facts side by side, no judgment. Reading it is the first fifteen
733
+ minutes of a round, not the round: the shapes below say what to fix, and the round still
734
+ enumerates and builds (§10).
702
735
 
703
736
  | list | what is in it | the facts per row |
704
737
  | --- | --- | --- |
@@ -773,36 +806,35 @@ sentence (`authority_limited`); the roundups still come from a deliberate `seo s
773
806
 
774
807
  ## 10. The cycle
775
808
 
776
- **The loop starts at measurement, and its purpose is allocation.** Two facts force the entry
777
- point. First, the only thing that *changes* between rounds is the measurement: sv/kd are
778
- monthly-refresh data (cached 30 days) and SERPs move slowly re-run discovery two weeks later
779
- and it returns the same conclusions at the same prices. What changed is what *your* actions
780
- did to the world, and that shows up only in `check`, which is free. Second, the entry read is
781
- the branch point: each round's only real question is **where the next unit of work goes** —
782
- double down where a return signal appeared, stop where none did, discover only when the read
783
- hands you something new. Measurement is the allocator, not a dashboard.
784
-
785
- **A round is four steps: ① read the feedback (`check`, free) → ② allocate (double down / stop
786
- loss / new bet) → ③ execute (pages, placement, the occasional paid query) book it (write
787
- what you put in back into the ledger, §3).** Step is the one that gets skipped, and skipping
788
- it breaks step two weeks later: "flat, no signal" and "flat, no signal, *and we already
789
- pitched five roundups*" are different rows leading to different decisions, and nothing but the
790
- ledger can tell them apart.
809
+ **The loop starts at measurement, and its purpose is allocation.** Between rounds the only
810
+ thing that changes is what *your* actions did to the world, and that shows up only in `check`,
811
+ which is free (sv/kd are monthly data, SERPs move slowly). The entry read is the branch point:
812
+ each round's real question is **where the next unit of work goes** double down where a signal
813
+ appeared, stop where none did, and keep enumerating cells the ledger has not priced yet.
814
+
815
+ **A round is a pipeline, and it opens by building.** **ship the qualified batch** — every
816
+ `to build` row from the last round and every plan cell with its own SERP verdict (§3), in every
817
+ ledger file — before reading a single number, while the session's budget is whole → ① read the
818
+ feedback (`check`, free) → ② allocate (double down / stop loss / new bet) → ③ execute what is
819
+ cheap now (siblings, retargets, placement drafts) and write the rest as the next session's
820
+ `to build` rows book it (§3) report it (two tables, below). This round's analysis
821
+ qualifies the *next* round's batch; it does not postpone this one's. Step is the step that
822
+ vanished in three consecutive runs: each read, diagnosed, wrote a ledger, named itself an
823
+ "analysis round" and handed the pages to "next time". Step ④ is the other one that gets
824
+ skipped, and skipping it breaks step ② two weeks later: "flat, no signal" and "flat, no signal,
825
+ *and we already pitched five roundups*" are different rows, and only the ledger can tell them
826
+ apart.
791
827
 
792
828
  ```
793
829
  clize seo check # free — every session on an existing site starts here
794
830
  ```
795
831
 
796
832
  **Domain of the loop: a site that exists.** `check` needs `--domain` (or a clize project
797
- directory) with neither it errors, correctly. No site yet, or a brand-new venture with
798
- nothing deployed? That is pre-cycle work: run discovery (§1) to decide what to build, ship
799
- the first batch (§7), enroll the keywords the cycle starts at that first check.
800
-
801
- **Round one is not special it is the round that reads zero.** The zeros are your baseline,
802
- and the entry read still pays before you spend a cent: it surfaces the GSC service-account
803
- setup (a 2-minute human step — hand it to your human now, so it runs in parallel with the
804
- analysis), and on a site with any history it hands you free seeds (`gsc.topQueries` /
805
- `newQueries`) before you buy a single word.
833
+ directory). No site yet? That is pre-cycle work: discovery (§1), first batch (§7), enroll — the
834
+ cycle starts at that first check. **Round one is not special it is the round that reads
835
+ zero.** The zeros are the baseline; the entry read still pays before you spend a cent: it
836
+ surfaces the GSC service-account setup (a 2-minute human step — hand it over now, in parallel),
837
+ and on a site with history it hands you free seeds (`gsc.topQueries` / `newQueries`).
806
838
 
807
839
  ### ②–③ Allocate, then execute — branch on what the read says
808
840
 
@@ -816,7 +848,12 @@ analysis), and on a site with any history it hands you free seeds (`gsc.topQueri
816
848
  | `rank.pending` non-empty | those words are not measured yet — no branch applies to them this round; do not read their zero as "missed" |
817
849
  | `authority_limited` | placement only **on that theme** — another page on it will not move it (§6). The label is per keyword, not per site: production continues on every other theme. If every funded theme reads this way, the site is Shape C (top of this file): re-derive the ledger toward tool, long-tail and locale rows before pitching |
818
850
  | `gsc.newQueries` non-empty | mini-discovery: fold them into the matrix, price the new cells, extend the tracked list if they survive the SERP check |
819
- | no movers two rounds running *and* the placement queue is empty | the plan is stale, not slow — back to §1 and re-derive; more waiting will not convert a flat line |
851
+ | no movers two rounds running | the plan is stale, not slow — back to §1 and re-derive toward new page types; more waiting will not convert a flat line. The placement queue does not gate this: a queue that has waited on a human for two rounds is recorded as `blocked:` and handed over, and production goes on without it — placement is human-gated, building is not, and one must never hold the other (kunavo's four ready pitches held production for seven rounds) |
852
+
853
+ **Rows are not exclusive.** A round takes every branch its read matches — a technical fix, a
854
+ placement action and a production batch in the same session is the normal shape, not three
855
+ rounds. `technical round` and `indexing round` say what to do *for those pages*; they never
856
+ cancel the production step for the rest of the site.
820
857
 
821
858
  ### ④ Book the round
822
859
 
@@ -834,17 +871,45 @@ next round's allocation possible:
834
871
  `gsc.pages.unseen` (found by `firstSeen`), and whether this window was another zero. This is
835
872
  the row the next round's batch gate and retire rule read.
836
873
 
837
- The stop-loss branch above ("no movers two rounds running *and* the placement queue is empty")
838
- is answerable only if the previous round wrote down what it put in. The product does not track
839
- your side of the bet, deliberately: it cannot measure whether a pitch was sent, and a field it
840
- cannot measure is just a form for you to fill in. That state lives in the ledger or nowhere.
874
+ The stop-loss branch above ("no movers two rounds running") is answerable only if the previous
875
+ round wrote down what it put in. The product does not track your side of the bet, deliberately:
876
+ it cannot measure whether a pitch was sent, and a field it cannot measure is just a form for you
877
+ to fill in. That state lives in the ledger or nowhere.
878
+
879
+ ### ⑤ Report the round
880
+
881
+ What the human reads ends with two tables, not with findings. First, **this round's pages** —
882
+ every row the round touched, one line each:
883
+
884
+ | keyword | locale | serp | target URL | type | status |
885
+ | --- | --- | --- | --- | --- | --- |
886
+ | hreflang 生成 | ja-JP | open (small sites) | /ja/seo/hreflang-tag-generator/ | tool | built |
887
+ | open webui api key | en-US | open | /docs/integrations/open-webui | integration doc | to build: generator first |
888
+ | claude code preise | de-DE | official_wall | — | — | skip |
889
+
890
+ `status` is one of `built` (shipped this round), `to build`, `exists` (a page already carries
891
+ it), `skip` (with the reason). A `to build` row carries a blocker, and only three exist:
892
+ `needs human` (a redirect, a send, money — asked in one line, §7), `needs tool code` (a new
893
+ 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 /
896
+ page / status (`sent` / `drafted` / `blocked: needs human`). Then at most five lines of
897
+ narrative. A report that is findings and no pages table is test 1 (§3) in its final form: the
898
+ human cannot act on a paragraph. A round with an empty pages table says so *in* the table, with
899
+ the cell count that justifies it — kunavo round five delivered four findings, four
900
+ opportunities and no table, and the three buildable families in its own prose went unbuilt.
841
901
 
842
902
  **Cadence**: SEO is a weeks-to-months system and the window `check` measures is 4 weeks wide —
843
- checking daily just re-reads the same window. Every two weeks is plenty. And a round that
844
- re-reads an unchanged window must not re-decide: if `check` shows nothing new since the last
845
- round (same window, no movers, no new queries), the round is execution of the existing ledger,
846
- not a new analysis. tabledi 2026-09-02 re-ran discovery on the same data as 09-01 and flipped
847
- its P0 a recommendation that flips on identical data is not a reading, it is noise.
903
+ checking daily just re-reads the same window. Every two weeks is plenty. A round that re-reads
904
+ an unchanged window must not re-judge *existing rows*: same window, no movers, no new queries
905
+ the P0s stand (tabledi 2026-09-02 re-ran discovery on the same data as 09-01 and flipped its
906
+ P0 a recommendation that flips on identical data is noise). **That rule never means no new
907
+ cells.** Pricing a cell the ledger has never priced is not re-reading the window — the window
908
+ has no opinion on it. Every round, whatever the window: count the ledger's unbuilt buildable
909
+ rows against the site's cell space (§1.2: 100–150 for a full site); fewer than ten → this round
910
+ enumerates (§1) and builds. kunavo, 2026-09-02, round five: same window, ledger exhausted,
911
+ three markets never priced, a nine-cell family in prose — the round shipped zero pages and
912
+ deferred the pricing for the third time, quoting this paragraph.
848
913
 
849
914
  ---
850
915