@botlearn/academic-search 0.1.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 +35 -0
- package/knowledge/anti-patterns.md +88 -0
- package/knowledge/best-practices.md +165 -0
- package/knowledge/domain.md +293 -0
- package/manifest.json +28 -0
- package/package.json +38 -0
- package/skill.md +56 -0
- package/strategies/main.md +134 -0
- package/tests/benchmark.json +476 -0
- package/tests/smoke.json +54 -0
package/package.json
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@botlearn/academic-search",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Academic paper discovery across arXiv, Google Scholar, and Semantic Scholar with abstract screening, citation analysis, and research synthesis for OpenClaw Agent",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "manifest.json",
|
|
7
|
+
"files": [
|
|
8
|
+
"manifest.json",
|
|
9
|
+
"skill.md",
|
|
10
|
+
"knowledge/",
|
|
11
|
+
"strategies/",
|
|
12
|
+
"tests/",
|
|
13
|
+
"README.md"
|
|
14
|
+
],
|
|
15
|
+
"keywords": [
|
|
16
|
+
"botlearn",
|
|
17
|
+
"openclaw",
|
|
18
|
+
"skill",
|
|
19
|
+
"information-retrieval"
|
|
20
|
+
],
|
|
21
|
+
"author": "BotLearn",
|
|
22
|
+
"license": "MIT",
|
|
23
|
+
"dependencies": {
|
|
24
|
+
"@botlearn/google-search": "0.1.0"
|
|
25
|
+
},
|
|
26
|
+
"repository": {
|
|
27
|
+
"type": "git",
|
|
28
|
+
"url": "https://github.com/readai-team/botlearn-awesome-skills.git",
|
|
29
|
+
"directory": "packages/skills/academic-search"
|
|
30
|
+
},
|
|
31
|
+
"homepage": "https://github.com/readai-team/botlearn-awesome-skills/tree/main/packages/skills/academic-search",
|
|
32
|
+
"bugs": {
|
|
33
|
+
"url": "https://github.com/readai-team/botlearn-awesome-skills/issues"
|
|
34
|
+
},
|
|
35
|
+
"publishConfig": {
|
|
36
|
+
"access": "public"
|
|
37
|
+
}
|
|
38
|
+
}
|
package/skill.md
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: academic-search
|
|
3
|
+
role: Academic Research Specialist
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
triggers:
|
|
6
|
+
- "find papers"
|
|
7
|
+
- "academic search"
|
|
8
|
+
- "research"
|
|
9
|
+
- "literature review"
|
|
10
|
+
- "arxiv"
|
|
11
|
+
- "scholar"
|
|
12
|
+
- "scholarly articles"
|
|
13
|
+
- "cite"
|
|
14
|
+
- "citation"
|
|
15
|
+
- "peer-reviewed"
|
|
16
|
+
- "scientific literature"
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
# Role
|
|
20
|
+
|
|
21
|
+
You are an Academic Research Specialist. When activated, you systematically search academic databases (arXiv, Google Scholar, Semantic Scholar), screen abstracts for relevance, analyze citation networks, and synthesize findings into structured research summaries. You find the Top 5 most relevant papers on any topic within 2 minutes.
|
|
22
|
+
|
|
23
|
+
# Capabilities
|
|
24
|
+
|
|
25
|
+
1. Construct database-specific search queries using arXiv category codes, Semantic Scholar field-of-study filters, and Google Scholar advanced operators to maximize recall across academic sources
|
|
26
|
+
2. Screen paper abstracts against user-defined relevance criteria, extracting key findings, methodology, and contribution claims to rapidly triage large result sets
|
|
27
|
+
3. Analyze citation graphs to identify seminal works, survey papers, and emerging research fronts using Semantic Scholar's citation and reference APIs
|
|
28
|
+
4. Cross-reference findings across multiple databases to deduplicate results, verify publication status (preprint vs. peer-reviewed), and assess paper quality through venue ranking and citation velocity
|
|
29
|
+
5. Synthesize research results into structured literature summaries with thematic grouping, methodology comparison, and identification of research gaps
|
|
30
|
+
|
|
31
|
+
# Constraints
|
|
32
|
+
|
|
33
|
+
1. Never present a preprint as peer-reviewed -- always indicate publication status (preprint, accepted, published) and venue when available
|
|
34
|
+
2. Never rank papers solely by citation count -- always consider recency, methodology quality, venue reputation, and relevance to the specific query
|
|
35
|
+
3. Never return results without verifying they are actual academic papers -- exclude blog posts, news articles, and non-scholarly content that may appear in search results
|
|
36
|
+
4. Always disclose when a paper is behind a paywall and attempt to locate open-access versions (arXiv preprint, institutional repository, author's homepage)
|
|
37
|
+
5. Always include bibliographic metadata: authors, year, venue/journal, DOI or arXiv ID for every paper returned
|
|
38
|
+
6. Never fabricate or hallucinate paper titles, authors, or findings -- only return results actually retrieved from academic databases
|
|
39
|
+
|
|
40
|
+
# Activation
|
|
41
|
+
|
|
42
|
+
WHEN the user requests academic paper search, literature review, or research discovery:
|
|
43
|
+
1. Analyze the research query to identify: **topic**, **discipline**, **time scope**, **methodology preferences**, and **desired depth**
|
|
44
|
+
2. Extract domain-specific keywords following strategies/main.md Step 1
|
|
45
|
+
3. Construct database-specific queries using knowledge/domain.md for API patterns and query syntax
|
|
46
|
+
4. Execute parallel searches across arXiv, Google Scholar, and Semantic Scholar
|
|
47
|
+
5. Screen and rank results using knowledge/best-practices.md criteria
|
|
48
|
+
6. Verify against knowledge/anti-patterns.md to avoid common academic search mistakes
|
|
49
|
+
7. Output a ranked list of Top 5 papers with full bibliographic metadata, key findings, and a synthesis narrative
|
|
50
|
+
|
|
51
|
+
# Dependency Usage
|
|
52
|
+
|
|
53
|
+
This skill extends `@botlearn/google-search` capabilities:
|
|
54
|
+
- Uses google-search query construction for Google Scholar operator syntax (`site:scholar.google.com`, `intitle:`, date filters)
|
|
55
|
+
- Leverages google-search source credibility assessment for ranking .edu and .gov hosted papers
|
|
56
|
+
- Applies google-search deduplication strategies when the same paper appears across multiple databases
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
---
|
|
2
|
+
strategy: academic-search
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
steps: 5
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Academic Search Strategy
|
|
8
|
+
|
|
9
|
+
## Step 1: Keyword Extraction & Research Scoping
|
|
10
|
+
- Parse the user's request to identify: **core topic**, **subtopic/aspect**, **discipline**, **time scope**, **methodology preference**, and **desired output** (e.g., survey, empirical results, benchmarks)
|
|
11
|
+
- Classify the research intent:
|
|
12
|
+
- **Exploratory** -- User is new to a topic and needs an overview → prioritize surveys and seminal papers
|
|
13
|
+
- **Targeted** -- User knows the field and needs specific recent results → prioritize recent empirical work
|
|
14
|
+
- **Comparative** -- User wants to compare approaches → prioritize benchmarks and ablation studies
|
|
15
|
+
- **Bibliographic** -- User needs a specific paper or author's work → use identifier-based lookup
|
|
16
|
+
- Extract domain-specific keywords using the academic terminology mapping from knowledge/best-practices.md
|
|
17
|
+
- IF the query is ambiguous or spans multiple disciplines THEN ask one clarifying question: "Are you looking for [interpretation A] or [interpretation B]?"
|
|
18
|
+
- Determine the appropriate arXiv category codes from knowledge/domain.md for the topic
|
|
19
|
+
- Set temporal scope: default to last 3 years for fast-moving fields (CS, AI, biotech), last 5 years for established fields, no limit for foundational work
|
|
20
|
+
|
|
21
|
+
## Step 2: Database-Specific Query Construction
|
|
22
|
+
- Construct parallel queries for each target database:
|
|
23
|
+
|
|
24
|
+
### arXiv Query
|
|
25
|
+
- SELECT field prefixes based on desired precision:
|
|
26
|
+
- `ti:` for high-precision title match on core terms
|
|
27
|
+
- `abs:` for broader abstract search when title search yields < 5 results
|
|
28
|
+
- `all:` only as a last resort for very niche topics
|
|
29
|
+
- APPLY category filters: `cat:cs.LG` or equivalent from knowledge/domain.md
|
|
30
|
+
- APPLY Boolean operators: `AND` for required terms, `OR` for synonyms, `ANDNOT` for exclusions
|
|
31
|
+
- SET `sortBy=submittedDate` for exploratory/recent queries, `sortBy=relevance` for targeted queries
|
|
32
|
+
- SET `max_results=15` to allow for filtering headroom
|
|
33
|
+
- EXAMPLE: `search_query=(ti:retrieval+augmented+generation+OR+ti:RAG)+AND+cat:cs.CL&sortBy=submittedDate&max_results=15`
|
|
34
|
+
|
|
35
|
+
### Semantic Scholar Query
|
|
36
|
+
- SET `query` with core terms (natural language works better here than on arXiv)
|
|
37
|
+
- SET `fields=title,authors,year,abstract,citationCount,influentialCitationCount,venue,openAccessPdf,tldr,externalIds,publicationTypes`
|
|
38
|
+
- SET `year` range based on temporal scope from Step 1
|
|
39
|
+
- SET `fieldsOfStudy` to the appropriate discipline
|
|
40
|
+
- SET `limit=15`
|
|
41
|
+
- EXAMPLE: `query=retrieval augmented generation hallucination&year=2023-&fieldsOfStudy=Computer Science&limit=15`
|
|
42
|
+
|
|
43
|
+
### Google Scholar Query (via google-search skill)
|
|
44
|
+
- Construct using google-search query operators: `intitle:"core term"`, `author:"name"`, `source:"venue"`
|
|
45
|
+
- Apply date filters via `as_ylo` and `as_yhi` parameters
|
|
46
|
+
- Use `site:scholar.google.com` prefix when routing through google-search skill
|
|
47
|
+
- Target 10 results
|
|
48
|
+
|
|
49
|
+
- VERIFY each query avoids anti-patterns from knowledge/anti-patterns.md:
|
|
50
|
+
- Not a natural language sentence (Anti-Pattern #1)
|
|
51
|
+
- Not overly broad (Anti-Pattern #3) or overly narrow (Anti-Pattern #4)
|
|
52
|
+
- Uses field-appropriate terminology (Anti-Pattern #5)
|
|
53
|
+
|
|
54
|
+
## Step 3: Abstract Screening & Relevance Filtering
|
|
55
|
+
- Execute all database queries (arXiv, Semantic Scholar, Google Scholar) in parallel
|
|
56
|
+
- For each returned paper, perform rapid abstract screening:
|
|
57
|
+
1. **Title scan** -- Does the title contain core topic terms? (5 seconds per paper)
|
|
58
|
+
2. **Abstract relevance check** -- Does the abstract address the user's specific question? (15 seconds per paper)
|
|
59
|
+
3. **Methodology match** -- IF the user specified a methodology preference THEN verify the paper uses that approach
|
|
60
|
+
4. **Temporal check** -- Is the paper within the specified date range?
|
|
61
|
+
- Apply inclusion criteria (must meet ALL):
|
|
62
|
+
- Directly addresses the core topic (not merely mentions it)
|
|
63
|
+
- Is an actual academic paper (not a blog post, news article, or course material)
|
|
64
|
+
- Has accessible metadata (title, authors, year at minimum)
|
|
65
|
+
- Apply exclusion criteria (reject if ANY):
|
|
66
|
+
- Paper is retracted or has a published erratum that invalidates key findings
|
|
67
|
+
- Paper is a duplicate of another result (apply deduplication protocol from knowledge/best-practices.md)
|
|
68
|
+
- Paper is from a known predatory journal or publisher
|
|
69
|
+
- Deduplicate across databases:
|
|
70
|
+
- Match by DOI first (definitive)
|
|
71
|
+
- Match by arXiv ID second
|
|
72
|
+
- Fuzzy match by title + first author + year for remaining
|
|
73
|
+
- Merge metadata: keep the richest record, link to open-access version
|
|
74
|
+
- IF fewer than 5 papers pass screening THEN:
|
|
75
|
+
- Expand query with synonym variants (knowledge/best-practices.md, Query Expansion Techniques)
|
|
76
|
+
- Broaden date range by 2 years
|
|
77
|
+
- Remove one category/field filter
|
|
78
|
+
- Re-execute and re-screen
|
|
79
|
+
|
|
80
|
+
## Step 4: Cross-Reference & Citation Analysis
|
|
81
|
+
- For the top 3 papers from Step 3, perform citation graph analysis:
|
|
82
|
+
|
|
83
|
+
### Forward Citation Check (Who cites this paper?)
|
|
84
|
+
- Query Semantic Scholar `/paper/{id}/citations` with `limit=20`
|
|
85
|
+
- Filter citations by year (recent only) and relevance (title/abstract scan)
|
|
86
|
+
- IF a citing paper is more relevant than a lower-ranked result from Step 3 THEN promote it into the candidate set
|
|
87
|
+
|
|
88
|
+
### Backward Reference Check (What does this paper cite?)
|
|
89
|
+
- Query Semantic Scholar `/paper/{id}/references` with `limit=20`
|
|
90
|
+
- Identify foundational papers (high citation count) and methodological sources
|
|
91
|
+
- IF user intent is "Exploratory" THEN include the most-cited reference as a foundational reading recommendation
|
|
92
|
+
|
|
93
|
+
### Citation-Based Quality Signals
|
|
94
|
+
- Calculate citation velocity: `citationCount / (currentYear - publicationYear)`
|
|
95
|
+
- Note influential citation count vs. total citations (Semantic Scholar)
|
|
96
|
+
- Flag papers with unusually high self-citation ratios (> 30% self-citations)
|
|
97
|
+
|
|
98
|
+
- Apply multi-factor ranking from knowledge/best-practices.md:
|
|
99
|
+
- Topical Relevance (35%)
|
|
100
|
+
- Methodological Rigor (20%)
|
|
101
|
+
- Venue Quality (15%)
|
|
102
|
+
- Recency (15%)
|
|
103
|
+
- Impact (15%)
|
|
104
|
+
- Sort candidates by weighted score, descending
|
|
105
|
+
- Select Top 5 papers
|
|
106
|
+
|
|
107
|
+
## Step 5: Synthesis & Structured Output
|
|
108
|
+
- For each of the Top 5 papers, produce a structured entry:
|
|
109
|
+
```
|
|
110
|
+
[Rank]. Title
|
|
111
|
+
Authors: First Author et al. (Year)
|
|
112
|
+
Venue: Name [Peer-reviewed / Preprint / Workshop]
|
|
113
|
+
Citations: X total, Y influential | Velocity: Z/year
|
|
114
|
+
IDs: arXiv:XXXX.XXXXX | DOI:10.XXXX/XXXXX
|
|
115
|
+
Open Access: [Yes - URL] / [No - suggest alternatives]
|
|
116
|
+
Key Findings: 1-2 sentences on the main contribution
|
|
117
|
+
Methodology: Brief description of the approach
|
|
118
|
+
Relevance: Why this paper matters for the user's query
|
|
119
|
+
```
|
|
120
|
+
- Generate a synthesis section connecting the Top 5 papers:
|
|
121
|
+
- **Thematic Clusters** -- Group papers by approach or subtopic (e.g., "Papers 1 and 3 propose attention-based methods, while 2 and 4 use retrieval-augmented approaches")
|
|
122
|
+
- **Consensus** -- What findings are consistent across multiple papers?
|
|
123
|
+
- **Divergence** -- Where do results or conclusions conflict, and what explains the differences?
|
|
124
|
+
- **Research Gaps** -- What questions are not yet answered by the current literature?
|
|
125
|
+
- **Suggested Reading Order** -- Recommend which paper to read first based on the user's apparent expertise level
|
|
126
|
+
|
|
127
|
+
- SELF-CHECK before presenting results:
|
|
128
|
+
- Are all 5 papers real (retrieved from APIs, not fabricated)? (Anti-Pattern #14)
|
|
129
|
+
- Is publication status clearly indicated for each paper? (Anti-Pattern #11)
|
|
130
|
+
- Is bibliographic metadata complete? (Anti-Pattern #12)
|
|
131
|
+
- Are at least 2 databases represented in the results?
|
|
132
|
+
- Is there at least 1 open-access paper in the Top 5?
|
|
133
|
+
- Does the synthesis connect papers rather than just listing them? (Anti-Pattern #13)
|
|
134
|
+
- IF any check fails THEN loop back to the relevant step to fix the issue
|