Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Perform science mapping and bibliometric analysis with R bibliometrix
.claude/skills/brycewang-stanford-bibliometrix-guide/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-10 | ✗→✓ | ▲ Improved | 30% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 18% | 0% |
| case-18 | ✗→✓ | ▲ Improved | 53% | 0% |
| case-19 | ✗→✓ | ▲ Improved | -27% | 0% |
| case-01 | ✓→✓ | = Same ✓ | 77% | 0% |
Bibliometrix is an R package for comprehensive science mapping and bibliometric analysis. It imports data from Scopus, Web of Science, PubMed, and other databases, then performs co-citation analysis, keyword co-occurrence mapping, collaboration networks, thematic evolution tracking, and more. Includes Biblioshiny — a Shiny-based web interface for no-code analysis.
rinstall.packages("bibliometrix") # Or development version devtools::install_github("massimoaria/bibliometrix")
rlibrary(bibliometrix) # From Scopus CSV export M <- convert2df("scopus_export.csv", dbsource = "scopus", format = "csv") # From Web of Science M <- convert2df("wos_export.txt", dbsource = "wos", format = "plaintext") # From PubMed M <- convert2df("pubmed_export.txt", dbsource = "pubmed", format = "pubmed") # From multiple files file_list <- c("data1.csv", "data2.csv") M <- convert2df(file_list, dbsource = "scopus", format = "csv")
r# Basic bibliometric summary results <- biblioAnalysis(M) summary(results, k = 10) # Top 10 in each category # Key metrics produced: # - Publication trends over time # - Most productive authors # - Most cited papers # - Top journals/sources # - Country/affiliation rankings # - Keyword frequency
r# Most cited documents CR <- citations(M, field = "article", sep = ";") head(CR$Cited, 20) # Most cited first authors CR_auth <- citations(M, field = "author", sep = ";") # Local citations (within the dataset) LC <- localCitations(M) head(LC$Papers, 10)
r# Co-citation network NetMatrix <- biblioNetwork(M, analysis = "co-citation", network = "references", sep = ";") net <- networkPlot(NetMatrix, n = 30, type = "fruchterman", Title = "Co-citation Network") # Author collaboration network NetMatrix <- biblioNetwork(M, analysis = "collaboration", network = "authors", sep = ";") net <- networkPlot(NetMatrix, n = 50, type = "kamada", Title = "Collaboration Network") # Keyword co-occurrence NetMatrix <- biblioNetwork(M, analysis = "co-occurrences", network = "keywords", sep = ";") net <- networkPlot(NetMatrix, n = 40, type = "fruchterman", Title = "Keyword Co-occurrence")
r# Thematic map (strategic diagram) Map <- thematicMap(M, field = "DE", n = 250, minfreq = 5) plot(Map$map) # Quadrants: # Motor themes (high centrality, high density) # Basic themes (high centrality, low density) # Niche themes (low centrality, high density) # Emerging/declining themes (low centrality, low density) # Thematic evolution over time periods nexus <- thematicEvolution(M, field = "DE", years = c(2015, 2019, 2023), n = 100, minFreq = 3) plotThematicEvolution(nexus$Nodes, nexus$Edges)
r# Launch interactive web dashboard biblioshiny() # Opens browser with GUI for: # - Data import from multiple sources # - Descriptive analysis # - Network visualization # - Thematic mapping # - All plots exportable
| Source | Format | Import function | |--------|--------|----------------| | Scopus | CSV/BibTeX | convert2df(..., dbsource="scopus") | | Web of Science | Plain text/BibTeX | convert2df(..., dbsource="wos") | | PubMed | PubMed format | convert2df(..., dbsource="pubmed") | | Dimensions | CSV | convert2df(..., dbsource="dimensions") | | Cochrane | Plain text | convert2df(..., dbsource="cochrane") | | OpenAlex | JSON | Via API integration |
| Analysis | Function | Output | |----------|----------|--------| | Descriptive | biblioAnalysis() | Summary statistics | | Co-citation | biblioNetwork(analysis="co-citation") | Citation clusters | | Collaboration | biblioNetwork(analysis="collaboration") | Author networks | | Co-occurrence | biblioNetwork(analysis="co-occurrences") | Keyword maps | | Thematic map | thematicMap() | Strategic quadrant diagram | | Trend analysis | fieldByYear() | Topic evolution | | Country collab | metaTagExtraction() + biblioNetwork() | Geo collaboration |
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | pass→pass | 7,927 | 35,327 | +346% | 1 | 1 | 0% | 1,165 | 2,057 | +77% | 0 | 0 | — |
case-02 | pass→pass | 5,415 | 34,548 | +538% | 1 | 1 | 0% | 1,037 | 1,949 | +88% | 0 | 0 | — |
case-03 | pass→pass | 35,744 | 2,645 | -93% | 1 | 1 | 0% | 1,079 | 1,778 | +65% | 0 | 0 | — |
case-04 | pass→pass | 9,072 | 5,282 | -42% | 1 | 1 | 0% | 1,583 | 2,189 | +38% | 0 | 0 | — |
case-05 | pass→pass | 5,385 | 3,274 | -39% | 1 | 1 | 0% | 757 | 1,856 | +145% | 0 | 0 | — |
case-06 | pass→pass | 7,399 | 3,532 | -52% | 1 | 1 | 0% | 1,211 | 1,948 | +61% | 0 | 0 | — |
case-07 | pass→pass | 7,613 | 2,951 | -61% | 1 | 1 | 0% | 1,328 | 1,811 | +36% | 0 | 0 | — |
case-08 | pass→pass | 8,312 | 4,492 | -46% | 1 | 1 | 0% | 1,552 | 2,153 | +39% | 0 | 0 | — |
case-09 | pass→pass | 5,737 | 3,738 | -35% | 1 | 1 | 0% | 1,070 | 2,018 | +89% | 0 | 0 | — |
case-10 | fail→pass | 8,654 | 4,560 | -47% | 1 | 1 | 0% | 1,652 | 2,151 | +30% | 0 | 0 | — |
case-11 | pass→pass | 8,739 | 4,198 | -52% | 1 | 1 | 0% | 1,684 | 1,972 | +17% | 0 | 0 | — |
case-12 | fail→pass | 38,398 | 2,814 | -93% | 1 | 1 | 0% | 1,572 | 1,849 | +18% | 0 | 0 | — |
case-13 | pass→pass | 9,551 | 8,377 | -12% | 1 | 1 | 0% | 1,758 | 2,779 | +58% | 0 | 0 | — |
case-14 | pass→pass | 9,892 | 8,750 | -12% | 1 | 1 | 0% | 1,877 | 2,855 | +52% | 0 | 0 | — |
case-15 | pass→pass | 5,229 | 2,564 | -51% | 1 | 1 | 0% | 1,049 | 1,805 | +72% | 0 | 0 | — |
case-16 | pass→pass | 6,327 | 4,211 | -33% | 1 | 1 | 0% | 1,297 | 2,001 | +54% | 0 | 0 | — |
case-17 | pass→pass | 2,685 | 1,709 | -36% | 1 | 1 | 0% | 446 | 1,568 | +252% | 0 | 0 | — |
case-18 | fail→pass | 5,532 | 1,809 | -67% | 1 | 1 | 0% | 1,058 | 1,620 | +53% | 0 | 0 | — |
case-19 | fail→pass | 16,504 | 5,021 | -70% | 1 | 1 | 0% | 3,126 | 2,269 | -27% | 0 | 0 | — |
case-20 | pass→pass | 12,479 | 4,592 | -63% | 1 | 1 | 0% | 1,974 | 2,143 | +9% | 0 | 0 | — |
case-21 | pass→pass | 8,002 | 3,007 | -62% | 1 | 1 | 0% | 1,359 | 1,828 | +35% | 0 | 0 | — |
case-22 | pass→pass | 11,320 | 9,365 | -17% | 1 | 1 | 0% | 1,986 | 2,898 | +46% | 0 | 0 | — |
case-23 | pass→pass | 15,105 | 15,240 | +1% | 1 | 1 | 0% | 2,416 | 3,731 | +54% | 0 | 0 | — |
case-24 | pass→pass | 12,274 | 9,765 | -20% | 1 | 1 | 0% | 2,044 | 3,151 | +54% | 0 | 0 | — |
case-25 | pass→pass | 15,200 | 14,458 | -5% | 1 | 1 | 0% | 2,562 | 4,169 | +63% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 25 cases were attempted. The headline lift of +16 percentage points is the difference between those two pass rates over the 25 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.