| name | crossref-lookup |
| description | Academic publication metadata retrieval and citation generation using the Crossref REST API. Now includes unified citation_lookup.py tool supporting the convenient bib.doi format. Use this skill when users ask to look up DOIs, search for academic papers, retrieve journal article metadata, find publication information, generate citations for research papers, get author information for academic works, search by ISSN, or retrieve bibliographic data. Triggers include queries like look up DOI, search for papers by author, find article metadata, cite this paper, generate citation for DOI, search Crossref, get publication details, or bib.doi with a DOI number. |
Crossref Lookup Skill
This skill provides Python scripts and reference documentation for retrieving academic publication metadata using the Crossref REST API.
Quick Start
Unified Citation Lookup (NEW!)
Use scripts/citation_lookup.py for the easiest way to get both APA7 and BibTeX citations:
python scripts/citation_lookup.py bib.doi == 10.1038/s41586-025-09663-y
python scripts/citation_lookup.py bib.doi == https://doi.org/10.1038/s41586-025-09663-y
python scripts/citation_lookup.py 10.1038/nature12373
python scripts/citation_lookup.py https://doi.org/10.1038/nature12373
This command will:
- Look up the publication in Crossref
- Display complete publication information
- Generate APA 7th edition citation
- Generate BibTeX entry
- Save both citations to files automatically
Look Up by DOI
Use scripts/doi_lookup.py to get complete metadata for a publication:
python scripts/doi_lookup.py 10.1038/nature12373
python scripts/doi_lookup.py "10.1371/journal.pone.0161344"
Search Publications
Use scripts/search_works.py to search for academic works:
python scripts/search_works.py "machine learning" --rows 10
python scripts/search_works.py "climate change" --filter "from-pub-date:2020"
Search by Author
Use scripts/search_by_author.py to find publications by specific authors:
python scripts/search_by_author.py "Jane Smith"
python scripts/search_by_author.py "Einstein" --rows 20
Generate APA7 Citation
Use scripts/generate_apa7_citation.py to create citations from DOIs:
python scripts/generate_apa7_citation.py 10.1038/nature12373
Generate BibTeX
Use scripts/generate_bibtex.py to create reference manager entries:
python scripts/generate_bibtex.py 10.1038/nature12373
Get Journal Information
Use scripts/journal_lookup.py to retrieve journal metadata by ISSN:
python scripts/journal_lookup.py 0028-0836
python scripts/journal_lookup.py "1476-4687"
Script Reference
citation_lookup.py (UNIFIED TOOL)
Purpose: All-in-one DOI lookup with APA7 and BibTeX generation
Usage: python scripts/citation_lookup.py [bib.doi ==] <doi>
Examples:
python scripts/citation_lookup.py bib.doi == 10.1038/s41586-025-09663-y
python scripts/citation_lookup.py bib.doi == https://doi.org/10.1038/s41586-025-09663-y
python scripts/citation_lookup.py 10.1038/nature12373
python scripts/citation_lookup.py https://doi.org/10.1038/nature12373
Returns:
- Complete publication information
- APA 7th edition citation (printed and saved to file)
- BibTeX entry (printed and saved to .bib file)
- JSON output with all data
Files Created:
<doi>_apa7.txt- APA citation with metadata<doi>.bib- BibTeX entry ready for Zotero/LaTeX
Special Format: Supports bib.doi == <doi> format for convenience
Accepts: DOI with or without URL prefix (https://doi.org/)
doi_lookup.py
Purpose: Retrieve complete metadata for a publication by DOI
Usage: python scripts/doi_lookup.py <doi>
Returns: JSON with full publication metadata including title, authors, journal, dates, references, and more
Accepts: Any valid DOI (with or without the "https://doi.org/" prefix)
search_works.py
Purpose: Search Crossref database for publications
Usage: python scripts/search_works.py "<query>" [--rows N] [--filter "filter_params"]
Returns: List of matching works with key metadata
Query Tips:
- Plain text searches across titles, abstracts, and full text
- Use
--filterfor advanced filtering (date ranges, publication types, etc.) - Use
--rowsto control number of results (default: 10)
search_by_author.py
Purpose: Find publications by author name
Usage: python scripts/search_by_author.py "<author_name>" [--rows N]
Returns: Publications authored by the specified person
Note: Searches author fields in Crossref metadata
generate_apa7_citation.py
Purpose: Generate APA 7th edition citations from DOIs
Usage: python scripts/generate_apa7_citation.py <doi>
Returns: Formatted APA7 citation with structured data
Formats: Journal articles, books, conference papers, and more
generate_bibtex.py
Purpose: Generate Zotero-compatible BibTeX entries from DOIs
Usage: python scripts/generate_bibtex.py <doi>
Returns: Complete BibTeX entry with all available fields
Entry Types: @article, @book, @inproceedings, etc.
journal_lookup.py
Purpose: Get journal information by ISSN
Usage: python scripts/journal_lookup.py <issn>
Returns: Journal title, publisher, subjects, and other metadata
Accepts: ISSN (print or electronic)
Advanced Usage
For detailed API documentation and advanced features, read:
references/api_reference.md- Complete Crossref API documentationreferences/response_schemas.md- JSON response structure examplesreferences/citation_formats.md- Citation format guide with examplesreferences/filters_guide.md- Advanced search filters and parameters
These references provide information about:
- All available API endpoints
- Query parameters and filters
- Rate limiting and etiquette
- Response field definitions
- Citation formatting rules
- Advanced search techniques
Dependencies
All scripts require the requests library:
pip install requests --break-system-packages
Best Practices
- Use polite pool - Always include a
mailtoparameter in API requests for better rate limits - Respect rate limits - Free tier: 50 requests/second, Polite pool: higher limits
- Handle errors gracefully - DOIs may not exist, API may be slow
- Use appropriate timeouts - All scripts use 15-second timeouts for reliability
- Cache results when making multiple requests for the same data
- Read references for advanced filtering and search techniques
- Verify citations - Always check accuracy before using in publications
API Etiquette
The Crossref API is free but follows an etiquette policy:
- Include your email in requests (mailto parameter) for better service
- Don't make excessive requests
- Cache responses when possible
- Use specific queries rather than broad searches
- Be a good API citizen!