# Keenable Search

Keyless web search and page fetch via Keenable.

- Repository: https://github.com/wanshuiyin/Auto-claude-code-research-in-sleep (18443 stars)
- Category: Engineering
- License: MIT
- Last updated: 2026-11-01
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add wanshuiyin/Auto-claude-code-research-in-sleep --skill keenable-search -g -a claude-code -y`
Codex: `npx skills add wanshuiyin/Auto-claude-code-research-in-sleep --skill keenable-search -g -a codex -y`
Cursor: `npx skills add wanshuiyin/Auto-claude-code-research-in-sleep --skill keenable-search -g -a cursor -y`
Gemini CLI: `npx skills add wanshuiyin/Auto-claude-code-research-in-sleep --skill keenable-search -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add wanshuiyin/Auto-claude-code-research-in-sleep`

## Description

Keyless web search and page fetch via Keenable. Use when user says "keenable search", "web search without an API key", "fetch this page as markdown", or needs broad web results beyond academic databases (arXiv, Semantic Scholar) with no search API key set up.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Keenable Web Search

Search query: $ARGUMENTS

## Role & Positioning

Keenable is a **broad web search** source that works without an API key or extra Python packages:

| Skill | Best for |
|------|----------|
| `/arxiv` | Direct preprint search and PDF download |
| `/semantic-scholar` | Published venue papers (IEEE, ACM, Springer), citation counts |
| `/exa-search` | Broad web search with content extraction (highlights, summaries); needs `EXA_API_KEY` |
| `/keenable-search` | Broad web search with a page-text snippet per result, plus fetching a known URL as markdown; no key needed |

Use Keenable when you need results beyond academic databases (blogs, docs, project pages, news) without setting up a search API key, or when you want a known page as clean markdown.

## Constants

- **KEENABLE_FETCHER**: canonical name `keenable_search.py`, resolved per
  [`shared-references/integration-contract.md`](../shared-references/integration-contract.md) §2
  (Policy D1: standalone `/keenable-search` has no documented fallback,
  so an unresolved helper terminates with an explicit error).
- **MAX_RESULTS = 10**: Default number of results to return (1-50).

> Overrides (append to arguments):
> - `/keenable-search "RAG pipelines", max: 5` (top 5 results)
> - `/keenable-search "diffusion models", site: arxiv.org` (one domain only)
> - `/keenable-search "foundation models", start date: 2025-01-01` (recent pages only)
> - `/keenable-search "transformer", max chars: 8000` (longer snippets)
> - `/keenable-search "https://arxiv.org/abs/2209.00796", fetch` (the page as markdown)

## Setup

Nothing to install and no account needed: the helper uses only the Python
standard library and calls Keenable's public endpoints, which are
rate-limited per IP.

Optional, for higher rate limits:
```bash
export KEENABLE_API_KEY=your-key-here
```

Create a key in the [Keenable console](https://app.keenable.ai/console).

## Workflow

### Step 1: Parse Arguments

The rest: https://github.com/wanshuiyin/Auto-claude-code-research-in-sleep/blob/HEAD/skills/keenable-search/SKILL.md
