@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,211 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: paper-tracking-guide
|
|
3
|
+
description: "Track new publications via RSS, alerts, and citation notifications"
|
|
4
|
+
metadata:
|
|
5
|
+
openclaw:
|
|
6
|
+
emoji: "🔔"
|
|
7
|
+
category: "literature"
|
|
8
|
+
subcategory: "discovery"
|
|
9
|
+
keywords: ["literature alert", "citation notification", "RSS feed", "new publication tracking", "related papers"]
|
|
10
|
+
source: "N/A"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Paper Tracking Guide
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
|
|
17
|
+
Staying current with the literature is one of the most persistent challenges in academic research. With over 5 million new papers published annually across all disciplines, manual browsing of journals and preprint servers is neither scalable nor reliable. Researchers who set up automated tracking systems gain a significant advantage: they discover relevant work earlier, avoid duplicating existing results, and identify collaboration opportunities.
|
|
18
|
+
|
|
19
|
+
This guide covers five complementary strategies for tracking new publications: RSS feeds from preprint servers and journals, keyword-based alerts from search engines, citation tracking for monitoring who cites your work or key papers, social and community feeds, and AI-powered discovery tools. The goal is to build a personalized monitoring pipeline that delivers relevant papers to you daily with minimal noise.
|
|
20
|
+
|
|
21
|
+
Each strategy is described with setup instructions, tool recommendations, and configuration tips so you can have a working tracking system within an afternoon.
|
|
22
|
+
|
|
23
|
+
## RSS Feeds from Preprint Servers
|
|
24
|
+
|
|
25
|
+
RSS remains the most reliable method for monitoring preprint servers like arXiv, bioRxiv, and SSRN.
|
|
26
|
+
|
|
27
|
+
### arXiv RSS Setup
|
|
28
|
+
|
|
29
|
+
arXiv provides RSS feeds for every category and subcategory:
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
# Feed URL format
|
|
33
|
+
https://rss.arxiv.org/rss/{category}
|
|
34
|
+
|
|
35
|
+
# Examples
|
|
36
|
+
https://rss.arxiv.org/rss/cs.CL # Computation and Language
|
|
37
|
+
https://rss.arxiv.org/rss/cs.LG # Machine Learning
|
|
38
|
+
https://rss.arxiv.org/rss/stat.ML # Statistics: Machine Learning
|
|
39
|
+
https://rss.arxiv.org/rss/q-bio.GN # Genomics
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### bioRxiv and medRxiv
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
# bioRxiv new papers by subject
|
|
46
|
+
https://connect.biorxiv.org/biorxiv_xml.php?subject=neuroscience
|
|
47
|
+
|
|
48
|
+
# medRxiv new papers
|
|
49
|
+
https://connect.medrxiv.org/medrxiv_xml.php?subject=epidemiology
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Recommended RSS Readers
|
|
53
|
+
|
|
54
|
+
| Reader | Platform | Free Tier | Best Feature |
|
|
55
|
+
|--------|----------|-----------|-------------|
|
|
56
|
+
| Feedly | Web/Mobile | 100 feeds | AI prioritization |
|
|
57
|
+
| Inoreader | Web/Mobile | 150 feeds | Rules & filters |
|
|
58
|
+
| Miniflux | Self-hosted | Unlimited | Full control |
|
|
59
|
+
| NetNewsWire | macOS/iOS | Unlimited | Native, fast, open-source |
|
|
60
|
+
| Feedbin | Web | Paid only | Clean interface |
|
|
61
|
+
|
|
62
|
+
### Filtering High-Volume Feeds
|
|
63
|
+
|
|
64
|
+
For categories with 50+ daily papers, set up keyword filters in your RSS reader:
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
# Inoreader rule example
|
|
68
|
+
IF title contains "transformer" OR "attention mechanism"
|
|
69
|
+
AND title does NOT contain "survey" OR "review"
|
|
70
|
+
THEN star AND move to "Priority" folder
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Keyword-Based Alerts
|
|
74
|
+
|
|
75
|
+
### Google Scholar Alerts
|
|
76
|
+
|
|
77
|
+
1. Go to [scholar.google.com/scholar_alerts](https://scholar.google.com/scholar_alerts)
|
|
78
|
+
2. Click "Create alert"
|
|
79
|
+
3. Enter a search query using operators:
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
# Specific phrase
|
|
83
|
+
"graph neural network" "drug discovery"
|
|
84
|
+
|
|
85
|
+
# Author tracking
|
|
86
|
+
author:"Yoshua Bengio"
|
|
87
|
+
|
|
88
|
+
# Venue-specific
|
|
89
|
+
source:"Nature Machine Intelligence"
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Tips:
|
|
93
|
+
- Create 5-10 focused alerts rather than 1-2 broad ones.
|
|
94
|
+
- Use quotation marks for exact phrases.
|
|
95
|
+
- Review and refine alerts monthly.
|
|
96
|
+
|
|
97
|
+
### Semantic Scholar Alerts
|
|
98
|
+
|
|
99
|
+
Semantic Scholar offers research feed customization:
|
|
100
|
+
|
|
101
|
+
1. Create an account at [semanticscholar.org](https://www.semanticscholar.org/)
|
|
102
|
+
2. Add papers to your library
|
|
103
|
+
3. The recommendation engine learns your interests
|
|
104
|
+
4. Enable weekly email digest
|
|
105
|
+
|
|
106
|
+
### PubMed Alerts (Biomedical)
|
|
107
|
+
|
|
108
|
+
```
|
|
109
|
+
# Create a saved search at pubmed.ncbi.nlm.nih.gov
|
|
110
|
+
# Example query with MeSH terms
|
|
111
|
+
("machine learning"[MeSH] OR "deep learning"[MeSH])
|
|
112
|
+
AND "drug discovery"[MeSH]
|
|
113
|
+
AND "2024/01/01"[Date - Publication] : "3000"[Date - Publication]
|
|
114
|
+
|
|
115
|
+
# Set up email alerts: Save search > Create alert > Weekly
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## Citation Tracking
|
|
119
|
+
|
|
120
|
+
Citation tracking answers: "Who is building on this foundational paper?"
|
|
121
|
+
|
|
122
|
+
### Methods
|
|
123
|
+
|
|
124
|
+
| Method | Coverage | Real-time | Cost |
|
|
125
|
+
|--------|----------|-----------|------|
|
|
126
|
+
| Google Scholar "Cited by" alerts | Broad | Near real-time | Free |
|
|
127
|
+
| Semantic Scholar citation alerts | CS, biomedical | Weekly | Free |
|
|
128
|
+
| Web of Science citation reports | Comprehensive | Weekly | Institutional |
|
|
129
|
+
| Scopus citation alerts | Comprehensive | Configurable | Institutional |
|
|
130
|
+
| ResearchGate notifications | Author-based | Real-time | Free |
|
|
131
|
+
|
|
132
|
+
### Setting Up Google Scholar Citation Alerts
|
|
133
|
+
|
|
134
|
+
1. Search for the paper on Google Scholar.
|
|
135
|
+
2. Click "Cited by N" below the paper.
|
|
136
|
+
3. Click the envelope icon ("Create alert") at the top of the results page.
|
|
137
|
+
4. Receive an email whenever a new paper cites the tracked paper.
|
|
138
|
+
|
|
139
|
+
### Tracking Your Own Citations
|
|
140
|
+
|
|
141
|
+
1. Create a [Google Scholar Profile](https://scholar.google.com/intl/en/scholar/citations.html).
|
|
142
|
+
2. Verify your papers.
|
|
143
|
+
3. Enable "New citations to my articles" alerts.
|
|
144
|
+
4. Monitor your h-index and i10-index trends.
|
|
145
|
+
|
|
146
|
+
## AI-Powered Discovery Tools
|
|
147
|
+
|
|
148
|
+
### Connected Papers
|
|
149
|
+
|
|
150
|
+
[connectedpapers.com](https://connectedpapers.com/) builds a visual graph of related papers:
|
|
151
|
+
|
|
152
|
+
1. Enter a seed paper (title, DOI, or URL).
|
|
153
|
+
2. The tool generates a similarity graph (not citation graph).
|
|
154
|
+
3. Papers that are close together share more conceptual similarity.
|
|
155
|
+
4. Use "Prior works" and "Derivative works" views for temporal exploration.
|
|
156
|
+
|
|
157
|
+
### Elicit
|
|
158
|
+
|
|
159
|
+
[elicit.com](https://elicit.com/) uses language models to search and summarize papers:
|
|
160
|
+
|
|
161
|
+
1. Ask a natural-language research question.
|
|
162
|
+
2. Elicit finds relevant papers and extracts key findings.
|
|
163
|
+
3. Use the "Columns" feature to compare methods, datasets, and results across papers.
|
|
164
|
+
|
|
165
|
+
### Research Rabbit
|
|
166
|
+
|
|
167
|
+
[researchrabbit.ai](https://www.researchrabbit.ai/) provides:
|
|
168
|
+
|
|
169
|
+
- Citation network visualization
|
|
170
|
+
- "Similar work" recommendations
|
|
171
|
+
- Author network exploration
|
|
172
|
+
- Collection-based monitoring with email alerts
|
|
173
|
+
|
|
174
|
+
## Building Your Daily Pipeline
|
|
175
|
+
|
|
176
|
+
A recommended daily reading workflow:
|
|
177
|
+
|
|
178
|
+
```
|
|
179
|
+
Morning (15 min):
|
|
180
|
+
1. Check RSS reader for new preprints (filtered by keywords)
|
|
181
|
+
2. Star 3-5 papers for reading later
|
|
182
|
+
3. Quick-scan abstracts of starred papers
|
|
183
|
+
|
|
184
|
+
Weekly (1 hour):
|
|
185
|
+
1. Read 2-3 starred papers in full
|
|
186
|
+
2. Add to Zotero with tags and notes
|
|
187
|
+
3. Check citation alerts for tracked papers
|
|
188
|
+
4. Review AI recommendations (Semantic Scholar, Research Rabbit)
|
|
189
|
+
|
|
190
|
+
Monthly (30 min):
|
|
191
|
+
1. Audit alert quality -- prune noisy alerts, add new ones
|
|
192
|
+
2. Update RSS feed subscriptions for evolving interests
|
|
193
|
+
3. Share interesting papers with lab group
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
## Best Practices
|
|
197
|
+
|
|
198
|
+
- **Limit your feeds.** It is better to thoroughly read 5 papers per week than to skim 50.
|
|
199
|
+
- **Use a reference manager from day one.** Zotero, Paperpile, or Mendeley -- pick one and use it consistently.
|
|
200
|
+
- **Tag papers by project.** When you start writing, you will need to find that paper you read six months ago.
|
|
201
|
+
- **Share with your team.** Set up a shared Zotero group or Slack channel for paper recommendations.
|
|
202
|
+
- **Track trends, not just individual papers.** Notice when multiple groups independently converge on the same idea.
|
|
203
|
+
- **Combine automated and social discovery.** Algorithms miss papers that colleagues recommend.
|
|
204
|
+
|
|
205
|
+
## References
|
|
206
|
+
|
|
207
|
+
- [arXiv RSS Feeds](https://info.arxiv.org/help/rss.html) -- Official arXiv RSS documentation
|
|
208
|
+
- [Google Scholar Alerts](https://scholar.google.com/scholar_alerts) -- Citation and keyword alerts
|
|
209
|
+
- [Semantic Scholar](https://www.semanticscholar.org/) -- AI-powered paper search
|
|
210
|
+
- [Connected Papers](https://www.connectedpapers.com/) -- Visual paper exploration
|
|
211
|
+
- [Research Rabbit](https://www.researchrabbit.ai/) -- Collection-based paper discovery
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rss-paper-feeds
|
|
3
|
+
description: "Set up RSS feeds and alerts to track new publications in your research area"
|
|
4
|
+
metadata:
|
|
5
|
+
openclaw:
|
|
6
|
+
emoji: "bell"
|
|
7
|
+
category: "literature"
|
|
8
|
+
subcategory: "discovery"
|
|
9
|
+
keywords: ["RSS feed", "new publication tracking", "literature alert", "citation notification", "research monitoring"]
|
|
10
|
+
source: "wentor"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# RSS Paper Feeds
|
|
14
|
+
|
|
15
|
+
A skill for configuring automated literature monitoring using RSS feeds, email alerts, and citation notifications. Stay current with new publications in your research area without manual searching.
|
|
16
|
+
|
|
17
|
+
## RSS Feed Sources for Academic Papers
|
|
18
|
+
|
|
19
|
+
### Journal-Level Feeds
|
|
20
|
+
|
|
21
|
+
Most major publishers provide RSS feeds for their journals:
|
|
22
|
+
|
|
23
|
+
| Publisher | Feed URL Pattern | Example |
|
|
24
|
+
|-----------|-----------------|---------|
|
|
25
|
+
| Nature | `https://www.nature.com/[journal].rss` | `nature.com/nature.rss` |
|
|
26
|
+
| Science | `https://www.science.org/action/showFeed?type=etoc&feed=rss&jc=[code]` | jc=science |
|
|
27
|
+
| Elsevier | `https://rss.sciencedirect.com/publication/science/[ISSN]` | ISSN 0004-3702 for AI |
|
|
28
|
+
| Springer | `https://link.springer.com/search.rss?search-within=Journal&facet-journal-id=[id]` | id=10994 |
|
|
29
|
+
| IEEE | `https://ieeexplore.ieee.org/rss/TOC[journal_number].XML` | |
|
|
30
|
+
| arXiv | `https://rss.arxiv.org/rss/[category]` | cs.AI, stat.ML |
|
|
31
|
+
|
|
32
|
+
### Setting Up arXiv Feeds
|
|
33
|
+
|
|
34
|
+
```python
|
|
35
|
+
import feedparser
|
|
36
|
+
from datetime import datetime
|
|
37
|
+
|
|
38
|
+
def fetch_arxiv_feed(categories: list[str], max_results: int = 50) -> list[dict]:
|
|
39
|
+
"""
|
|
40
|
+
Fetch recent papers from arXiv RSS feeds.
|
|
41
|
+
|
|
42
|
+
Args:
|
|
43
|
+
categories: List of arXiv categories (e.g., ['cs.AI', 'cs.CL', 'stat.ML'])
|
|
44
|
+
max_results: Maximum number of papers to return
|
|
45
|
+
"""
|
|
46
|
+
all_papers = []
|
|
47
|
+
|
|
48
|
+
for category in categories:
|
|
49
|
+
feed_url = f"https://rss.arxiv.org/rss/{category}"
|
|
50
|
+
feed = feedparser.parse(feed_url)
|
|
51
|
+
|
|
52
|
+
for entry in feed.entries[:max_results]:
|
|
53
|
+
all_papers.append({
|
|
54
|
+
'title': entry.title.strip(),
|
|
55
|
+
'authors': entry.get('author', 'Unknown'),
|
|
56
|
+
'abstract': entry.get('summary', '')[:500],
|
|
57
|
+
'link': entry.link,
|
|
58
|
+
'category': category,
|
|
59
|
+
'published': entry.get('published', ''),
|
|
60
|
+
'arxiv_id': entry.link.split('/')[-1] if entry.link else ''
|
|
61
|
+
})
|
|
62
|
+
|
|
63
|
+
# Deduplicate (papers may appear in multiple categories)
|
|
64
|
+
seen = set()
|
|
65
|
+
unique = []
|
|
66
|
+
for p in all_papers:
|
|
67
|
+
if p['arxiv_id'] not in seen:
|
|
68
|
+
seen.add(p['arxiv_id'])
|
|
69
|
+
unique.append(p)
|
|
70
|
+
|
|
71
|
+
return unique[:max_results]
|
|
72
|
+
|
|
73
|
+
# Example: monitor AI and NLP papers
|
|
74
|
+
papers = fetch_arxiv_feed(['cs.AI', 'cs.CL', 'cs.LG'], max_results=30)
|
|
75
|
+
for p in papers[:5]:
|
|
76
|
+
print(f"[{p['category']}] {p['title']}")
|
|
77
|
+
print(f" {p['link']}\n")
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Citation Alerts
|
|
81
|
+
|
|
82
|
+
### Google Scholar Citations Alert
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
Setup:
|
|
86
|
+
1. Search for your key reference papers on Google Scholar
|
|
87
|
+
2. Click the "Cited by N" link under each paper
|
|
88
|
+
3. Click the envelope icon ("Create alert") at the top of results
|
|
89
|
+
4. Enter your email address
|
|
90
|
+
5. You will receive notifications when new papers cite that work
|
|
91
|
+
|
|
92
|
+
Recommended: Set alerts for:
|
|
93
|
+
- Your own publications (track who cites you)
|
|
94
|
+
- 5-10 foundational papers in your field
|
|
95
|
+
- Key competitor or collaborator publications
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Semantic Scholar Alerts API
|
|
99
|
+
|
|
100
|
+
```python
|
|
101
|
+
import requests
|
|
102
|
+
|
|
103
|
+
def setup_semantic_scholar_alert(paper_id: str, email: str) -> dict:
|
|
104
|
+
"""
|
|
105
|
+
Monitor citations for a specific paper via Semantic Scholar.
|
|
106
|
+
|
|
107
|
+
Args:
|
|
108
|
+
paper_id: Semantic Scholar paper ID or DOI
|
|
109
|
+
email: Email for notifications
|
|
110
|
+
"""
|
|
111
|
+
# Fetch current citation count for baseline
|
|
112
|
+
response = requests.get(
|
|
113
|
+
f"https://api.semanticscholar.org/graph/v1/paper/{paper_id}",
|
|
114
|
+
params={'fields': 'title,citationCount,citations.title,citations.year'}
|
|
115
|
+
)
|
|
116
|
+
data = response.json()
|
|
117
|
+
|
|
118
|
+
return {
|
|
119
|
+
'paper': data.get('title', ''),
|
|
120
|
+
'current_citations': data.get('citationCount', 0),
|
|
121
|
+
'recent_citations': [
|
|
122
|
+
c for c in data.get('citations', [])
|
|
123
|
+
if c.get('year', 0) >= datetime.now().year - 1
|
|
124
|
+
][:10],
|
|
125
|
+
'alert_email': email,
|
|
126
|
+
'status': 'configured'
|
|
127
|
+
}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## RSS Reader Configuration
|
|
131
|
+
|
|
132
|
+
### Recommended RSS Readers for Researchers
|
|
133
|
+
|
|
134
|
+
| Reader | Platform | Features | Cost |
|
|
135
|
+
|--------|----------|----------|------|
|
|
136
|
+
| Feedly | Web/mobile | AI summaries, boards, teams | Free tier + Pro $8/mo |
|
|
137
|
+
| Inoreader | Web/mobile | Rules, filters, monitoring | Free tier + Pro $5/mo |
|
|
138
|
+
| Zotero RSS | Desktop | Integrated with reference manager | Free |
|
|
139
|
+
| Thunderbird | Desktop | Email + RSS in one client | Free |
|
|
140
|
+
| Miniflux | Self-hosted | Minimal, fast, API | Free (self-hosted) |
|
|
141
|
+
|
|
142
|
+
### Organizing Feeds Effectively
|
|
143
|
+
|
|
144
|
+
```yaml
|
|
145
|
+
feed_organization:
|
|
146
|
+
folders:
|
|
147
|
+
core_journals:
|
|
148
|
+
description: "Top journals in my primary field"
|
|
149
|
+
feeds: 5-8
|
|
150
|
+
check_frequency: "daily"
|
|
151
|
+
|
|
152
|
+
broad_monitoring:
|
|
153
|
+
description: "Adjacent fields and high-impact general journals"
|
|
154
|
+
feeds: 10-15
|
|
155
|
+
check_frequency: "weekly"
|
|
156
|
+
|
|
157
|
+
preprints:
|
|
158
|
+
description: "arXiv categories and SSRN feeds"
|
|
159
|
+
feeds: 3-5
|
|
160
|
+
check_frequency: "daily"
|
|
161
|
+
|
|
162
|
+
citation_alerts:
|
|
163
|
+
description: "New citations of key papers"
|
|
164
|
+
feeds: 10-20
|
|
165
|
+
check_frequency: "weekly"
|
|
166
|
+
|
|
167
|
+
workflow:
|
|
168
|
+
daily: "Scan titles in core_journals and preprints (10 min)"
|
|
169
|
+
weekly: "Review broad_monitoring and citation_alerts (30 min)"
|
|
170
|
+
monthly: "Audit feed list, remove low-value feeds, add new ones"
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
## Automated Filtering and Summarization
|
|
174
|
+
|
|
175
|
+
### Keyword-Based Paper Filtering
|
|
176
|
+
|
|
177
|
+
```python
|
|
178
|
+
def filter_papers(papers: list[dict], keywords: list[str],
|
|
179
|
+
title_weight: float = 3.0,
|
|
180
|
+
abstract_weight: float = 1.0,
|
|
181
|
+
threshold: float = 2.0) -> list[dict]:
|
|
182
|
+
"""
|
|
183
|
+
Score and filter papers by relevance to your research keywords.
|
|
184
|
+
|
|
185
|
+
Args:
|
|
186
|
+
papers: List of paper dicts with 'title' and 'abstract'
|
|
187
|
+
keywords: Your research keywords
|
|
188
|
+
title_weight: Weight multiplier for title matches
|
|
189
|
+
abstract_weight: Weight multiplier for abstract matches
|
|
190
|
+
threshold: Minimum relevance score to include
|
|
191
|
+
"""
|
|
192
|
+
scored = []
|
|
193
|
+
for paper in papers:
|
|
194
|
+
score = 0
|
|
195
|
+
title_lower = paper.get('title', '').lower()
|
|
196
|
+
abstract_lower = paper.get('abstract', '').lower()
|
|
197
|
+
|
|
198
|
+
for kw in keywords:
|
|
199
|
+
kw_lower = kw.lower()
|
|
200
|
+
if kw_lower in title_lower:
|
|
201
|
+
score += title_weight
|
|
202
|
+
if kw_lower in abstract_lower:
|
|
203
|
+
score += abstract_weight
|
|
204
|
+
|
|
205
|
+
if score >= threshold:
|
|
206
|
+
paper['relevance_score'] = score
|
|
207
|
+
scored.append(paper)
|
|
208
|
+
|
|
209
|
+
return sorted(scored, key=lambda x: x['relevance_score'], reverse=True)
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
## Integration with Reference Managers
|
|
213
|
+
|
|
214
|
+
Configure your RSS reader to send relevant papers directly to your reference manager (Zotero, Mendeley, or EndNote). Most readers support "Save to Zotero" browser extensions or IFTTT/Zapier integrations for automated workflows. This creates a seamless pipeline from discovery to organized storage.
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: semantic-scholar-recs-guide
|
|
3
|
+
description: "Using Semantic Scholar recommendations API for paper discovery"
|
|
4
|
+
metadata:
|
|
5
|
+
openclaw:
|
|
6
|
+
emoji: "ai"
|
|
7
|
+
category: "literature"
|
|
8
|
+
subcategory: "discovery"
|
|
9
|
+
keywords: ["related papers", "literature recommendation", "paper discovery", "citation network"]
|
|
10
|
+
source: "wentor-research-plugins"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Semantic Scholar Recommendations Guide
|
|
14
|
+
|
|
15
|
+
Leverage the Semantic Scholar (S2) API to discover related papers, traverse citation networks, and build comprehensive reading lists programmatically.
|
|
16
|
+
|
|
17
|
+
## Overview
|
|
18
|
+
|
|
19
|
+
Semantic Scholar indexes over 200 million academic papers and provides a free, rate-limited API that supports:
|
|
20
|
+
|
|
21
|
+
- Paper search by title, keyword, or DOI
|
|
22
|
+
- Recommendations based on positive and negative seed papers
|
|
23
|
+
- Citation and reference graph traversal
|
|
24
|
+
- Author profiles and publication histories
|
|
25
|
+
- Bulk data access for large-scale analyses
|
|
26
|
+
|
|
27
|
+
Base URL: `https://api.semanticscholar.org/graph/v1`
|
|
28
|
+
Recommendations endpoint: `https://api.semanticscholar.org/recommendations/v1`
|
|
29
|
+
|
|
30
|
+
## Getting Recommendations from Seed Papers
|
|
31
|
+
|
|
32
|
+
The recommendations endpoint accepts a list of positive (and optionally negative) paper IDs and returns related papers ranked by relevance.
|
|
33
|
+
|
|
34
|
+
### Single-Paper Recommendations
|
|
35
|
+
|
|
36
|
+
```python
|
|
37
|
+
import requests
|
|
38
|
+
|
|
39
|
+
PAPER_ID = "649def34f8be52c8b66281af98ae884c09aef38b" # SHA or S2 ID
|
|
40
|
+
|
|
41
|
+
response = requests.get(
|
|
42
|
+
f"https://api.semanticscholar.org/recommendations/v1/papers/forpaper/{PAPER_ID}",
|
|
43
|
+
params={
|
|
44
|
+
"fields": "title,authors,year,citationCount,abstract,externalIds",
|
|
45
|
+
"limit": 20
|
|
46
|
+
},
|
|
47
|
+
headers={"x-api-key": "YOUR_API_KEY"} # optional, increases rate limit
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
for paper in response.json()["recommendedPapers"]:
|
|
51
|
+
print(f"[{paper['year']}] {paper['title']} (citations: {paper['citationCount']})")
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Multi-Paper Recommendations (Positive + Negative Seeds)
|
|
55
|
+
|
|
56
|
+
```python
|
|
57
|
+
import requests
|
|
58
|
+
|
|
59
|
+
payload = {
|
|
60
|
+
"positivePaperIds": [
|
|
61
|
+
"649def34f8be52c8b66281af98ae884c09aef38b",
|
|
62
|
+
"ARXIV:2005.14165" # can use arXiv ID prefix
|
|
63
|
+
],
|
|
64
|
+
"negativePaperIds": [
|
|
65
|
+
"ArXiv:1706.03762" # exclude attention-is-all-you-need style papers
|
|
66
|
+
]
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
response = requests.post(
|
|
70
|
+
"https://api.semanticscholar.org/recommendations/v1/papers/",
|
|
71
|
+
json=payload,
|
|
72
|
+
params={"fields": "title,year,citationCount,url,abstract", "limit": 30}
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
results = response.json()["recommendedPapers"]
|
|
76
|
+
print(f"Found {len(results)} recommended papers")
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Citation Network Traversal
|
|
80
|
+
|
|
81
|
+
Walk the citation graph to discover foundational and derivative works.
|
|
82
|
+
|
|
83
|
+
### Forward Citations (Who Cited This Paper?)
|
|
84
|
+
|
|
85
|
+
```python
|
|
86
|
+
paper_id = "649def34f8be52c8b66281af98ae884c09aef38b"
|
|
87
|
+
|
|
88
|
+
response = requests.get(
|
|
89
|
+
f"https://api.semanticscholar.org/graph/v1/paper/{paper_id}/citations",
|
|
90
|
+
params={
|
|
91
|
+
"fields": "title,year,citationCount,authors",
|
|
92
|
+
"limit": 100,
|
|
93
|
+
"offset": 0
|
|
94
|
+
}
|
|
95
|
+
)
|
|
96
|
+
|
|
97
|
+
citations = response.json()["data"]
|
|
98
|
+
# Sort by citation count to find most influential derivative works
|
|
99
|
+
citations.sort(key=lambda x: x["citingPaper"]["citationCount"], reverse=True)
|
|
100
|
+
for c in citations[:10]:
|
|
101
|
+
p = c["citingPaper"]
|
|
102
|
+
print(f" [{p['year']}] {p['title']} ({p['citationCount']} cites)")
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Backward References (What Did This Paper Cite?)
|
|
106
|
+
|
|
107
|
+
```python
|
|
108
|
+
response = requests.get(
|
|
109
|
+
f"https://api.semanticscholar.org/graph/v1/paper/{paper_id}/references",
|
|
110
|
+
params={"fields": "title,year,citationCount,authors", "limit": 100}
|
|
111
|
+
)
|
|
112
|
+
|
|
113
|
+
refs = response.json()["data"]
|
|
114
|
+
refs.sort(key=lambda x: x["citedPaper"]["citationCount"], reverse=True)
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## Building a Reading List Pipeline
|
|
118
|
+
|
|
119
|
+
Combine search, recommendations, and citation traversal into a discovery pipeline:
|
|
120
|
+
|
|
121
|
+
| Step | Method | Purpose |
|
|
122
|
+
|------|--------|---------|
|
|
123
|
+
| 1. Seed selection | Manual or keyword search | Identify 3-5 highly relevant papers |
|
|
124
|
+
| 2. Expand via recs | Multi-paper recommendations | Find thematically related work |
|
|
125
|
+
| 3. Forward citation | Citations endpoint | Find recent derivative works |
|
|
126
|
+
| 4. Backward citation | References endpoint | Find foundational papers |
|
|
127
|
+
| 5. Deduplicate | S2 paper ID matching | Remove duplicates across steps |
|
|
128
|
+
| 6. Rank & filter | Sort by year, citations, relevance | Prioritize reading order |
|
|
129
|
+
|
|
130
|
+
```python
|
|
131
|
+
def build_reading_list(seed_ids, max_papers=50):
|
|
132
|
+
"""Build a ranked reading list from seed papers."""
|
|
133
|
+
seen = set()
|
|
134
|
+
candidates = []
|
|
135
|
+
|
|
136
|
+
# Step 1: Get recommendations
|
|
137
|
+
recs = get_recommendations(seed_ids)
|
|
138
|
+
for paper in recs:
|
|
139
|
+
if paper["paperId"] not in seen:
|
|
140
|
+
seen.add(paper["paperId"])
|
|
141
|
+
candidates.append(paper)
|
|
142
|
+
|
|
143
|
+
# Step 2: Get citations of seed papers
|
|
144
|
+
for sid in seed_ids:
|
|
145
|
+
cites = get_citations(sid, limit=50)
|
|
146
|
+
for c in cites:
|
|
147
|
+
pid = c["citingPaper"]["paperId"]
|
|
148
|
+
if pid not in seen:
|
|
149
|
+
seen.add(pid)
|
|
150
|
+
candidates.append(c["citingPaper"])
|
|
151
|
+
|
|
152
|
+
# Step 3: Rank by citation count and recency
|
|
153
|
+
candidates.sort(key=lambda p: (p.get("year", 0), p.get("citationCount", 0)), reverse=True)
|
|
154
|
+
return candidates[:max_papers]
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
## Rate Limits and Best Practices
|
|
158
|
+
|
|
159
|
+
- **Without API key**: 100 requests per 5 minutes
|
|
160
|
+
- **With API key**: 1 request/second sustained (request a key at semanticscholar.org/product/api)
|
|
161
|
+
- Always include only the fields you need to reduce payload size
|
|
162
|
+
- Use `offset` and `limit` for pagination on large result sets
|
|
163
|
+
- Cache responses locally to avoid redundant requests
|
|
164
|
+
- Use DOI, arXiv ID, or PubMed ID as paper identifiers for cross-system compatibility (prefix with `DOI:`, `ARXIV:`, or `PMID:`)
|