Builtin plugins
Chive includes 24 builtin plugins for metadata enrichment, author verification, and backlink tracking.
Metadata enrichment
Semantic Scholar
ID: pub.chive.plugin.semantic-scholar
Fetches citation data, author profiles, and SPECTER2 recommendations from Semantic Scholar.
// Available methods
await plugin.getPaper(s2Id);
await plugin.getPaperByDoi(doi);
await plugin.getPaperByArxiv(arxivId);
await plugin.getAuthor(authorId);
await plugin.searchAuthors(query);
await plugin.searchPapers(query);
await plugin.getCitations(paperId, { limit: 100 });
await plugin.getReferences(paperId, { limit: 100 });
await plugin.getRecommendations(paperId, { limit: 10 });
Configuration:
| Variable | Default | Description |
|---|---|---|
S2_API_KEY | (none) | API key for higher rate limits |
S2_CACHE_TTL | 604800 | Cache TTL (7 days) |
S2_RATE_LIMIT | 3000 | Delay between requests (ms) |
OpenAlex
ID: pub.chive.plugin.openalex
Fetches work metadata, concepts, and institution affiliations from OpenAlex.
await plugin.getWork(openAlexId);
await plugin.getWorkByDoi(doi);
await plugin.getAuthorByOrcid(orcid);
await plugin.autocompleteAuthors(query);
await plugin.searchWorks(query, { filters });
await plugin.classifyText(text);
await plugin.getRelatedWorks(workId);
await plugin.getWorksBatch(ids); // Up to 50
Configuration:
| Variable | Default | Description |
|---|---|---|
OPENALEX_EMAIL | (required) | Email for polite pool |
OPENALEX_CACHE_TTL | 604800 | Cache TTL (7 days) |
CrossRef
ID: pub.chive.plugin.crossref
Fetches DOI metadata and reference lists from CrossRef.
await plugin.getWork(doi);
await plugin.searchWorks(query);
await plugin.getReferences(doi);
await plugin.getCitationCount(doi);
Configuration:
| Variable | Default | Description |
|---|---|---|
CROSSREF_EMAIL | (required) | Email for polite pool |
CROSSREF_CACHE_TTL | 2592000 | Cache TTL (30 days) |
Wikidata
ID: pub.chive.plugin.wikidata
Links entities to Wikidata for multilingual labels and external identifiers.
await plugin.getEntity(qid);
await plugin.search(query, { language: 'en' });
await plugin.getSparqlResults(sparqlQuery);
Author verification
ORCID
ID: pub.chive.plugin.orcid
Verifies author identity by checking ORCID profiles.
await plugin.fetchOrcidProfile(orcidId);
await plugin.searchAuthors(name);
await plugin.isValidOrcid(orcidId); // Validates format and checksum
The plugin validates ORCIDs using the Luhn checksum algorithm.
Configuration:
| Variable | Default | Description |
|---|---|---|
ORCID_CACHE_TTL | 86400 | Cache TTL (24 hours) |
ROR
ID: pub.chive.plugin.ror
Verifies institution affiliations using the Research Organization Registry.
await plugin.getOrganization(rorId);
await plugin.search(query);
await plugin.autocomplete(prefix);
Eprint archives
arXiv
ID: pub.chive.plugin.arxiv
Imports eprints from arXiv using OAI-PMH and the Atom API.
// Bulk import via OAI-PMH
for await (const eprint of plugin.fetchEprints()) {
// Process eprints
}
// Search via Atom API
const results = await plugin.search(query);
// Get single paper
const paper = await plugin.fetchPaperDetails(arxivId);
Configuration:
| Variable | Default | Description |
|---|---|---|
ARXIV_CATEGORIES | cs.CL,cs.AI,cs.LG | Default categories |
ARXIV_RATE_LIMIT | 3000 | Delay between requests (ms) |
LingBuzz
ID: pub.chive.plugin.lingbuzz
Imports linguistics eprints from LingBuzz.
for await (const eprint of plugin.fetchEprints()) {
// Process eprints
}
const results = await plugin.search(query);
Uses RSS feed and web scraping with a 10-second delay between requests.
Semantics archive
ID: pub.chive.plugin.semanticsarchive
Imports semantics eprints from Semantics Archive.
for await (const eprint of plugin.fetchEprints()) {
// Process eprints
}
Uses web scraping with a 5-second delay between requests.
PsyArXiv
ID: pub.chive.plugin.psyarxiv
Imports psychology eprints from PsyArXiv via the OSF API.
OpenReview
ID: pub.chive.plugin.openreview
Imports conference papers from OpenReview with peer review metadata.
for await (const eprint of plugin.fetchEprints({ venue })) {
// Process submissions
}
const results = await plugin.search(query);
Supports OAuth authentication for author profile verification.
Data and software
Zenodo
ID: pub.chive.plugin.zenodo
Links eprints to software and datasets archived on Zenodo.
await plugin.getRecord(doi);
await plugin.search(query, { type: 'dataset' });
Figshare
ID: pub.chive.plugin.figshare
Links eprints to supplementary materials on Figshare.
Dryad
ID: pub.chive.plugin.dryad
Links eprints to research data on Dryad.
Software heritage
ID: pub.chive.plugin.software-heritage
Links eprints to archived source code on Software Heritage.
OSF
ID: pub.chive.plugin.osf
Links eprints to Open Science Framework projects.
Code repositories
GitHub
ID: pub.chive.plugin.github
Detects and links GitHub repositories mentioned in eprints.
await plugin.getRepositoryInfo(owner, repo);
await plugin.detectRepositories(eprint);
Extracts repository metadata including stars, forks, license, and language.
GitLab
ID: pub.chive.plugin.gitlab
Links eprints to GitLab repositories.
Subject classification
FAST
ID: pub.chive.plugin.fast
Searches FAST (Faceted Application of Subject Terminology) headings.
await plugin.searchSubjects(query);
await plugin.getSubject(fastId);
FAST provides 1.7 million controlled vocabulary terms from OCLC.
DOI registration
DOI registration
ID: pub.chive.plugin.doi
Registers DOIs for eprints via DataCite.
await plugin.registerDoi(eprint);
await plugin.updateDoi(doi, metadata);
Requires DataCite credentials.
Backlink tracking
These plugins track references to Chive eprints from ATProto apps.
Bluesky backlinks
ID: pub.chive.plugin.bluesky-backlinks
Tracks references from Bluesky posts (app.bsky.feed.post).
Detects embedded eprint links and external URLs pointing to Chive.
Cosmik backlinks
ID: pub.chive.plugin.cosmik-backlinks
Tracks references to Chive eprints from Cosmik cards and collections (network.cosmik.card).
Leaflet backlinks
ID: pub.chive.plugin.leaflet-backlinks
Tracks references from Leaflet semantic annotations.
WhiteWind backlinks
ID: pub.chive.plugin.whitewind-backlinks
Tracks references from WhiteWind research notes.
Plugin dependencies
Some plugins depend on others:
If optional plugins are unavailable, the service falls back to local data.