From 5e7f54c4bb1c25b6298067d96a21bc5923375f99 Mon Sep 17 00:00:00 2001 From: only-cli Date: Sat, 22 Aug 2026 12:16:14 -0400 Subject: [PATCH 1/2] feat: add site CLIs for AWS, GCP, and Azure documentation Cloud provider docs are the pages agents hit most while writing infrastructure code, and they carry the heaviest chrome: nav trees, version pickers, feedback widgets. One config per provider gives them tuned shortcuts instead of raw URLs. The Google config points at docs.cloud.google.com because cloud.google.com 301s every docs path there; skipping the redirect saves a round trip, same trick as reddit.com going via old.reddit.com. All six URL templates were verified against the live sites with fetch + distill (56 to 4126 blocks, real titles, HTTP 200). Closes #11 --- README.md | 3 +++ clis/cloud.google.com.json | 8 ++++++++ clis/docs.aws.amazon.com.json | 8 ++++++++ clis/learn.microsoft.com.json | 8 ++++++++ 4 files changed, 27 insertions(+) create mode 100644 clis/cloud.google.com.json create mode 100644 clis/docs.aws.amazon.com.json create mode 100644 clis/learn.microsoft.com.json diff --git a/README.md b/README.md index 0309f1f..b5c65fb 100644 --- a/README.md +++ b/README.md @@ -87,6 +87,9 @@ Works on any mostly-static site with no per-site setup: news sites, blogs, docum | Stack Overflow | stackoverflow.com (via Atom feeds) | `question `, `tag `, `user `, `recent` | | Yahoo Finance | finance.yahoo.com | `quote `, `news `, `history `, `lookup `, `markets`, `gainers`, `losers`, `trending` | | YouTube | youtube.com | `video `, `channel ` | +| AWS docs | docs.aws.amazon.com | `guide `, `page `, `cli ` | +| Google Cloud docs | cloud.google.com (via docs.cloud.google.com) | `docs `, `page `, `gcloud ` | +| Microsoft Learn | learn.microsoft.com | `azure `, `doc `, `cli ` | A few of these (X, Stack Overflow, YouTube) read pages that look login-gated or JS-only from the outside, by finding the server-rendered HTML, feed, or inline data the page already ships without a login. Not supported yet: pages that only render with JavaScript, sites behind logins, and sites with hard bot challenges that expose no feed. diff --git a/clis/cloud.google.com.json b/clis/cloud.google.com.json new file mode 100644 index 0000000..43730b1 --- /dev/null +++ b/clis/cloud.google.com.json @@ -0,0 +1,8 @@ +{ + "domain": "cloud.google.com", + "commands": { + "docs": { "open": "https://docs.cloud.google.com/{product}/docs", "args": ["product"] }, + "page": { "open": "https://docs.cloud.google.com/{product}/docs/{page}", "args": ["product", "page"] }, + "gcloud": { "open": "https://docs.cloud.google.com/sdk/gcloud/reference/{command}", "args": ["command"] } + } +} diff --git a/clis/docs.aws.amazon.com.json b/clis/docs.aws.amazon.com.json new file mode 100644 index 0000000..3571ec1 --- /dev/null +++ b/clis/docs.aws.amazon.com.json @@ -0,0 +1,8 @@ +{ + "domain": "docs.aws.amazon.com", + "commands": { + "guide": { "open": "https://docs.aws.amazon.com/{service}/latest/userguide/{page}.html", "args": ["service", "page"] }, + "page": { "open": "https://docs.aws.amazon.com/{service}/latest/{guide}/{page}.html", "args": ["service", "guide", "page"] }, + "cli": { "open": "https://docs.aws.amazon.com/cli/latest/reference/{command}/", "args": ["command"] } + } +} diff --git a/clis/learn.microsoft.com.json b/clis/learn.microsoft.com.json new file mode 100644 index 0000000..39bc73a --- /dev/null +++ b/clis/learn.microsoft.com.json @@ -0,0 +1,8 @@ +{ + "domain": "learn.microsoft.com", + "commands": { + "azure": { "open": "https://learn.microsoft.com/en-us/azure/{page}", "args": ["page"] }, + "doc": { "open": "https://learn.microsoft.com/en-us/{path}", "args": ["path"] }, + "cli": { "open": "https://learn.microsoft.com/en-us/cli/azure/{command}", "args": ["command"] } + } +} From e8f2b6172d9f7c4655162c779d7240febc8dfab5 Mon Sep 17 00:00:00 2001 From: only-cli Date: Sat, 22 Aug 2026 12:29:56 -0400 Subject: [PATCH 2/2] feat: add docs search to the cloud provider CLIs All three providers render their own docs search client-side, so distilling the search page yields only nav chrome. Microsoft Learn is the exception underneath: its public RSS search endpoint serves real results as a feed, which the engine already renders (same route as Stack Overflow). AWS and Google Cloud expose search only as JSON (#3), so until the engine renders JSON their search goes through DuckDuckGo HTML with a baked-in site: filter, the same endpoint the duckduckgo.com CLI already relies on. Bing was tried first for that job and rejected: it silently drops the site: operator on some queries. Verified live: the Learn RSS endpoint returns titled results for "app service deploy"; the DuckDuckGo route returns real docs.aws.amazon.com pages for "lambda timeout" (it can answer with a rate-limit challenge under rapid-fire automated use, noted in README). --- README.md | 8 ++++---- clis/cloud.google.com.json | 3 ++- clis/docs.aws.amazon.com.json | 3 ++- clis/learn.microsoft.com.json | 3 ++- 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index b5c65fb..194dc0f 100644 --- a/README.md +++ b/README.md @@ -87,11 +87,11 @@ Works on any mostly-static site with no per-site setup: news sites, blogs, docum | Stack Overflow | stackoverflow.com (via Atom feeds) | `question `, `tag `, `user `, `recent` | | Yahoo Finance | finance.yahoo.com | `quote `, `news `, `history `, `lookup `, `markets`, `gainers`, `losers`, `trending` | | YouTube | youtube.com | `video `, `channel ` | -| AWS docs | docs.aws.amazon.com | `guide `, `page `, `cli ` | -| Google Cloud docs | cloud.google.com (via docs.cloud.google.com) | `docs `, `page `, `gcloud ` | -| Microsoft Learn | learn.microsoft.com | `azure `, `doc `, `cli ` | +| AWS docs | docs.aws.amazon.com (search via DuckDuckGo) | `guide `, `page `, `cli `, `search ` | +| Google Cloud docs | cloud.google.com (via docs.cloud.google.com, search via DuckDuckGo) | `docs `, `page `, `gcloud `, `search ` | +| Microsoft Learn | learn.microsoft.com (search via its RSS API) | `azure `, `doc `, `cli `, `search ` | -A few of these (X, Stack Overflow, YouTube) read pages that look login-gated or JS-only from the outside, by finding the server-rendered HTML, feed, or inline data the page already ships without a login. Not supported yet: pages that only render with JavaScript, sites behind logins, and sites with hard bot challenges that expose no feed. +A few of these (X, Stack Overflow, YouTube, Microsoft Learn search) read pages that look login-gated or JS-only from the outside, by finding the server-rendered HTML, feed, or inline data the page already ships without a login. AWS and Google Cloud render docs search purely client-side with no feed, so their `search` goes through DuckDuckGo with a baked-in `site:` filter instead. Not supported yet: pages that only render with JavaScript, sites behind logins, and sites with hard bot challenges that expose no feed. Want a website on that list? Open a pull request, or an issue naming the site — see [CONTRIBUTING.md](CONTRIBUTING.md). diff --git a/clis/cloud.google.com.json b/clis/cloud.google.com.json index 43730b1..f2efb78 100644 --- a/clis/cloud.google.com.json +++ b/clis/cloud.google.com.json @@ -3,6 +3,7 @@ "commands": { "docs": { "open": "https://docs.cloud.google.com/{product}/docs", "args": ["product"] }, "page": { "open": "https://docs.cloud.google.com/{product}/docs/{page}", "args": ["product", "page"] }, - "gcloud": { "open": "https://docs.cloud.google.com/sdk/gcloud/reference/{command}", "args": ["command"] } + "gcloud": { "open": "https://docs.cloud.google.com/sdk/gcloud/reference/{command}", "args": ["command"] }, + "search": { "open": "https://html.duckduckgo.com/html/?q=site%3Acloud.google.com+{query}", "args": ["query"] } } } diff --git a/clis/docs.aws.amazon.com.json b/clis/docs.aws.amazon.com.json index 3571ec1..b9aec73 100644 --- a/clis/docs.aws.amazon.com.json +++ b/clis/docs.aws.amazon.com.json @@ -3,6 +3,7 @@ "commands": { "guide": { "open": "https://docs.aws.amazon.com/{service}/latest/userguide/{page}.html", "args": ["service", "page"] }, "page": { "open": "https://docs.aws.amazon.com/{service}/latest/{guide}/{page}.html", "args": ["service", "guide", "page"] }, - "cli": { "open": "https://docs.aws.amazon.com/cli/latest/reference/{command}/", "args": ["command"] } + "cli": { "open": "https://docs.aws.amazon.com/cli/latest/reference/{command}/", "args": ["command"] }, + "search": { "open": "https://html.duckduckgo.com/html/?q=site%3Adocs.aws.amazon.com+{query}", "args": ["query"] } } } diff --git a/clis/learn.microsoft.com.json b/clis/learn.microsoft.com.json index 39bc73a..7e1e551 100644 --- a/clis/learn.microsoft.com.json +++ b/clis/learn.microsoft.com.json @@ -3,6 +3,7 @@ "commands": { "azure": { "open": "https://learn.microsoft.com/en-us/azure/{page}", "args": ["page"] }, "doc": { "open": "https://learn.microsoft.com/en-us/{path}", "args": ["path"] }, - "cli": { "open": "https://learn.microsoft.com/en-us/cli/azure/{command}", "args": ["command"] } + "cli": { "open": "https://learn.microsoft.com/en-us/cli/azure/{command}", "args": ["command"] }, + "search": { "open": "https://learn.microsoft.com/api/search/rss?search={query}&locale=en-us", "args": ["query"] } } }