crossref-search

Academic metadata search via CrossRef API. Use when: user needs DOI resolution, citation counts, journal metadata, or publisher info. NOT for: full-text access or downloading papers.

564 stars

Best use case

crossref-search is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Academic metadata search via CrossRef API. Use when: user needs DOI resolution, citation counts, journal metadata, or publisher info. NOT for: full-text access or downloading papers.

Teams using crossref-search should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/crossref-search/SKILL.md --create-dirs "https://raw.githubusercontent.com/beita6969/ScienceClaw/main/skills/crossref-search/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/crossref-search/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How crossref-search Compares

Feature / Agentcrossref-searchStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Academic metadata search via CrossRef API. Use when: user needs DOI resolution, citation counts, journal metadata, or publisher info. NOT for: full-text access or downloading papers.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# CrossRef Search

Academic metadata search and DOI resolution via the public CrossRef REST API.

## When to Use

- Resolving a DOI to get full citation metadata
- Searching for papers by title, author, or keywords
- Looking up journal ISSN metadata or publisher info
- Finding citation counts and reference lists
- Retrieving funder information for grants/awards

## When NOT to Use

- Full-text access or downloading papers (use publisher sites)
- Preprint search (use arxiv-search)
- Biomedical literature (use pubmed-search)
- Author profile pages or h-index (use openalex-search)

## DOI Resolution

```bash
curl -s "https://api.crossref.org/works/10.1038/nature12373" | python3 -c "
import sys, json
data = json.load(sys.stdin)['message']
title = data.get('title', [''])[0]
authors = ', '.join(f\"{a.get('given','')} {a.get('family','')}\" for a in data.get('author', []))
journal = data.get('container-title', [''])[0]
cited = data.get('is-referenced-by-count', 0)
print(f'Title: {title}')
print(f'Authors: {authors}')
print(f'Journal: {journal} | Citations: {cited}')
"
```

## Works Search

```bash
# Search by query terms
curl -s "https://api.crossref.org/works?query=machine+learning+protein+folding&rows=5&mailto=user@example.com" | python3 -c "
import sys, json
data = json.load(sys.stdin)['message']
for item in data['items']:
    title = item.get('title', [''])[0]
    doi = item.get('DOI', '')
    cited = item.get('is-referenced-by-count', 0)
    print(f'{title}')
    print(f'  DOI: {doi} | Citations: {cited}')
"

# Filter by date, type, and sort by citations
curl -s "https://api.crossref.org/works?query=CRISPR&filter=from-pub-date:2023-01-01,type:journal-article&rows=10&sort=is-referenced-by-count&order=desc&mailto=user@example.com"

# Search by author
curl -s "https://api.crossref.org/works?query.author=Jennifer+Doudna&rows=10&sort=published&order=desc&mailto=user@example.com"
```

## Journal Lookup

```bash
# Search journals by title
curl -s "https://api.crossref.org/journals?query=nature+biotechnology&rows=5" | python3 -c "
import sys, json
for j in json.load(sys.stdin)['message']['items']:
    print(f\"{j['title']} (ISSN: {', '.join(j.get('ISSN', []))})\")
"

# Get journal metadata by ISSN
curl -s "https://api.crossref.org/journals/0028-0836"

# Recent works from a journal
curl -s "https://api.crossref.org/journals/0028-0836/works?rows=5&sort=published&order=desc"
```

## Funder Search

```bash
curl -s "https://api.crossref.org/funders?query=national+institutes+of+health&rows=5" | python3 -c "
import sys, json
for f in json.load(sys.stdin)['message']['items']:
    print(f\"{f['name']} (ID: {f['id']})\")
"

# Works funded by a specific funder
curl -s "https://api.crossref.org/funders/100000002/works?rows=5&sort=is-referenced-by-count&order=desc"
```

## Reference Lists

```bash
curl -s "https://api.crossref.org/works/10.1038/nature12373" | python3 -c "
import sys, json
refs = json.load(sys.stdin)['message'].get('reference', [])
for r in refs[:10]:
    doi = r.get('DOI', 'no DOI')
    text = r.get('unstructured', r.get('article-title', 'N/A'))
    print(f'  [{doi}] {text[:100]}')
"
```

