# Freesearch Search

> Run the lit-review orchestrator free index search channel against keyless OpenAlex, Crossref, and Semantic Scholar keyword-search endpoints. Use when the user invokes the free search channel, asks for keyless scholarly index search, or needs Stage 4e fallback discovery without SearchAPI, Gemini, or Undermind credentials.

- Skill: `kennethkhoocy/freesearch-search` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add kennethkhoocy/freesearch-search`
- Raw SKILL.md: https://api.skillmd.com/api/skills/kennethkhoocy/freesearch-search/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Product & Planning
- Author: kennethkhoocy (https://skillmd.com/u/kennethkhoocy)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/kennethkhoocy/freesearch-search

---


# Free Index Search channel (Stage 4e) — keyless OpenAlex / Crossref / Semantic Scholar

A zero-key discovery channel: it runs the Stage-0 query list against the **free,
keyless keyword-search endpoints** of OpenAlex, Crossref, and Semantic Scholar and
normalizes the real records into the pipeline schema. Together with the agent
web-search channel (Stage 4d) it is the "only Claude Code" search fallback — no
search account or API key required.

Unlike web search, this is a plain subprocess (it calls keyless HTTP APIs), so it
runs the same way in any context.

## When to use

- The user has no `SEARCHAPI_API_KEY` / `GEMINI_API_KEY` / Undermind login — this is
  the keyless search backbone, OR
- You want extra grounded, clean-metadata coverage from the scholarly indexes
  alongside the other channels.

Run it in parallel with whatever else is available; its output merges at dedup.

## Recipe

Use the same Stage-0 query list Google Scholar uses:
```bash
python freesearch-search/scripts/freesearch_search.py \
    --queries-file OUT/scholar_queries.json -o OUT/stage4e_freesearch.json
```
Or a single query with `--query "..."`. Options: `--per-query N` (default 20) and
`--sources openalex,crossref,semanticscholar` (any subset). It writes
`stage4e_freesearch.json` (+ `.ris`) with `source` set per index, deduped across
indexes by DOI then title. The `stage[0-9]*.json` dedup glob picks it up
automatically.

## Keys

None required. OpenAlex and Crossref use the polite pool via a mailto (set
`LITREVIEW_CONTACT_EMAIL` to use your own contact). If present, `OPENALEX_API_KEY`
and `SEMANTIC_SCHOLAR_API_KEY` are used only to raise rate limits. It makes no LLM
API calls.

## Anti-hallucination

Every hit is a real index record, so there is nothing to fabricate — relevance, not
existence, is the only variable, and screening handles relevance. Stage 5b
verification still confirms each paper downstream. The keyless Semantic Scholar tier
is rate-limited, so it is queried with a short delay and skipped gracefully on a 429.

