Following a link without ever seeing its URL
Why the compact view hides hrefs, what that cost, and how oc do pays it back.
A typical page is tens of thousands of tokens of markup. The signal on it fits in a few hundred. oc fetches the page, distills it into compact text with numbered actions, and lets an agent drive the site by number.
$ npm install -g @only-cli/oc
Node 20+. Three runtime dependencies. No daemon, browser extension, or per-site adapters. Or
skip the install with npx @only-cli/oc.
1,444 tokens for four real pages, the same four cost 65,372 as raw HTML
45×
Fewer tokens than a raw HTML fetch
477
Tokens for a Reddit thread that was 52,899
500
Token budget per render, hard capped
3
Runtime dependencies, zero setup
Claude Code, Codex, Cursor, Copilot, or any shell-capable agent. Pick the setup that matches how you already work; each is one line.
Install through the skills directory into Claude Code, Cursor, Codex, and Copilot. The skill costs almost no context until the agent invokes it.
$ npx skills add only-cli/oc
Prefer to do it by hand? Copy skills/only-cli/ into your agent's skills directory.
Add this instruction to CLAUDE.md, AGENTS.md, or your agent's
equivalent configuration file.
When you need content from a web page, run npx @only-cli/oc open <url> instead of fetching raw HTML. Run npx @only-cli/oc --help once to learn the commands.
No install and no config. The tool teaches its command surface through --help, the actions: line on every render, and errors that name the next command.
$ npx @only-cli/oc open example.com Small enough that an agent learns it from one --help and never asks again.
| Command | What it does | Ships |
|---|---|---|
oc open <url> | Fetch and render a page with numbered actions | v0.1 |
oc do <n> | Follow the numbered link [n] from the last page | v0.2 |
oc find <query> | Where a string appears on the page already open | v0.2 |
oc next | The next budget worth of the page already open | v0.2 |
oc read <n> | Full text of the region at [n] | v0.2 |
oc raw [url] | Distilled markdown of the whole page | v0.1 |
oc fill <n> <text> | Type into a numbered input | v0.2 |
oc submit [n] | Submit a form | v0.2 |
--budget <tokens>--json--html--session <name>--verbose Metrics are off by default, because metrics cost tokens too. Open r/ClaudeAI's front page, follow its top post to the comments, and report what the top comment argues, plus a single page, Yahoo Finance's AAPL quote. One live session per row, against each agent's own default tools. Bars share one scale across both tasks.
Reddit, multi-hop
Codex + oc Codex default Claude Code + oc Claude default AAPL, single page
Codex + oc Claude default Claude Code + oc Codex default
Claude Code's own WebFetch and WebSearch are blocked from reddit.com outright, and by default it has
no shell to fall back to, so on the Reddit task it does not just cost more, it fails outright. Codex
falls back to its own web search and curl, and gets there at 2.7× what it costs through
oc. On the single AAPL page it flips: Codex's default never opens the page and reports a stale
price, while Claude Code's default WebFetch is the cheapest correct answer in the table, cheaper
than oc. Struck-through rows didn't land a correct answer. Cost bars are an estimate, not a
measurement: they apply Claude Code's own measured rate on these runs (~$0.61 per 1,000 tokens,
blended across input, output, and cache reads/writes) to every row's token count, including the two
Codex rows, since the Codex CLI doesn't report a per-run dollar cost and its underlying model has no
published price to fall back on — treat those two as a stand-in, not gpt-5.6-sol's real pricing.
News, blogs, documentation, forums, and search engines: one generic engine distills whatever HTML comes back. Tuned shortcuts cover the sites agents hit most.
| Site | Shortcuts |
|---|---|
| Hacker News | top · new · item · user |
sub · post · user · search | |
| DuckDuckGo | search · lite |
| Bing | search · news |
A site shortcut is a small JSON file; see CONTRIBUTING.md.
v0.1 is early: static pages, budget-aware rendering, and offline tests. Requests impersonate Chrome and fall back to native fetch. MIT licensed; contributions welcome.
Every word is in the initial HTML, with no client-side rendering and one honest heading hierarchy. There is an llms.txt for orientation, an RSS feed, a sitemap, and structured data for crawlers.
Why the compact view hides hrefs, what that cost, and how oc do pays it back.
Four tasks, three methods, live pages — and the 350ms it costs.
Three one-line setups, and the budget flag worth knowing.
Five things you can do to your own site this week.
$ npm install -g @only-cli/oc