commit 0f9c946b9648e3eb9b6a0398e8e0c806bd091992
parent 5b777de29efa14b36d1fe834855ff6ca5fad1b68
Author: I Mean I'm Just Saying <imeanimjustsaying@kiwifarms.st>
Date: Wed, 30 Sep 2026 18:57:59 -0400
homepage: the AI and MCP doc's Ten-minute setup — clone, pnpm install, claude mcp add archilyzer against the Jeralyzer, claude, /ask
After the MCP server's introduction: what you need, the source and the tarball, why the name is
archilyzer, the optional editor lines, TRANSCRIPT_HUB_URL, the mcp.json form in mcp/README for
other clients, and WSL2. "What it can do" is a heading of its own after it. The drift table names
README §1/§4 and mcp/README as copies to change together. docs.spec checks the block and links.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Diffstat:
3 files changed, 70 insertions(+), 2 deletions(-)
diff --git a/homepage/content/README.md b/homepage/content/README.md
@@ -36,7 +36,7 @@ its public counterpart needs the same change.
| `docs/operate.md` | `README.md`, `SCHEDULED_SYNC.md` | editor routes, scheduler settings |
| `docs/deploy-cloudflare.md` | `PUBLISH.md` (Cloudflare, R2, cost-abuse) | the 25 MB Pages limit, R2 options |
| `docs/deploy-docker.md` | `PUBLISH.md` (building every site in containers) | phase structure, settings names |
-| `docs/ai-and-mcp.md` | `mcp/README.md` | tool names, `corpus.json` shape |
+| `docs/ai-and-mcp.md` | `mcp/README.md`, `README.md` §1 and §4 | tool names, `corpus.json` shape, the Ten-minute setup's commands (README §1/§4 and mcp/README's "Add to Claude Code" are copies of them: change all three together) |
| `docs/faq.md` | — (written for this site) | claims about cost and hardware |
## House rules for these files
diff --git a/homepage/content/docs/ai-and-mcp.md b/homepage/content/docs/ai-and-mcp.md
@@ -30,7 +30,41 @@ client.
It is **a local tool you run yourself**. It changes nothing: it only reads
already-published static JSON, either from a directory on disk or over HTTP.
-What it can do:
+### Ten-minute setup
+
+To run Claude Code against a published archive, with nothing of your own
+hosted — the Jeralyzer here, and any archive's URL works the same:
+
+```sh
+git clone https://archilyzer.pages.dev/source/archilyzer.git archilyzer # or the tarball on /downloads/
+cd archilyzer && pnpm install
+claude mcp add archilyzer \
+ --env TRANSCRIPT_SITE_URL=https://jeralyzer.pages.dev \
+ -- pnpm -C "$PWD" --filter yt-dlp-transcript-mcp exec tsx src/index.ts
+claude # then: /ask what has he said about …
+```
+
+- **What you need:** Node.js 20.9 or newer, pnpm 9 or newer, and Claude Code.
+ No corpus, no yt-dlp, no GPU, nothing hosted.
+- **The source** is the project's read-only [git mirror](/source/); without
+ git, the same tree is a [tarball](/downloads/): unpack it and carry on from
+ `cd archilyzer`.
+- **Register it as `archilyzer`.** The shipped `/ask` and `/sweep` commands
+ call `mcp__archilyzer__ask_plan` / `mcp__archilyzer__sweep_plan`, and that
+ tool name embeds the server name as you registered it.
+- **Clips:** two optional `--env` lines, `ARCHILYZER_EDITOR_URL` and
+ `WORKER_TOKEN` (the editor's own), let `fetch_clip` ask a local editor for
+ clip media; leave them out for research alone.
+- **One archive or several:** `TRANSCRIPT_SITE_URL` reads one archive;
+ `TRANSCRIPT_HUB_URL`, given a hub's URL, federates every archive on the hub.
+- **Another client** (Claude Desktop, Cursor): the same server as an
+ `mcp.json` entry is in
+ [mcp/README.md](https://archilyzer.pages.dev/source/tree/mcp/README.md).
+- **On Windows,** run all of this inside WSL2, Claude Code included: see
+ “Claude Code on Windows” in the
+ [README](https://archilyzer.pages.dev/source/tree/README.md).
+
+### What it can do
- **Search transcripts** for a term, a phrase or a regular expression, with
timestamped snippets. Every timestamp is a link to that exact second of the
diff --git a/homepage/e2e/docs.spec.ts b/homepage/e2e/docs.spec.ts
@@ -61,6 +61,40 @@ test("an internal cross-link stays in the tab; an external one doesn't", async (
}
});
+// Release 16 slice DX: the research-only setup lives here alone, and every
+// archive's "Use with AI" link lands on this page.
+test("the AI and MCP doc's Ten-minute setup registers archilyzer and links the source", async ({
+ page,
+}) => {
+ await page.goto("/docs/ai-and-mcp/");
+ await expect(page.locator(".doc-measure h3#ten-minute-setup")).toBeVisible();
+
+ const block = page.locator(".doc-measure pre", { hasText: "claude mcp add archilyzer" });
+ await expect(block).toHaveCount(1);
+ const lines = (await block.innerText()).trim().split("\n");
+ expect(lines[0]).toMatch(/^git clone https:\/\/archilyzer\.pages\.dev\/source\/archilyzer\.git archilyzer\b/);
+ expect(lines[1]).toBe("cd archilyzer && pnpm install");
+ expect(lines[2]).toBe("claude mcp add archilyzer \\");
+ expect(lines[3]).toBe(" --env TRANSCRIPT_SITE_URL=https://jeralyzer.pages.dev \\");
+ expect(lines[4]).toBe(
+ ' -- pnpm -C "$PWD" --filter yt-dlp-transcript-mcp exec tsx src/index.ts',
+ );
+ expect(lines[5]).toMatch(/^claude\s+# then:\s+\/ask /);
+
+ // The source and the tarball, linked as the other docs link them: in place.
+ const source = page.locator('.doc-measure a[href="/source/"]', { hasText: "git mirror" });
+ await expect(source).toBeVisible();
+ await expect(source).not.toHaveAttribute("target", "_blank");
+ await expect(
+ page.locator('.doc-measure a[href="/downloads/"]', { hasText: "tarball" }),
+ ).toBeVisible();
+
+ // The name's reason sits beside it.
+ await expect(page.locator(".doc-measure")).toContainText(
+ "mcp__archilyzer__ask_plan / mcp__archilyzer__sweep_plan",
+ );
+});
+
test("an unknown doc slug is a 404, not a crash", async ({ page }) => {
const res = await page.request.get("/docs/not-a-real-page/");
expect(res.status()).toBe(404);