## Filters and Pagination

Filters: `type:journal-article`, `from-pub-date:YYYY-MM-DD`, `until-pub-date:YYYY-MM-DD`,
`has-abstract:true`, `is-referenced-by-count:>100`, `funder:FUNDER_ID`.

Sorting: `sort=published|is-referenced-by-count|relevance`, `order=asc|desc`.

Pagination: `rows=N` (max 1000), `offset=N`, or `cursor=*` for deep paging.

## Best Practices

1. Add `mailto=user@example.com` to join the polite pool (faster, more reliable).
2. URL-encode query parameters (spaces as `+` or `%20`).
3. Use `select=DOI,title,author` to reduce payload size.
4. Use `cursor=*` pagination for result sets larger than 10,000 items.
5. Cache DOI resolution results; metadata changes infrequently.

## Zero-Hallucination Rule

NEVER fabricate results from training data. Every paper title, author, DOI, PMID, citation count, and metadata detail presented to the user MUST come from an actual API response in this conversation. If the API returns no results or partial data, report exactly what was returned. Do not "fill in" missing details from memory.

Related Skills

wikipedia-search

564
from beita6969/ScienceClaw

Search and fetch structured content from Wikipedia using the MediaWiki API for reliable, encyclopedic information

social-science-research

564
from beita6969/ScienceClaw

Orchestrates a social science research workflow from literature review through data collection, text analysis, statistical modeling, and report generation. Use when conducting empirical social science research, policy analysis, or mixed-methods studies. NOT for pure natural science analysis or clinical trial data.

search-strategy

564
from beita6969/ScienceClaw

COPYRIGHT NOTICE

research-reflection

564
from beita6969/ScienceClaw

Reflect on completed research tasks to improve future performance. Use when: a research task has just been completed and the agent should evaluate its own process, store lessons learned, or retrieve past reflections before starting new work. NOT for: active research execution or data analysis.

research-lookup

564
from beita6969/ScienceClaw

Look up current research information using the Parallel Chat API (primary) or Perplexity sonar-pro-search (academic paper searches). Automatically routes queries to the best backend. Use for finding papers, gathering research data, and verifying scientific information.

research-literature

564
from beita6969/ScienceClaw

COPYRIGHT NOTICE

research-grants

564
from beita6969/ScienceClaw

Write competitive research proposals for NSF, NIH, DOE, DARPA, and Taiwan NSTC. Agency-specific formatting, review criteria, budget preparation, broader impacts, significance statements, innovation narratives, and compliance with submission requirements.

research-ethics

564
from beita6969/ScienceClaw

Guides research ethics compliance including IRB protocol preparation, informed consent document drafting, research integrity standards, data management plans, and ethical considerations for human/animal subjects; trigger when users discuss IRB, ethical approval, consent forms, or responsible conduct of research.

pubmed-search

564
from beita6969/ScienceClaw

Search PubMed/MEDLINE for biomedical literature via NCBI E-utilities API. Use when: (1) searching medical/biomedical papers, (2) finding clinical studies, (3) querying with MeSH terms, (4) retrieving abstracts by PMID. NOT for: non-biomedical papers (use arxiv-search or semantic-scholar), full-text access (PubMed provides abstracts), or social science literature.

psychology-research

564
from beita6969/ScienceClaw

Conduct psychological research analysis including mental health, cognitive science, and behavioral studies

perplexity-search

564
from beita6969/ScienceClaw

Perform AI-powered web searches with real-time information using Perplexity models via LiteLLM and OpenRouter. This skill should be used when conducting web searches for current information, finding recent scientific literature, getting grounded answers with source citations, or accessing information beyond the model knowledge cutoff. Provides access to multiple Perplexity models including Sonar Pro, Sonar Pro Search (advanced agentic search), and Sonar Reasoning Pro through a single OpenRouter API key.

openalex-search

564
from beita6969/ScienceClaw

Open academic metadata via OpenAlex API. Use when: user needs author profiles, institution data, concept mapping, or open citation data. NOT for: full-text search or downloading papers.