@wentorai/research-plugins 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +204 -0
- package/curated/analysis/README.md +64 -0
- package/curated/domains/README.md +104 -0
- package/curated/literature/README.md +53 -0
- package/curated/research/README.md +62 -0
- package/curated/tools/README.md +87 -0
- package/curated/writing/README.md +61 -0
- package/index.ts +39 -0
- package/mcp-configs/academic-db/ChatSpatial.json +17 -0
- package/mcp-configs/academic-db/academia-mcp.json +17 -0
- package/mcp-configs/academic-db/academic-paper-explorer.json +17 -0
- package/mcp-configs/academic-db/academic-search-mcp-server.json +17 -0
- package/mcp-configs/academic-db/agentinterviews-mcp.json +17 -0
- package/mcp-configs/academic-db/all-in-mcp.json +17 -0
- package/mcp-configs/academic-db/apple-health-mcp.json +17 -0
- package/mcp-configs/academic-db/arxiv-latex-mcp.json +17 -0
- package/mcp-configs/academic-db/arxiv-mcp-server.json +17 -0
- package/mcp-configs/academic-db/bgpt-mcp.json +17 -0
- package/mcp-configs/academic-db/biomcp.json +17 -0
- package/mcp-configs/academic-db/biothings-mcp.json +17 -0
- package/mcp-configs/academic-db/catalysishub-mcp-server.json +17 -0
- package/mcp-configs/academic-db/clinicaltrialsgov-mcp-server.json +17 -0
- package/mcp-configs/academic-db/deep-research-mcp.json +17 -0
- package/mcp-configs/academic-db/dicom-mcp.json +17 -0
- package/mcp-configs/academic-db/enrichr-mcp-server.json +17 -0
- package/mcp-configs/academic-db/fec-mcp-server.json +17 -0
- package/mcp-configs/academic-db/fhir-mcp-server-themomentum.json +17 -0
- package/mcp-configs/academic-db/fhir-mcp.json +19 -0
- package/mcp-configs/academic-db/gget-mcp.json +17 -0
- package/mcp-configs/academic-db/google-researcher-mcp.json +17 -0
- package/mcp-configs/academic-db/idea-reality-mcp.json +17 -0
- package/mcp-configs/academic-db/legiscan-mcp.json +19 -0
- package/mcp-configs/academic-db/lex.json +17 -0
- package/mcp-configs/ai-platform/Adaptive-Graph-of-Thoughts-MCP-server.json +17 -0
- package/mcp-configs/ai-platform/ai-counsel.json +17 -0
- package/mcp-configs/ai-platform/atlas-mcp-server.json +17 -0
- package/mcp-configs/ai-platform/counsel-mcp.json +17 -0
- package/mcp-configs/ai-platform/cross-llm-mcp.json +17 -0
- package/mcp-configs/ai-platform/gptr-mcp.json +17 -0
- package/mcp-configs/browser/decipher-research-agent.json +17 -0
- package/mcp-configs/browser/deep-research.json +17 -0
- package/mcp-configs/browser/everything-claude-code.json +17 -0
- package/mcp-configs/browser/gpt-researcher.json +17 -0
- package/mcp-configs/browser/heurist-agent-framework.json +17 -0
- package/mcp-configs/data-platform/4everland-hosting-mcp.json +17 -0
- package/mcp-configs/data-platform/context-keeper.json +17 -0
- package/mcp-configs/data-platform/context7.json +19 -0
- package/mcp-configs/data-platform/contextstream-mcp.json +17 -0
- package/mcp-configs/data-platform/email-mcp.json +17 -0
- package/mcp-configs/note-knowledge/ApeRAG.json +17 -0
- package/mcp-configs/note-knowledge/In-Memoria.json +17 -0
- package/mcp-configs/note-knowledge/agent-memory.json +17 -0
- package/mcp-configs/note-knowledge/aimemo.json +17 -0
- package/mcp-configs/note-knowledge/biel-mcp.json +19 -0
- package/mcp-configs/note-knowledge/cognee.json +17 -0
- package/mcp-configs/note-knowledge/context-awesome.json +17 -0
- package/mcp-configs/note-knowledge/context-mcp.json +17 -0
- package/mcp-configs/note-knowledge/conversation-handoff-mcp.json +17 -0
- package/mcp-configs/note-knowledge/cortex.json +17 -0
- package/mcp-configs/note-knowledge/devrag.json +17 -0
- package/mcp-configs/note-knowledge/easy-obsidian-mcp.json +17 -0
- package/mcp-configs/note-knowledge/engram.json +17 -0
- package/mcp-configs/note-knowledge/gnosis-mcp.json +17 -0
- package/mcp-configs/note-knowledge/graphlit-mcp-server.json +19 -0
- package/mcp-configs/reference-mgr/arxiv-cli.json +17 -0
- package/mcp-configs/reference-mgr/arxiv-search-mcp.json +17 -0
- package/mcp-configs/reference-mgr/chiken.json +17 -0
- package/mcp-configs/reference-mgr/claude-scholar.json +17 -0
- package/mcp-configs/reference-mgr/devonthink-mcp.json +17 -0
- package/mcp-configs/registry.json +447 -0
- package/openclaw.plugin.json +21 -0
- package/package.json +61 -0
- package/skills/analysis/dataviz/color-accessibility-guide/SKILL.md +230 -0
- package/skills/analysis/dataviz/geospatial-viz-guide/SKILL.md +218 -0
- package/skills/analysis/dataviz/interactive-viz-guide/SKILL.md +287 -0
- package/skills/analysis/dataviz/network-visualization-guide/SKILL.md +195 -0
- package/skills/analysis/dataviz/publication-figures-guide/SKILL.md +238 -0
- package/skills/analysis/dataviz/python-dataviz-guide/SKILL.md +195 -0
- package/skills/analysis/econometrics/causal-inference-guide/SKILL.md +197 -0
- package/skills/analysis/econometrics/iv-regression-guide/SKILL.md +198 -0
- package/skills/analysis/econometrics/panel-data-guide/SKILL.md +274 -0
- package/skills/analysis/econometrics/robustness-checks/SKILL.md +250 -0
- package/skills/analysis/econometrics/stata-regression/SKILL.md +117 -0
- package/skills/analysis/econometrics/time-series-guide/SKILL.md +235 -0
- package/skills/analysis/statistics/bayesian-statistics-guide/SKILL.md +221 -0
- package/skills/analysis/statistics/hypothesis-testing-guide/SKILL.md +210 -0
- package/skills/analysis/statistics/meta-analysis-guide/SKILL.md +206 -0
- package/skills/analysis/statistics/nonparametric-tests-guide/SKILL.md +221 -0
- package/skills/analysis/statistics/power-analysis-guide/SKILL.md +240 -0
- package/skills/analysis/statistics/sem-guide/SKILL.md +231 -0
- package/skills/analysis/statistics/survival-analysis-guide/SKILL.md +195 -0
- package/skills/analysis/wrangling/missing-data-handling/SKILL.md +224 -0
- package/skills/analysis/wrangling/pandas-data-wrangling/SKILL.md +242 -0
- package/skills/analysis/wrangling/questionnaire-design-guide/SKILL.md +234 -0
- package/skills/analysis/wrangling/text-mining-guide/SKILL.md +225 -0
- package/skills/domains/ai-ml/computer-vision-guide/SKILL.md +213 -0
- package/skills/domains/ai-ml/deep-learning-papers-guide/SKILL.md +200 -0
- package/skills/domains/ai-ml/llm-evaluation-guide/SKILL.md +194 -0
- package/skills/domains/ai-ml/prompt-engineering-research/SKILL.md +233 -0
- package/skills/domains/ai-ml/reinforcement-learning-guide/SKILL.md +254 -0
- package/skills/domains/ai-ml/transformer-architecture-guide/SKILL.md +233 -0
- package/skills/domains/biomedical/clinical-research-guide/SKILL.md +232 -0
- package/skills/domains/biomedical/clinicaltrials-api/SKILL.md +177 -0
- package/skills/domains/biomedical/epidemiology-guide/SKILL.md +200 -0
- package/skills/domains/biomedical/genomics-analysis-guide/SKILL.md +270 -0
- package/skills/domains/business/market-analysis-guide/SKILL.md +112 -0
- package/skills/domains/business/strategic-management-guide/SKILL.md +154 -0
- package/skills/domains/chemistry/computational-chemistry-guide/SKILL.md +266 -0
- package/skills/domains/chemistry/retrosynthesis-guide/SKILL.md +215 -0
- package/skills/domains/cs/algorithms-complexity-guide/SKILL.md +194 -0
- package/skills/domains/cs/dblp-api/SKILL.md +129 -0
- package/skills/domains/cs/software-engineering-research/SKILL.md +218 -0
- package/skills/domains/ecology/biodiversity-data-guide/SKILL.md +296 -0
- package/skills/domains/ecology/conservation-biology-guide/SKILL.md +198 -0
- package/skills/domains/ecology/gbif-api/SKILL.md +158 -0
- package/skills/domains/ecology/inaturalist-api/SKILL.md +173 -0
- package/skills/domains/economics/behavioral-economics-guide/SKILL.md +239 -0
- package/skills/domains/economics/development-economics-guide/SKILL.md +181 -0
- package/skills/domains/economics/fred-api/SKILL.md +189 -0
- package/skills/domains/education/curriculum-design-guide/SKILL.md +144 -0
- package/skills/domains/education/learning-science-guide/SKILL.md +150 -0
- package/skills/domains/finance/financial-data-analysis/SKILL.md +152 -0
- package/skills/domains/finance/quantitative-finance-guide/SKILL.md +151 -0
- package/skills/domains/geoscience/climate-science-guide/SKILL.md +158 -0
- package/skills/domains/geoscience/gis-remote-sensing-guide/SKILL.md +129 -0
- package/skills/domains/humanities/digital-humanities-guide/SKILL.md +181 -0
- package/skills/domains/humanities/philosophy-research-guide/SKILL.md +148 -0
- package/skills/domains/law/courtlistener-api/SKILL.md +213 -0
- package/skills/domains/law/legal-research-guide/SKILL.md +250 -0
- package/skills/domains/math/linear-algebra-applications/SKILL.md +227 -0
- package/skills/domains/math/numerical-methods-guide/SKILL.md +236 -0
- package/skills/domains/math/oeis-api/SKILL.md +158 -0
- package/skills/domains/pharma/clinical-pharmacology-guide/SKILL.md +165 -0
- package/skills/domains/pharma/drug-development-guide/SKILL.md +177 -0
- package/skills/domains/physics/computational-physics-guide/SKILL.md +300 -0
- package/skills/domains/physics/nasa-ads-api/SKILL.md +150 -0
- package/skills/domains/physics/quantum-computing-guide/SKILL.md +234 -0
- package/skills/domains/social-science/social-research-methods/SKILL.md +194 -0
- package/skills/domains/social-science/survey-research-guide/SKILL.md +182 -0
- package/skills/literature/discovery/citation-alert-guide/SKILL.md +154 -0
- package/skills/literature/discovery/conference-proceedings-guide/SKILL.md +142 -0
- package/skills/literature/discovery/literature-mapping-guide/SKILL.md +175 -0
- package/skills/literature/discovery/paper-tracking-guide/SKILL.md +211 -0
- package/skills/literature/discovery/rss-paper-feeds/SKILL.md +214 -0
- package/skills/literature/discovery/semantic-scholar-recs-guide/SKILL.md +164 -0
- package/skills/literature/fulltext/doaj-api/SKILL.md +120 -0
- package/skills/literature/fulltext/interlibrary-loan-guide/SKILL.md +163 -0
- package/skills/literature/fulltext/open-access-guide/SKILL.md +183 -0
- package/skills/literature/fulltext/pmc-oai-api/SKILL.md +184 -0
- package/skills/literature/fulltext/preprint-servers-guide/SKILL.md +128 -0
- package/skills/literature/fulltext/repository-harvesting-guide/SKILL.md +207 -0
- package/skills/literature/fulltext/unpaywall-api/SKILL.md +113 -0
- package/skills/literature/metadata/altmetrics-guide/SKILL.md +132 -0
- package/skills/literature/metadata/citation-network-guide/SKILL.md +236 -0
- package/skills/literature/metadata/crossref-api/SKILL.md +133 -0
- package/skills/literature/metadata/datacite-api/SKILL.md +126 -0
- package/skills/literature/metadata/doi-resolution-guide/SKILL.md +168 -0
- package/skills/literature/metadata/h-index-guide/SKILL.md +183 -0
- package/skills/literature/metadata/journal-metrics-guide/SKILL.md +188 -0
- package/skills/literature/metadata/opencitations-api/SKILL.md +128 -0
- package/skills/literature/metadata/orcid-api/SKILL.md +136 -0
- package/skills/literature/metadata/orcid-integration-guide/SKILL.md +178 -0
- package/skills/literature/search/arxiv-api/SKILL.md +95 -0
- package/skills/literature/search/biorxiv-api/SKILL.md +123 -0
- package/skills/literature/search/boolean-search-guide/SKILL.md +199 -0
- package/skills/literature/search/citation-chaining-guide/SKILL.md +148 -0
- package/skills/literature/search/database-comparison-guide/SKILL.md +100 -0
- package/skills/literature/search/europe-pmc-api/SKILL.md +120 -0
- package/skills/literature/search/google-scholar-guide/SKILL.md +182 -0
- package/skills/literature/search/mesh-terms-guide/SKILL.md +164 -0
- package/skills/literature/search/openalex-api/SKILL.md +134 -0
- package/skills/literature/search/pubmed-api/SKILL.md +130 -0
- package/skills/literature/search/scientify-literature-survey/SKILL.md +203 -0
- package/skills/literature/search/semantic-scholar-api/SKILL.md +134 -0
- package/skills/literature/search/systematic-search-strategy/SKILL.md +214 -0
- package/skills/research/automation/ai-scientist-guide/SKILL.md +228 -0
- package/skills/research/automation/data-collection-automation/SKILL.md +248 -0
- package/skills/research/automation/research-workflow-automation/SKILL.md +266 -0
- package/skills/research/deep-research/meta-synthesis-guide/SKILL.md +174 -0
- package/skills/research/deep-research/research-cog/SKILL.md +153 -0
- package/skills/research/deep-research/scoping-review-guide/SKILL.md +217 -0
- package/skills/research/deep-research/systematic-review-guide/SKILL.md +250 -0
- package/skills/research/funding/figshare-api/SKILL.md +163 -0
- package/skills/research/funding/grant-writing-guide/SKILL.md +233 -0
- package/skills/research/funding/nsf-grant-guide/SKILL.md +206 -0
- package/skills/research/funding/open-science-guide/SKILL.md +255 -0
- package/skills/research/funding/zenodo-api/SKILL.md +174 -0
- package/skills/research/methodology/action-research-guide/SKILL.md +201 -0
- package/skills/research/methodology/experimental-design-guide/SKILL.md +236 -0
- package/skills/research/methodology/grad-school-guide/SKILL.md +182 -0
- package/skills/research/methodology/grounded-theory-guide/SKILL.md +171 -0
- package/skills/research/methodology/mixed-methods-guide/SKILL.md +208 -0
- package/skills/research/methodology/qualitative-research-guide/SKILL.md +234 -0
- package/skills/research/methodology/scientify-idea-generation/SKILL.md +222 -0
- package/skills/research/paper-review/paper-reading-assistant/SKILL.md +266 -0
- package/skills/research/paper-review/peer-review-guide/SKILL.md +227 -0
- package/skills/research/paper-review/rebuttal-writing-guide/SKILL.md +185 -0
- package/skills/research/paper-review/scientify-write-review-paper/SKILL.md +209 -0
- package/skills/tools/code-exec/jupyter-notebook-guide/SKILL.md +178 -0
- package/skills/tools/code-exec/python-reproducibility-guide/SKILL.md +341 -0
- package/skills/tools/code-exec/r-reproducibility-guide/SKILL.md +236 -0
- package/skills/tools/code-exec/sandbox-execution-guide/SKILL.md +221 -0
- package/skills/tools/diagram/mermaid-diagram-guide/SKILL.md +269 -0
- package/skills/tools/diagram/plantuml-guide/SKILL.md +397 -0
- package/skills/tools/diagram/scientific-illustration-guide/SKILL.md +225 -0
- package/skills/tools/document/anystyle-api/SKILL.md +199 -0
- package/skills/tools/document/grobid-pdf-parsing/SKILL.md +294 -0
- package/skills/tools/document/markdown-academic-guide/SKILL.md +217 -0
- package/skills/tools/document/pdf-extraction-guide/SKILL.md +321 -0
- package/skills/tools/knowledge-graph/knowledge-graph-construction/SKILL.md +306 -0
- package/skills/tools/knowledge-graph/ontology-design-guide/SKILL.md +214 -0
- package/skills/tools/knowledge-graph/rag-methodology-guide/SKILL.md +325 -0
- package/skills/tools/ocr-translate/formula-recognition-guide/SKILL.md +367 -0
- package/skills/tools/ocr-translate/handwriting-recognition-guide/SKILL.md +211 -0
- package/skills/tools/ocr-translate/latex-ocr-guide/SKILL.md +204 -0
- package/skills/tools/ocr-translate/multilingual-research-guide/SKILL.md +234 -0
- package/skills/tools/scraping/academic-web-scraping/SKILL.md +326 -0
- package/skills/tools/scraping/api-data-collection-guide/SKILL.md +301 -0
- package/skills/tools/scraping/web-scraping-ethics-guide/SKILL.md +250 -0
- package/skills/writing/citation/bibtex-management-guide/SKILL.md +246 -0
- package/skills/writing/citation/citation-style-guide/SKILL.md +248 -0
- package/skills/writing/citation/reference-manager-comparison/SKILL.md +208 -0
- package/skills/writing/citation/zotero-api/SKILL.md +188 -0
- package/skills/writing/composition/abstract-writing-guide/SKILL.md +188 -0
- package/skills/writing/composition/discussion-writing-guide/SKILL.md +194 -0
- package/skills/writing/composition/introduction-writing-guide/SKILL.md +194 -0
- package/skills/writing/composition/literature-review-writing/SKILL.md +196 -0
- package/skills/writing/composition/methods-section-guide/SKILL.md +185 -0
- package/skills/writing/composition/response-to-reviewers/SKILL.md +215 -0
- package/skills/writing/composition/scientific-writing-guide/SKILL.md +152 -0
- package/skills/writing/latex/bibliography-management-guide/SKILL.md +206 -0
- package/skills/writing/latex/latex-drawing-guide/SKILL.md +234 -0
- package/skills/writing/latex/latex-ecosystem-guide/SKILL.md +240 -0
- package/skills/writing/latex/math-typesetting-guide/SKILL.md +231 -0
- package/skills/writing/latex/overleaf-collaboration-guide/SKILL.md +211 -0
- package/skills/writing/latex/tikz-diagrams-guide/SKILL.md +211 -0
- package/skills/writing/polish/academic-translation-guide/SKILL.md +175 -0
- package/skills/writing/polish/academic-writing-refiner/SKILL.md +143 -0
- package/skills/writing/polish/ai-writing-humanizer/SKILL.md +178 -0
- package/skills/writing/polish/grammar-checker-guide/SKILL.md +184 -0
- package/skills/writing/polish/plagiarism-detection-guide/SKILL.md +167 -0
- package/skills/writing/templates/beamer-presentation-guide/SKILL.md +263 -0
- package/skills/writing/templates/conference-paper-template/SKILL.md +219 -0
- package/skills/writing/templates/thesis-template-guide/SKILL.md +200 -0
- package/skills/writing/templates/thesis-writing-guide/SKILL.md +220 -0
- package/src/tools/arxiv.ts +131 -0
- package/src/tools/crossref.ts +112 -0
- package/src/tools/openalex.ts +174 -0
- package/src/tools/pubmed.ts +166 -0
- package/src/tools/semantic-scholar.ts +108 -0
- package/src/tools/unpaywall.ts +58 -0
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: h-index-guide
|
|
3
|
+
description: "Understanding and calculating research impact metrics"
|
|
4
|
+
metadata:
|
|
5
|
+
openclaw:
|
|
6
|
+
emoji: "medal"
|
|
7
|
+
category: "literature"
|
|
8
|
+
subcategory: "metadata"
|
|
9
|
+
keywords: ["h-index", "impact factor", "bibliometrics", "academic metrics", "citation statistics"]
|
|
10
|
+
source: "wentor-research-plugins"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# H-Index and Research Impact Metrics Guide
|
|
14
|
+
|
|
15
|
+
Understand, calculate, and responsibly interpret bibliometric indicators including h-index, impact factor, and related metrics.
|
|
16
|
+
|
|
17
|
+
## Core Bibliometric Indicators
|
|
18
|
+
|
|
19
|
+
### H-Index
|
|
20
|
+
|
|
21
|
+
The h-index (Hirsch index) is defined as: a researcher has an h-index of h if h of their papers have each been cited at least h times.
|
|
22
|
+
|
|
23
|
+
**Example**: If a researcher has published 20 papers with citation counts [120, 80, 55, 40, 22, 18, 15, 12, 10, 8, 5, 3, 2, 2, 1, 1, 0, 0, 0, 0], their h-index is 10 (10 papers with at least 10 citations each).
|
|
24
|
+
|
|
25
|
+
```python
|
|
26
|
+
def calculate_h_index(citation_counts):
|
|
27
|
+
"""Calculate h-index from a list of citation counts."""
|
|
28
|
+
sorted_counts = sorted(citation_counts, reverse=True)
|
|
29
|
+
h = 0
|
|
30
|
+
for i, count in enumerate(sorted_counts):
|
|
31
|
+
if count >= i + 1:
|
|
32
|
+
h = i + 1
|
|
33
|
+
else:
|
|
34
|
+
break
|
|
35
|
+
return h
|
|
36
|
+
|
|
37
|
+
# Example
|
|
38
|
+
citations = [120, 80, 55, 40, 22, 18, 15, 12, 10, 8, 5, 3, 2, 2, 1, 1, 0, 0, 0, 0]
|
|
39
|
+
print(f"h-index: {calculate_h_index(citations)}") # Output: 10
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Related Author-Level Metrics
|
|
43
|
+
|
|
44
|
+
| Metric | Definition | Advantage |
|
|
45
|
+
|--------|-----------|-----------|
|
|
46
|
+
| **h-index** | h papers with >= h citations | Simple, robust to outliers |
|
|
47
|
+
| **i10-index** | Number of papers with >= 10 citations | Intuitive threshold (Google Scholar uses this) |
|
|
48
|
+
| **g-index** | Largest g such that top g papers have >= g^2 total citations | Rewards highly cited papers more |
|
|
49
|
+
| **m-quotient** | h-index divided by years since first publication | Normalizes for career length |
|
|
50
|
+
| **hI-norm** | h-index divided by average number of co-authors | Adjusts for team size |
|
|
51
|
+
|
|
52
|
+
```python
|
|
53
|
+
def calculate_g_index(citation_counts):
|
|
54
|
+
"""Calculate g-index from citation counts."""
|
|
55
|
+
sorted_counts = sorted(citation_counts, reverse=True)
|
|
56
|
+
cumulative = 0
|
|
57
|
+
g = 0
|
|
58
|
+
for i, count in enumerate(sorted_counts):
|
|
59
|
+
cumulative += count
|
|
60
|
+
if cumulative >= (i + 1) ** 2:
|
|
61
|
+
g = i + 1
|
|
62
|
+
return g
|
|
63
|
+
|
|
64
|
+
def calculate_i10_index(citation_counts):
|
|
65
|
+
"""Calculate i10-index."""
|
|
66
|
+
return sum(1 for c in citation_counts if c >= 10)
|
|
67
|
+
|
|
68
|
+
print(f"g-index: {calculate_g_index(citations)}") # Output: 19
|
|
69
|
+
print(f"i10-index: {calculate_i10_index(citations)}") # Output: 10
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Journal-Level Metrics
|
|
73
|
+
|
|
74
|
+
### Journal Impact Factor (JIF)
|
|
75
|
+
|
|
76
|
+
Published annually by Clarivate in the Journal Citation Reports (JCR). The 2-year impact factor for year Y is:
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
JIF(Y) = (Citations in Y to articles published in Y-1 and Y-2)
|
|
80
|
+
/ (Number of citable items published in Y-1 and Y-2)
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
| Metric | Provider | Window | Notable Features |
|
|
84
|
+
|--------|----------|--------|------------------|
|
|
85
|
+
| Impact Factor | Clarivate (JCR) | 2-year or 5-year | Gold standard, subscription only |
|
|
86
|
+
| CiteScore | Scopus (Elsevier) | 4-year | Free, includes all document types |
|
|
87
|
+
| SJR (Scimago) | Scopus data | 3-year | Weights citations by journal prestige (PageRank-like) |
|
|
88
|
+
| SNIP | Scopus data | 3-year | Normalizes for citation potential of each field |
|
|
89
|
+
| h5-index | Google Scholar | 5-year | Free, h-index applied to a journal |
|
|
90
|
+
|
|
91
|
+
### Looking Up Journal Metrics
|
|
92
|
+
|
|
93
|
+
```python
|
|
94
|
+
import requests
|
|
95
|
+
|
|
96
|
+
# Using the OpenAlex API to get journal/source information
|
|
97
|
+
journal_name = "Nature"
|
|
98
|
+
response = requests.get(
|
|
99
|
+
"https://api.openalex.org/sources",
|
|
100
|
+
params={"filter": f"display_name.search:{journal_name}", "per_page": 5}
|
|
101
|
+
)
|
|
102
|
+
results = response.json()["results"]
|
|
103
|
+
for source in results:
|
|
104
|
+
print(f"Name: {source['display_name']}")
|
|
105
|
+
print(f" ISSN: {source.get('issn_l', 'N/A')}")
|
|
106
|
+
print(f" Works count: {source.get('works_count', 'N/A')}")
|
|
107
|
+
print(f" Cited by count: {source.get('cited_by_count', 'N/A')}")
|
|
108
|
+
print(f" h-index: {source.get('summary_stats', {}).get('h_index', 'N/A')}")
|
|
109
|
+
print(f" 2-year mean citedness: {source.get('summary_stats', {}).get('2yr_mean_citedness', 'N/A')}")
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## Calculating Your Own H-Index
|
|
113
|
+
|
|
114
|
+
### From Google Scholar
|
|
115
|
+
|
|
116
|
+
Google Scholar profiles automatically display h-index and i10-index. No calculation needed, but coverage is the broadest (includes non-peer-reviewed sources).
|
|
117
|
+
|
|
118
|
+
### From Semantic Scholar API
|
|
119
|
+
|
|
120
|
+
```python
|
|
121
|
+
def get_author_h_index(author_name):
|
|
122
|
+
"""Calculate h-index for an author using Semantic Scholar."""
|
|
123
|
+
# Search for author
|
|
124
|
+
search_resp = requests.get(
|
|
125
|
+
"https://api.semanticscholar.org/graph/v1/author/search",
|
|
126
|
+
params={"query": author_name, "limit": 1}
|
|
127
|
+
)
|
|
128
|
+
authors = search_resp.json().get("data", [])
|
|
129
|
+
if not authors:
|
|
130
|
+
return None
|
|
131
|
+
|
|
132
|
+
author_id = authors[0]["authorId"]
|
|
133
|
+
|
|
134
|
+
# Get all papers with citation counts
|
|
135
|
+
papers_resp = requests.get(
|
|
136
|
+
f"https://api.semanticscholar.org/graph/v1/author/{author_id}/papers",
|
|
137
|
+
params={"fields": "citationCount", "limit": 1000}
|
|
138
|
+
)
|
|
139
|
+
papers = papers_resp.json().get("data", [])
|
|
140
|
+
citation_counts = [p.get("citationCount", 0) for p in papers]
|
|
141
|
+
|
|
142
|
+
return calculate_h_index(citation_counts)
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### From OpenAlex
|
|
146
|
+
|
|
147
|
+
```python
|
|
148
|
+
# OpenAlex provides h-index directly in author profiles
|
|
149
|
+
author_name = "Geoffrey Hinton"
|
|
150
|
+
response = requests.get(
|
|
151
|
+
"https://api.openalex.org/authors",
|
|
152
|
+
params={"filter": f"display_name.search:{author_name}", "per_page": 1}
|
|
153
|
+
)
|
|
154
|
+
author = response.json()["results"][0]
|
|
155
|
+
print(f"h-index: {author['summary_stats']['h_index']}")
|
|
156
|
+
print(f"i10-index: {author['summary_stats']['i10_index']}")
|
|
157
|
+
print(f"2-year mean citedness: {author['summary_stats']['2yr_mean_citedness']}")
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
## Responsible Use of Metrics
|
|
161
|
+
|
|
162
|
+
### Known Limitations
|
|
163
|
+
|
|
164
|
+
1. **Field dependence**: Average citation rates vary dramatically across disciplines. An h-index of 20 is excellent in mathematics but modest in biomedical sciences.
|
|
165
|
+
2. **Career stage bias**: The h-index monotonically increases over time. Always compare within career stage (m-quotient helps).
|
|
166
|
+
3. **Self-citation**: Some databases include self-citations in h-index calculation.
|
|
167
|
+
4. **Database coverage**: Google Scholar, Scopus, and Web of Science yield different h-index values for the same author.
|
|
168
|
+
5. **Gaming**: Metrics can be inflated through citation cartels, salami slicing, and excessive self-citation.
|
|
169
|
+
|
|
170
|
+
### DORA Declaration
|
|
171
|
+
|
|
172
|
+
The San Francisco Declaration on Research Assessment (DORA) recommends:
|
|
173
|
+
|
|
174
|
+
- Do not use journal-based metrics (such as impact factor) as a surrogate measure of individual research quality.
|
|
175
|
+
- Assess research on its own merits rather than on the basis of the journal in which it is published.
|
|
176
|
+
- Use article-level metrics alongside qualitative indicators for assessment.
|
|
177
|
+
|
|
178
|
+
### Best Practices for Reporting
|
|
179
|
+
|
|
180
|
+
- Always specify the source database and date when reporting h-index
|
|
181
|
+
- Report multiple metrics rather than relying on a single number
|
|
182
|
+
- Provide field-normalized indicators (FWCI, SNIP) when comparing across disciplines
|
|
183
|
+
- Include qualitative achievements alongside quantitative metrics in CVs and promotion cases
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: journal-metrics-guide
|
|
3
|
+
description: "Understand journal impact factors, h5-index, CiteScore, and SJR"
|
|
4
|
+
metadata:
|
|
5
|
+
openclaw:
|
|
6
|
+
emoji: "bar_chart"
|
|
7
|
+
category: "literature"
|
|
8
|
+
subcategory: "metadata"
|
|
9
|
+
keywords: ["impact factor", "journal metrics", "h5-index", "CiteScore", "SJR", "journal ranking"]
|
|
10
|
+
source: "wentor-research-plugins"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Journal Metrics Guide
|
|
14
|
+
|
|
15
|
+
A skill for understanding, comparing, and responsibly using journal-level metrics including Impact Factor, CiteScore, SJR, SNIP, h5-index, and Eigenfactor. Covers where to find each metric, how they are calculated, their limitations, and how to select appropriate journals for submission.
|
|
16
|
+
|
|
17
|
+
## Overview of Major Metrics
|
|
18
|
+
|
|
19
|
+
### Metric Comparison
|
|
20
|
+
|
|
21
|
+
| Metric | Provider | Formula Basis | Window | Free? |
|
|
22
|
+
|--------|----------|--------------|--------|-------|
|
|
23
|
+
| Impact Factor (JIF) | Clarivate (JCR) | Citations to articles / citable items | 2 years | No |
|
|
24
|
+
| 5-Year IF | Clarivate (JCR) | Same, extended window | 5 years | No |
|
|
25
|
+
| CiteScore | Scopus/Elsevier | Citations / documents | 4 years | Yes |
|
|
26
|
+
| SJR | Scopus/SCImago | Prestige-weighted citations | 3 years | Yes |
|
|
27
|
+
| SNIP | Scopus/CWTS | Citation potential normalized | 3 years | Yes |
|
|
28
|
+
| h5-index | Google Scholar | h-index of articles published in last 5 years | 5 years | Yes |
|
|
29
|
+
| Eigenfactor | Clarivate | Network citation influence | 5 years | Yes |
|
|
30
|
+
|
|
31
|
+
## How Key Metrics Are Calculated
|
|
32
|
+
|
|
33
|
+
### Journal Impact Factor
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
JIF (2024) = Citations in 2024 to articles published in 2022-2023
|
|
37
|
+
-------------------------------------------------------
|
|
38
|
+
Number of citable items published in 2022-2023
|
|
39
|
+
|
|
40
|
+
Example:
|
|
41
|
+
Journal published 200 articles in 2022-2023
|
|
42
|
+
Those articles received 1,000 citations in 2024
|
|
43
|
+
JIF = 1000 / 200 = 5.0
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### CiteScore
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
CiteScore (2024) = Citations in 2021-2024 to items published in 2021-2024
|
|
50
|
+
-----------------------------------------------------------
|
|
51
|
+
Documents published in 2021-2024
|
|
52
|
+
|
|
53
|
+
Key difference from JIF:
|
|
54
|
+
- 4-year window (vs. 2 years)
|
|
55
|
+
- Includes ALL document types in denominator (not just "citable items")
|
|
56
|
+
- More transparent calculation
|
|
57
|
+
- Freely available at scopus.com/sources
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### SJR (SCImago Journal Rank)
|
|
61
|
+
|
|
62
|
+
```python
|
|
63
|
+
def explain_sjr() -> dict:
|
|
64
|
+
"""
|
|
65
|
+
Explain the SCImago Journal Rank metric.
|
|
66
|
+
"""
|
|
67
|
+
return {
|
|
68
|
+
"concept": (
|
|
69
|
+
"SJR weights citations by the prestige of the citing journal. "
|
|
70
|
+
"A citation from Nature counts more than a citation from a "
|
|
71
|
+
"low-prestige journal."
|
|
72
|
+
),
|
|
73
|
+
"algorithm": "Based on Google PageRank applied to citation network",
|
|
74
|
+
"range": "Typically 0.1 to 20+; most journals 0.2-2.0",
|
|
75
|
+
"lookup": "scimagojr.com - free access",
|
|
76
|
+
"quartiles": {
|
|
77
|
+
"Q1": "Top 25% of journals in the subject category",
|
|
78
|
+
"Q2": "25th-50th percentile",
|
|
79
|
+
"Q3": "50th-75th percentile",
|
|
80
|
+
"Q4": "Bottom 25%"
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## Finding Journal Metrics
|
|
86
|
+
|
|
87
|
+
### Free Sources
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
Google Scholar Metrics:
|
|
91
|
+
scholar.google.com/citations?view_op=top_venues
|
|
92
|
+
- h5-index and h5-median for thousands of venues
|
|
93
|
+
- Filtered by broad discipline or specific subcategory
|
|
94
|
+
- Updated annually
|
|
95
|
+
|
|
96
|
+
SCImago Journal Rank:
|
|
97
|
+
scimagojr.com
|
|
98
|
+
- SJR, h-index, total documents, total citations
|
|
99
|
+
- Country and subject area filtering
|
|
100
|
+
- Free journal comparison tool
|
|
101
|
+
|
|
102
|
+
Scopus Sources:
|
|
103
|
+
scopus.com/sources
|
|
104
|
+
- CiteScore, SJR, SNIP for all Scopus-indexed journals
|
|
105
|
+
- CiteScore Tracker (real-time estimate)
|
|
106
|
+
- Free with Scopus account
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### Subscription Sources
|
|
110
|
+
|
|
111
|
+
```
|
|
112
|
+
Journal Citation Reports (JCR):
|
|
113
|
+
Clarivate Analytics (institutional subscription)
|
|
114
|
+
- Impact Factor, 5-Year IF, Eigenfactor
|
|
115
|
+
- Journal quartile rankings by category
|
|
116
|
+
- Cited/citing journal networks
|
|
117
|
+
|
|
118
|
+
InCites:
|
|
119
|
+
Clarivate Analytics
|
|
120
|
+
- Normalized citation impact at journal and article level
|
|
121
|
+
- Benchmarking tools
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## Responsible Use of Metrics
|
|
125
|
+
|
|
126
|
+
### Limitations and Pitfalls
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
1. Field dependence:
|
|
130
|
+
- Life sciences JIF >> Computer science JIF
|
|
131
|
+
- Never compare JIF across disciplines
|
|
132
|
+
|
|
133
|
+
2. Skewed distributions:
|
|
134
|
+
- A few highly cited papers inflate the average
|
|
135
|
+
- Median citations per article is more representative
|
|
136
|
+
|
|
137
|
+
3. Gaming and manipulation:
|
|
138
|
+
- Excessive self-citation
|
|
139
|
+
- Citation cartels between journals
|
|
140
|
+
- Review articles inflating citation counts
|
|
141
|
+
|
|
142
|
+
4. Not a measure of individual paper quality:
|
|
143
|
+
- A paper in a high-IF journal may receive zero citations
|
|
144
|
+
- A paper in a modest journal may become highly influential
|
|
145
|
+
|
|
146
|
+
5. DORA declaration:
|
|
147
|
+
- Over 2,500 organizations signed the San Francisco
|
|
148
|
+
Declaration on Research Assessment (DORA)
|
|
149
|
+
- Recommends against using JIF as a proxy for
|
|
150
|
+
individual article quality in hiring, promotion,
|
|
151
|
+
or funding decisions
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### Choosing a Journal for Submission
|
|
155
|
+
|
|
156
|
+
```python
|
|
157
|
+
def evaluate_journal_fit(metrics: dict, paper_profile: dict) -> dict:
|
|
158
|
+
"""
|
|
159
|
+
Evaluate journal suitability beyond just impact factor.
|
|
160
|
+
|
|
161
|
+
Args:
|
|
162
|
+
metrics: Journal metrics (JIF, CiteScore, acceptance rate, etc.)
|
|
163
|
+
paper_profile: Characteristics of your manuscript
|
|
164
|
+
"""
|
|
165
|
+
criteria = {
|
|
166
|
+
"scope_match": "Does the journal publish papers on this topic?",
|
|
167
|
+
"audience": "Will the right readers see this paper here?",
|
|
168
|
+
"turnaround": "What is the average time from submission to decision?",
|
|
169
|
+
"open_access": "Does the journal offer OA options? What are the APCs?",
|
|
170
|
+
"acceptance_rate": "Is the acceptance rate realistic for this paper?",
|
|
171
|
+
"indexing": "Is the journal indexed in Scopus, WoS, PubMed?",
|
|
172
|
+
"prestige": "How is this journal perceived in your specific subfield?",
|
|
173
|
+
"ethics": "Is the journal a member of COPE? Does it follow best practices?"
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
return {
|
|
177
|
+
"recommendation": "Consider all factors, not just metrics",
|
|
178
|
+
"criteria": criteria,
|
|
179
|
+
"warning": (
|
|
180
|
+
"Avoid predatory journals. Check Beall's list and "
|
|
181
|
+
"verify the journal is indexed in recognized databases."
|
|
182
|
+
)
|
|
183
|
+
}
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
## Predatory Journal Detection
|
|
187
|
+
|
|
188
|
+
Watch for these warning signs: unsolicited email invitations to submit, very rapid peer review (days), lack of indexing in Scopus or Web of Science, vague editorial board, no clear ISSN, and APCs that seem unusually low. Use resources like "Think. Check. Submit." (thinkchecksubmit.org) to verify journal legitimacy.
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: opencitations-api
|
|
3
|
+
description: "Query open citation data and reference networks via OpenCitations"
|
|
4
|
+
metadata:
|
|
5
|
+
openclaw:
|
|
6
|
+
emoji: "🔍"
|
|
7
|
+
category: "literature"
|
|
8
|
+
subcategory: "metadata"
|
|
9
|
+
keywords: ["citation statistics", "citation tracking", "citation analysis", "bibliometrics", "citation network"]
|
|
10
|
+
source: "https://opencitations.net/index/api/v1"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# OpenCitations API Guide
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
|
|
17
|
+
OpenCitations is an independent infrastructure organization dedicated to open scholarship and the publication of open bibliographic and citation data. Its main product, the OpenCitations Index of Crossref open DOI-to-DOI citations (COCI), contains over 1.6 billion citation relationships harvested from CrossRef metadata. This makes it the largest fully open citation dataset in the world.
|
|
18
|
+
|
|
19
|
+
The OpenCitations API allows researchers to programmatically access citation and reference data for any DOI in the index. This is valuable for citation network analysis, bibliometric research, impact assessment, and building literature discovery tools. Unlike proprietary citation databases (Web of Science, Scopus), OpenCitations data is fully open under a CC0 public domain dedication.
|
|
20
|
+
|
|
21
|
+
The API is free, requires no authentication, and has no published rate limits. It returns data in JSON or CSV format, making it easy to integrate into data analysis pipelines.
|
|
22
|
+
|
|
23
|
+
## Authentication
|
|
24
|
+
|
|
25
|
+
No authentication required. The OpenCitations API is fully open and free. No API key, registration, or email is needed. There are no published rate limits, but users should implement reasonable request pacing for large-scale queries. For bulk data access, download the complete COCI dataset from https://opencitations.net/download.
|
|
26
|
+
|
|
27
|
+
## Core Endpoints
|
|
28
|
+
|
|
29
|
+
### Citations: Find Papers That Cite a DOI
|
|
30
|
+
|
|
31
|
+
- **URL**: `GET https://api.opencitations.net/index/v1/citations/{doi}`
|
|
32
|
+
- **Parameters**:
|
|
33
|
+
| Param | Type | Required | Description |
|
|
34
|
+
|-------|------|----------|-------------|
|
|
35
|
+
| doi | string | Yes | The DOI of the cited paper (URL path parameter) |
|
|
36
|
+
| format | string | No | Response format header: application/json or text/csv |
|
|
37
|
+
- **Example**:
|
|
38
|
+
```bash
|
|
39
|
+
curl "https://api.opencitations.net/index/v1/citations/10.1038/nature12373"
|
|
40
|
+
```
|
|
41
|
+
- **Response**: JSON array of citation objects, each containing:
|
|
42
|
+
- `oci`: OpenCitations Identifier for the citation link
|
|
43
|
+
- `citing`: DOI of the citing paper
|
|
44
|
+
- `cited`: DOI of the cited paper (the input DOI)
|
|
45
|
+
- `creation`: date the citation was first recorded
|
|
46
|
+
- `timespan`: time between publication of citing and cited papers
|
|
47
|
+
- `journal_sc`: whether citing and cited are in the same journal (self-citation indicator)
|
|
48
|
+
- `author_sc`: whether any author appears in both papers (author self-citation indicator)
|
|
49
|
+
|
|
50
|
+
### References: Find Papers Cited by a DOI
|
|
51
|
+
|
|
52
|
+
- **URL**: `GET https://api.opencitations.net/index/v1/references/{doi}`
|
|
53
|
+
- **Parameters**:
|
|
54
|
+
| Param | Type | Required | Description |
|
|
55
|
+
|-------|------|----------|-------------|
|
|
56
|
+
| doi | string | Yes | The DOI of the paper whose references to retrieve |
|
|
57
|
+
- **Example**:
|
|
58
|
+
```bash
|
|
59
|
+
curl "https://api.opencitations.net/index/v1/references/10.1038/nature12373"
|
|
60
|
+
```
|
|
61
|
+
- **Response**: JSON array of reference objects with the same structure as citations, where `citing` is the input DOI and `cited` are the referenced papers.
|
|
62
|
+
|
|
63
|
+
### Metadata: Retrieve Paper Metadata
|
|
64
|
+
|
|
65
|
+
- **URL**: `GET https://api.opencitations.net/index/v1/metadata/{doi}`
|
|
66
|
+
- **Parameters**:
|
|
67
|
+
| Param | Type | Required | Description |
|
|
68
|
+
|-------|------|----------|-------------|
|
|
69
|
+
| doi | string | Yes | The DOI to look up (supports multiple DOIs separated by __) |
|
|
70
|
+
- **Example**:
|
|
71
|
+
```bash
|
|
72
|
+
curl "https://api.opencitations.net/index/v1/metadata/10.1038/nature12373"
|
|
73
|
+
```
|
|
74
|
+
- **Response**: JSON array with metadata including `title`, `author`, `year`, `source_title` (journal), `volume`, `issue`, `page`, `doi`, `citation_count`, and `reference`.
|
|
75
|
+
|
|
76
|
+
### Citation Count: Quick Count Lookup
|
|
77
|
+
|
|
78
|
+
- **URL**: `GET https://api.opencitations.net/index/v1/citation-count/{doi}`
|
|
79
|
+
- **Parameters**:
|
|
80
|
+
| Param | Type | Required | Description |
|
|
81
|
+
|-------|------|----------|-------------|
|
|
82
|
+
| doi | string | Yes | The DOI to check |
|
|
83
|
+
- **Example**:
|
|
84
|
+
```bash
|
|
85
|
+
curl "https://api.opencitations.net/index/v1/citation-count/10.1038/nature12373"
|
|
86
|
+
```
|
|
87
|
+
- **Response**: JSON with `count` field indicating the number of citations in the index.
|
|
88
|
+
|
|
89
|
+
## Rate Limits
|
|
90
|
+
|
|
91
|
+
No published rate limits. OpenCitations does not enforce strict API quotas. The service runs on academic infrastructure, so users should be respectful. Best practices include pacing requests to 1-5 per second for sustained queries, caching results, and using the bulk dataset download for large-scale network analyses. The API may return HTTP 503 under heavy load.
|
|
92
|
+
|
|
93
|
+
## Common Patterns
|
|
94
|
+
|
|
95
|
+
### Build a Citation Network
|
|
96
|
+
|
|
97
|
+
Map the citation relationships around a seminal paper:
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
# Get all papers citing the target paper
|
|
101
|
+
curl -s "https://api.opencitations.net/index/v1/citations/10.1145/3292500.3330672" | jq '.[].citing'
|
|
102
|
+
|
|
103
|
+
# Get all papers referenced by the target paper
|
|
104
|
+
curl -s "https://api.opencitations.net/index/v1/references/10.1145/3292500.3330672" | jq '.[].cited'
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Detect Self-Citations
|
|
108
|
+
|
|
109
|
+
Filter out self-citations when computing impact metrics:
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
curl -s "https://api.opencitations.net/index/v1/citations/10.1038/nature12373" | jq '[.[] | select(.author_sc == "no")] | length'
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### Compare Citation Counts Across Papers
|
|
116
|
+
|
|
117
|
+
Retrieve citation counts for multiple papers in a batch:
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
# Multiple DOIs separated by double underscore
|
|
121
|
+
curl -s "https://api.opencitations.net/index/v1/metadata/10.1038/nature12373__10.1126/science.aaa8685__10.1016/j.cell.2015.05.002" | jq '.[] | {doi: .doi, title: .title, citations: .citation_count}'
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## References
|
|
125
|
+
|
|
126
|
+
- Official documentation: https://opencitations.net/index/api/v1
|
|
127
|
+
- OpenCitations data model: https://opencitations.net/model
|
|
128
|
+
- COCI dataset download: https://opencitations.net/download
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: orcid-api
|
|
3
|
+
description: "Look up researcher profiles and academic identities via the ORCID registry"
|
|
4
|
+
metadata:
|
|
5
|
+
openclaw:
|
|
6
|
+
emoji: "🔍"
|
|
7
|
+
category: "literature"
|
|
8
|
+
subcategory: "metadata"
|
|
9
|
+
keywords: ["researcher ID", "ORCID", "academic identity", "academic metrics"]
|
|
10
|
+
source: "https://info.orcid.org/documentation/api-tutorial/"
|
|
11
|
+
requires:
|
|
12
|
+
env: ["ORCID_ACCESS_TOKEN"]
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# ORCID API Guide
|
|
16
|
+
|
|
17
|
+
## Overview
|
|
18
|
+
|
|
19
|
+
ORCID (Open Researcher and Contributor ID) is a nonprofit organization that provides unique, persistent digital identifiers to researchers worldwide. With over 18 million registered researchers, ORCID has become the standard for disambiguating author identities across the scholarly ecosystem. Publishers, funders, and institutions use ORCID to reliably connect researchers with their works, grants, and affiliations.
|
|
20
|
+
|
|
21
|
+
The ORCID Public API provides read access to public data in ORCID records. This includes biographical information, employment history, education, works (publications), funding, and peer review activities. The API is essential for building research information systems, verifying researcher identities, and integrating with institutional repositories.
|
|
22
|
+
|
|
23
|
+
Authentication is required. The public API uses OAuth 2.0 with a client credentials grant, which provides a bearer token for read-only access to public data. Registration is free and tokens can be obtained programmatically.
|
|
24
|
+
|
|
25
|
+
## Authentication
|
|
26
|
+
|
|
27
|
+
The ORCID Public API requires an OAuth 2.0 access token. Register for free API credentials at https://orcid.org/developer-tools and obtain a token:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
curl -X POST "https://orcid.org/oauth/token" \
|
|
31
|
+
-H "Accept: application/json" \
|
|
32
|
+
-d "client_id=YOUR_CLIENT_ID" \
|
|
33
|
+
-d "client_secret=YOUR_CLIENT_SECRET" \
|
|
34
|
+
-d "grant_type=client_credentials" \
|
|
35
|
+
-d "scope=/read-public"
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Include the token in all API requests:
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
Authorization: Bearer YOUR_ACCESS_TOKEN
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Tokens are long-lived (typically 20 years) and can be reused across sessions.
|
|
45
|
+
|
|
46
|
+
## Core Endpoints
|
|
47
|
+
|
|
48
|
+
### Record: Retrieve Full ORCID Profile
|
|
49
|
+
|
|
50
|
+
- **URL**: `GET https://pub.orcid.org/v3.0/{orcid-id}/record`
|
|
51
|
+
- **Parameters**:
|
|
52
|
+
| Param | Type | Required | Description |
|
|
53
|
+
|-------|------|----------|-------------|
|
|
54
|
+
| orcid-id | string | Yes | The 16-digit ORCID iD (e.g., 0000-0002-1825-0097) |
|
|
55
|
+
| Accept | header | No | Response format: application/json, application/xml |
|
|
56
|
+
- **Example**:
|
|
57
|
+
```bash
|
|
58
|
+
curl -H "Authorization: Bearer YOUR_TOKEN" \
|
|
59
|
+
-H "Accept: application/json" \
|
|
60
|
+
"https://pub.orcid.org/v3.0/0000-0002-1825-0097/record"
|
|
61
|
+
```
|
|
62
|
+
- **Response**: JSON with complete ORCID record including `person` (name, biography, emails, addresses), `activities-summary` (works, funding, employment, education, peer reviews).
|
|
63
|
+
|
|
64
|
+
### Works: Retrieve Publication List
|
|
65
|
+
|
|
66
|
+
- **URL**: `GET https://pub.orcid.org/v3.0/{orcid-id}/works`
|
|
67
|
+
- **Parameters**:
|
|
68
|
+
| Param | Type | Required | Description |
|
|
69
|
+
|-------|------|----------|-------------|
|
|
70
|
+
| orcid-id | string | Yes | The ORCID iD |
|
|
71
|
+
- **Example**:
|
|
72
|
+
```bash
|
|
73
|
+
curl -H "Authorization: Bearer YOUR_TOKEN" \
|
|
74
|
+
-H "Accept: application/json" \
|
|
75
|
+
"https://pub.orcid.org/v3.0/0000-0002-1825-0097/works"
|
|
76
|
+
```
|
|
77
|
+
- **Response**: JSON with `group` array of work summaries, each containing `title`, `external-ids` (DOI, PMID, etc.), `type`, `publication-date`, and `journal-title`.
|
|
78
|
+
|
|
79
|
+
### Search: Find Researchers
|
|
80
|
+
|
|
81
|
+
- **URL**: `GET https://pub.orcid.org/v3.0/search`
|
|
82
|
+
- **Parameters**:
|
|
83
|
+
| Param | Type | Required | Description |
|
|
84
|
+
|-------|------|----------|-------------|
|
|
85
|
+
| q | string | Yes | Lucene query syntax (e.g., family-name:Einstein, affiliation-org-name:MIT) |
|
|
86
|
+
| start | integer | No | Pagination offset (default: 0) |
|
|
87
|
+
| rows | integer | No | Results per page (default: 100, max: 200) |
|
|
88
|
+
- **Example**:
|
|
89
|
+
```bash
|
|
90
|
+
curl -H "Authorization: Bearer YOUR_TOKEN" \
|
|
91
|
+
-H "Accept: application/json" \
|
|
92
|
+
"https://pub.orcid.org/v3.0/search?q=family-name:Hinton+AND+affiliation-org-name:Toronto&rows=10"
|
|
93
|
+
```
|
|
94
|
+
- **Response**: JSON with `result` array containing `orcid-identifier` (ORCID iD and URI) for each matching researcher.
|
|
95
|
+
|
|
96
|
+
## Rate Limits
|
|
97
|
+
|
|
98
|
+
The public API allows 24 requests per second and 40 burst requests. The member API has higher limits. If limits are exceeded, the API returns HTTP 503 with a `Retry-After` header. For bulk data access, ORCID provides annual data dumps and a Lambda file for incremental updates. Rate limits apply per access token.
|
|
99
|
+
|
|
100
|
+
## Common Patterns
|
|
101
|
+
|
|
102
|
+
### Verify Researcher Identity
|
|
103
|
+
|
|
104
|
+
Confirm that a researcher's ORCID is valid and retrieve their public profile:
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
curl -H "Authorization: Bearer YOUR_TOKEN" \
|
|
108
|
+
-H "Accept: application/json" \
|
|
109
|
+
"https://pub.orcid.org/v3.0/0000-0001-5109-3700/person"
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### Build a Complete Publication List
|
|
113
|
+
|
|
114
|
+
Retrieve all works associated with an ORCID profile and extract DOIs:
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
curl -H "Authorization: Bearer YOUR_TOKEN" \
|
|
118
|
+
-H "Accept: application/json" \
|
|
119
|
+
"https://pub.orcid.org/v3.0/0000-0002-1825-0097/works" | jq '.group[].work-summary[0] | {title: .title.title.value, doi: (.["external-ids"]["external-id"][] | select(.["external-id-type"] == "doi") | .["external-id-value"])}'
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### Find Researchers at an Institution
|
|
123
|
+
|
|
124
|
+
Search for ORCID profiles affiliated with a specific organization:
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
curl -H "Authorization: Bearer YOUR_TOKEN" \
|
|
128
|
+
-H "Accept: application/json" \
|
|
129
|
+
"https://pub.orcid.org/v3.0/search?q=affiliation-org-name:Stanford+AND+current-institution-affiliation-name:Stanford&rows=50"
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## References
|
|
133
|
+
|
|
134
|
+
- Official documentation: https://info.orcid.org/documentation/api-tutorial/
|
|
135
|
+
- API reference: https://pub.orcid.org/v3.0/
|
|
136
|
+
- ORCID integration guide: https://info.orcid.org/documentation/integration-guide/
|