Not in the top 1,000 by GitHub stars
O0000-code/paper-search-pro
Academic literature discovery as a Skill — Claude Code · Codex · any agent that loads SKILL.md. Five sources · four tiers · single-file Shadcn report.
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
b551d741d040 → b551d741d040
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → b551d741d040
No earlier version was observed for comparison.
Verified commit b551d741d0408b2beb8d5a0f023adb3fc8ec23b7
git clone --filter=blob:none --no-checkout https://github.com/O0000-code/paper-search-pro.git .hotskills/o0000-code-paper-search-pro && git -C .hotskills/o0000-code-paper-search-pro checkout --detach b551d741d0408b2beb8d5a0f023adb3fc8ec23b7
# Copy each selected skill directory from .hotskills/o0000-code-paper-search-pro into .claude/skills/<skill-name>/Heat
6.0- Star growth, last 7 daysNot available
- Star growth, last 24 hoursNot available
- Rank movement, last 7 daysNot available
- Commits, last 30 daysNot available
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekNot available
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
30-day change not yet available: not enough history.
Individual skills in this repository
How it works
paper-search-pro
When your agent uses it
Find academic papers across up to 8 sources (OpenAlex / Semantic Scholar / CrossRef / PubMed / arXiv for English, OpenReview for AI venues, plus native-Chinese retrieval via NSSD 国家哲社文献中心 + yiigle 中华医学期刊) with adjustable depth — Quick scan (5 min) to Audit prep (3 hr). Use when the user wants to find papers, run a literature search, gather references, scope a research topic, search Chinese-language / 中文原生 literature (中文文献/中文核心/CSSCI/C刊/国内研究/国内文献/中华××期刊/心理学报/经济研究), or filter results by journal tier (中科院分区/一区/几区, Q1, JCR/SJR quartile, 影响因子/impact factor, 期刊分区, 顶刊/top journal, '按分区筛'), or export paste-ready professional search strategies / 检索式 for external databases (PubMed / WOS / Scopus / Embase / 知网 CNKI / 万方 / SinoMed — '写检索式', '导出检索式', 'WOS 检索式', '知网专业检索', 'search strategy', 'boolean search strategy'). Triggers on search verbs ('find papers', 'literature search', 'papers about X'), review types ('scoping review', 'systematic review', 'SR prep', 'literature review', 'lit review', 'help me write a lit review'), Chinese ('找文献', '找论文', '论文搜索', '学术检索', '文献检索', '文献综述', '综述前期', '求文献', '中文文献', '中文核心', 'CSSCI', 'C刊', '国内研究', '找中文的'). Outputs Shadcn HTML report + BibTeX/RIS/CSV + PRISMA-S log. Do NOT use for: concept explanations ('what is X' / 'X 是什么', e.g. '影响因子怎么算'), writing ('帮我写' / 'help me write a paragraph'), single-paper interpretation or PDF download with metadata (use paper-downloader-portable), or when the user already has a literature set (use literature-set-review).
What it loads into context
Frontmatter
554 tokensAlways available to the agent
SKILL.md
17,068 tokensWhen the skill is activated
Reference documents
139,337 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to use this skill
- When NOT to use
- 🤖 Called by another agent / headless mode
- 🔥 Execution discipline (read before running anything)
- Architecture at a glance
- The 4 tiers — pick first
- The recipe
- Output convention
- Error handling
- References (progressive disclosure — read the one for the step you're on)
- Examples
Scripts executed separately
assets/webartifacts_app/paper-report/eslint.config.jsassets/webartifacts_app/paper-report/package.jsonassets/webartifacts_app/paper-report/postcss.config.jsassets/webartifacts_app/paper-report/src/App.tsxassets/webartifacts_app/paper-report/src/components/adapters/KickerAccordion.tsxassets/webartifacts_app/paper-report/src/components/adapters/KickerAlert.tsxassets/webartifacts_app/paper-report/src/components/adapters/SearchInput.tsxassets/webartifacts_app/paper-report/src/components/adapters/SegmentedToggle.tsxassets/webartifacts_app/paper-report/src/components/adapters/SimpleTooltip.tsxassets/webartifacts_app/paper-report/src/components/audit/AuditTab.tsxassets/webartifacts_app/paper-report/src/components/audit/ComplianceSummary.tsxassets/webartifacts_app/paper-report/src/components/audit/PhaseGroup.tsxassets/webartifacts_app/paper-report/src/components/audit/PrismaRow.tsxassets/webartifacts_app/paper-report/src/components/audit/StatusDot.tsxassets/webartifacts_app/paper-report/src/components/audit/audit-utils.tsxassets/webartifacts_app/paper-report/src/components/chrome/LayoutSwitcher.tsxassets/webartifacts_app/paper-report/src/components/chrome/thumbs/Thumbs.tsxassets/webartifacts_app/paper-report/src/components/extensions/ExtensionsTab.tsxassets/webartifacts_app/paper-report/src/components/hero/FilterBar.tsxassets/webartifacts_app/paper-report/src/components/hero/ReportTitle.tsxassets/webartifacts_app/paper-report/src/components/hero/SliderWithZones.tsxassets/webartifacts_app/paper-report/src/components/hero/TierStrip.tsxassets/webartifacts_app/paper-report/src/components/hero/tops/BrandLink.tsxassets/webartifacts_app/paper-report/src/components/hero/tops/DocumentTop.tsxassets/webartifacts_app/paper-report/src/components/hero/tops/EditorialTop.tsxassets/webartifacts_app/paper-report/src/components/hero/tops/SwissTop.tsxassets/webartifacts_app/paper-report/src/components/methods/CitationScatter.tsxassets/webartifacts_app/paper-report/src/components/methods/DiscoveryCurve.tsxassets/webartifacts_app/paper-report/src/components/methods/MethodologyAccordion.tsxassets/webartifacts_app/paper-report/src/components/methods/MethodsTab.tsxassets/webartifacts_app/paper-report/src/components/methods/RcsHistogram.tsxassets/webartifacts_app/paper-report/src/components/methods/SearchStrategies.tsxassets/webartifacts_app/paper-report/src/components/methods/SectionHeader.tsxassets/webartifacts_app/paper-report/src/components/methods/Stat.tsxassets/webartifacts_app/paper-report/src/components/methods/TierAllocation.tsxassets/webartifacts_app/paper-report/src/components/methods/TopicsTreemap.tsxassets/webartifacts_app/paper-report/src/components/methods/YearBarChart.tsxassets/webartifacts_app/paper-report/src/components/methods/useInsights.tsassets/webartifacts_app/paper-report/src/components/papers/JournalRank.tsxassets/webartifacts_app/paper-report/src/components/papers/PaperCardItem.tsxassets/webartifacts_app/paper-report/src/components/papers/PaperList.tsxassets/webartifacts_app/paper-report/src/components/papers/PaperRowCatalog.tsxassets/webartifacts_app/paper-report/src/components/papers/PaperRowIndex.tsxassets/webartifacts_app/paper-report/src/components/papers/PaperRowIndexHeader.tsxassets/webartifacts_app/paper-report/src/components/papers/PaperSheet.tsxassets/webartifacts_app/paper-report/src/components/papers/QuickJump.tsxassets/webartifacts_app/paper-report/src/components/papers/TierDot.tsxassets/webartifacts_app/paper-report/src/components/papers/TierHeader.tsxassets/webartifacts_app/paper-report/src/components/papers/ZoneFilter.tsxassets/webartifacts_app/paper-report/src/components/ui/accordion.tsxassets/webartifacts_app/paper-report/src/components/ui/alert.tsxassets/webartifacts_app/paper-report/src/components/ui/aspect-ratio.tsxassets/webartifacts_app/paper-report/src/components/ui/avatar.tsxassets/webartifacts_app/paper-report/src/components/ui/badge.tsxassets/webartifacts_app/paper-report/src/components/ui/breadcrumb.tsxassets/webartifacts_app/paper-report/src/components/ui/button.tsxassets/webartifacts_app/paper-report/src/components/ui/calendar.tsxassets/webartifacts_app/paper-report/src/components/ui/card.tsxassets/webartifacts_app/paper-report/src/components/ui/carousel.tsxassets/webartifacts_app/paper-report/src/components/ui/chart.tsxassets/webartifacts_app/paper-report/src/components/ui/checkbox.tsxassets/webartifacts_app/paper-report/src/components/ui/collapsible.tsxassets/webartifacts_app/paper-report/src/components/ui/command.tsxassets/webartifacts_app/paper-report/src/components/ui/context-menu.tsxassets/webartifacts_app/paper-report/src/components/ui/dialog.tsxassets/webartifacts_app/paper-report/src/components/ui/drawer.tsxassets/webartifacts_app/paper-report/src/components/ui/dropdown-menu.tsxassets/webartifacts_app/paper-report/src/components/ui/form.tsxassets/webartifacts_app/paper-report/src/components/ui/hover-card.tsxassets/webartifacts_app/paper-report/src/components/ui/input.tsxassets/webartifacts_app/paper-report/src/components/ui/label.tsxassets/webartifacts_app/paper-report/src/components/ui/menubar.tsxassets/webartifacts_app/paper-report/src/components/ui/navigation-menu.tsxassets/webartifacts_app/paper-report/src/components/ui/popover.tsxassets/webartifacts_app/paper-report/src/components/ui/progress.tsxassets/webartifacts_app/paper-report/src/components/ui/radio-group.tsxassets/webartifacts_app/paper-report/src/components/ui/resizable.tsxassets/webartifacts_app/paper-report/src/components/ui/scroll-area.tsxassets/webartifacts_app/paper-report/src/components/ui/select.tsxassets/webartifacts_app/paper-report/src/components/ui/separator.tsxassets/webartifacts_app/paper-report/src/components/ui/sheet.tsxassets/webartifacts_app/paper-report/src/components/ui/skeleton.tsxassets/webartifacts_app/paper-report/src/components/ui/slider.tsxassets/webartifacts_app/paper-report/src/components/ui/sonner.tsxassets/webartifacts_app/paper-report/src/components/ui/switch.tsxassets/webartifacts_app/paper-report/src/components/ui/table.tsxassets/webartifacts_app/paper-report/src/components/ui/tabs.tsxassets/webartifacts_app/paper-report/src/components/ui/textarea.tsxassets/webartifacts_app/paper-report/src/components/ui/toggle-group.tsxassets/webartifacts_app/paper-report/src/components/ui/toggle.tsxassets/webartifacts_app/paper-report/src/components/ui/tooltip.tsxassets/webartifacts_app/paper-report/src/lib/format.tsassets/webartifacts_app/paper-report/src/lib/i18n.tsassets/webartifacts_app/paper-report/src/lib/mock-data.tsassets/webartifacts_app/paper-report/src/lib/normalize.tsassets/webartifacts_app/paper-report/src/lib/prisma-titles.tsassets/webartifacts_app/paper-report/src/lib/safari-detect.tsassets/webartifacts_app/paper-report/src/lib/types.tsassets/webartifacts_app/paper-report/src/lib/utils.tsassets/webartifacts_app/paper-report/src/main.tsxassets/webartifacts_app/paper-report/tailwind.config.jsassets/webartifacts_app/paper-report/vite.config.tsscripts/__init__.pyscripts/agent_search.pyscripts/arxiv_helper.pyscripts/config.pyscripts/crossref_helper.pyscripts/data_materialization.pyscripts/detect_language.pyscripts/discovery_curve.pyscripts/federated_kg_resolver.pyscripts/generate_exports.pyscripts/html_renderer_webartifacts.pyscripts/journal_rank.pyscripts/md_report.pyscripts/nssd_helper.pyscripts/openalex_guard.pyscripts/openalex_helper.pyscripts/openreview_helper.pyscripts/prisma_s_logger.pyscripts/pubmed_helper.pyscripts/quota_guard.pyscripts/rank_filter.pyscripts/rank_intent.pyscripts/rcs_parser.pyscripts/report_identity.pyscripts/search_export/__init__.pyscripts/search_export/deeplink.pyscripts/search_export/generate.pyscripts/search_export/linter.pyscripts/search_export/proximity.pyscripts/search_export/vocab_verify.pyscripts/semantic_cache.pyscripts/sjr_helper.pyscripts/source_fallback.pyscripts/ss_helper.pyscripts/types.pyscripts/vendored/__init__.pyscripts/vendored/tenacity_retry.pyscripts/yiigle_helper.pytests/__init__.pytests/test_agent_rank.pytests/test_agent_search.pytests/test_arxiv_helper.pytests/test_arxiv_recent.pytests/test_coverage_report.pytests/test_crossref_helper.pytests/test_data_materialization_rank.pytests/test_detect_language.pytests/test_discovery_curve.pytests/test_enrich_kg.pytests/test_federated_kg_resolver.pytests/test_html_renderer_webartifacts.pytests/test_journal_rank.pytests/test_modules_smoke.pytests/test_nssd_helper.pytests/test_openalex_fallback.pytests/test_openalex_helper.pytests/test_openreview_helper.pytests/test_openreview_merge.pytests/test_pool_count.pytests/test_prisma_s_logger.pytests/test_pubmed_helper.pytests/test_query_warning.pytests/test_quota_guard.pytests/test_rank_filter.pytests/test_rank_intent.pytests/test_rcs_parser.pytests/test_recency_legs.pytests/test_report_identity.pytests/test_search_export_deeplink.pytests/test_search_export_generate.pytests/test_search_export_linter.pytests/test_search_export_proximity.pytests/test_search_export_vocab_verify.pytests/test_sjr_helper.pytests/test_ss_helper.pytests/test_stable_ids.pytests/test_year_and_query_edges.pytests/test_year_bounds.pytests/test_yiigle_helper.py
Files
.github/og-image.pngasset44,020 bytes.github/workflows/tests.ymlasset555 bytes.gitignoreasset1,342 bytes.skillignoreasset2,569 bytesCLAUDE.mddoc3,968 bytesLICENSE.txtdoc11,358 bytesNOTICE.mddoc2,335 bytesREADME.mddoc13,595 bytesREADME.zh.mddoc13,266 bytesSKILL.mdcore67,069 bytesSKILL.mdcore67,069 bytesSKILL.mdcore67,069 bytesSKILL.mdcore67,069 bytesSKILL.mdcore67,069 bytesSKILL.mdcore67,069 bytesSKILL.mdcore67,069 bytesSKILL.mdcore67,069 bytesSKILL.mdcore67,069 bytesSKILL.mdcore67,069 bytesSKILL.mdcore67,069 bytesSKILL.mdcore67,069 bytesSKILL.mdcore67,069 bytesSKILL.mdcore67,069 bytesSKILL.mdcore67,069 bytesSKILL.mdcore67,069 bytesSKILL.mdcore67,069 bytesSKILL.mdcore67,069 bytesSKILL.mdcore67,069 bytesSKILL.mdcore67,069 bytesSKILL.mdcore67,069 bytesSKILL.mdcore67,069 bytesSKILL.mdcore67,069 bytesSKILL.mdcore67,069 bytesSKILL.mdcore67,069 bytesSKILL.mdcore67,069 bytesSKILL.mdcore67,069 bytesSKILL.mdcore67,069 bytesSKILL.mdcore67,069 bytesSKILL.mdcore67,069 bytesSKILL.mdcore67,069 bytesSKILL.mdcore67,069 bytesSKILL.mdcore67,069 bytesSKILL.mdcore67,069 bytesSKILL.mdcore67,069 bytesSKILL.mdcore67,069 bytesTHIRD_PARTY.mddoc5,694 bytesassets/benchmark_queries/custom_zh_queries.jsonasset5,949 bytesassets/benchmark_queries/litsearch_subset.jsonasset4,841 bytesassets/benchmark_queries/sparbench_subset.jsonasset3,143 bytesassets/default_config.yamlasset7,289 bytesassets/md_template.md.jinjaasset5,858 bytesassets/webartifacts_app/paper-report/.gitignoreasset342 bytesassets/webartifacts_app/paper-report/.parcelrcasset93 bytesassets/webartifacts_app/paper-report/README.mddoc2,425 bytesassets/webartifacts_app/paper-report/bundle.htmlasset7,198,281 bytesassets/webartifacts_app/paper-report/components.jsonasset414 bytesassets/webartifacts_app/paper-report/eslint.config.jsruns591 bytesassets/webartifacts_app/paper-report/index.htmlasset324 bytesassets/webartifacts_app/paper-report/package.jsonruns2,622 bytesassets/webartifacts_app/paper-report/pnpm-lock.yamlasset232,360 bytesassets/webartifacts_app/paper-report/postcss.config.jsruns80 bytesassets/webartifacts_app/paper-report/public/favicon.svgasset9,522 bytesassets/webartifacts_app/paper-report/public/icons.svgasset5,031 bytesassets/webartifacts_app/paper-report/src/App.cssasset64 bytesassets/webartifacts_app/paper-report/src/App.tsxruns12,830 bytesassets/webartifacts_app/paper-report/src/assets/hero.pngasset13,057 bytesassets/webartifacts_app/paper-report/src/assets/react.svgasset4,126 bytesassets/webartifacts_app/paper-report/src/assets/vite.svgasset8,709 bytesassets/webartifacts_app/paper-report/src/components/adapters/KickerAccordion.tsxruns2,725 bytesassets/webartifacts_app/paper-report/src/components/adapters/KickerAlert.tsxruns1,572 bytesassets/webartifacts_app/paper-report/src/components/adapters/SearchInput.tsxruns835 bytesassets/webartifacts_app/paper-report/src/components/adapters/SegmentedToggle.tsxruns1,815 bytesassets/webartifacts_app/paper-report/src/components/adapters/SimpleTooltip.tsxruns1,174 bytesassets/webartifacts_app/paper-report/src/components/audit/AuditTab.tsxruns4,777 bytesassets/webartifacts_app/paper-report/src/components/audit/ComplianceSummary.tsxruns6,420 bytesassets/webartifacts_app/paper-report/src/components/audit/PhaseGroup.tsxruns2,794 bytesassets/webartifacts_app/paper-report/src/components/audit/PrismaRow.tsxruns8,318 bytesassets/webartifacts_app/paper-report/src/components/audit/StatusDot.tsxruns1,189 bytesassets/webartifacts_app/paper-report/src/components/audit/audit-utils.tsxruns8,761 bytesassets/webartifacts_app/paper-report/src/components/chrome/LayoutSwitcher.tsxruns12,213 bytesassets/webartifacts_app/paper-report/src/components/chrome/thumbs/Thumbs.tsxruns5,147 bytesassets/webartifacts_app/paper-report/src/components/extensions/ExtensionsTab.tsxruns1,087 bytesassets/webartifacts_app/paper-report/src/components/hero/FilterBar.tsxruns4,451 bytesassets/webartifacts_app/paper-report/src/components/hero/ReportTitle.tsxruns2,664 bytesassets/webartifacts_app/paper-report/src/components/hero/SliderWithZones.tsxruns2,612 bytesassets/webartifacts_app/paper-report/src/components/hero/TierStrip.tsxruns3,445 bytesassets/webartifacts_app/paper-report/src/components/hero/tops/BrandLink.tsxruns962 bytesassets/webartifacts_app/paper-report/src/components/hero/tops/DocumentTop.tsxruns16,004 bytesassets/webartifacts_app/paper-report/src/components/hero/tops/EditorialTop.tsxruns11,529 bytesassets/webartifacts_app/paper-report/src/components/hero/tops/SwissTop.tsxruns16,330 bytesassets/webartifacts_app/paper-report/src/components/methods/CitationScatter.tsxruns11,402 bytesassets/webartifacts_app/paper-report/src/components/methods/DiscoveryCurve.tsxruns8,931 bytesassets/webartifacts_app/paper-report/src/components/methods/MethodologyAccordion.tsxruns2,810 bytesassets/webartifacts_app/paper-report/src/components/methods/MethodsTab.tsxruns12,562 bytesassets/webartifacts_app/paper-report/src/components/methods/RcsHistogram.tsxruns4,370 bytesassets/webartifacts_app/paper-report/src/components/methods/SearchStrategies.tsxruns31,339 bytesassets/webartifacts_app/paper-report/src/components/methods/SectionHeader.tsxruns1,373 bytesassets/webartifacts_app/paper-report/src/components/methods/Stat.tsxruns1,215 bytesassets/webartifacts_app/paper-report/src/components/methods/TierAllocation.tsxruns6,713 bytesassets/webartifacts_app/paper-report/src/components/methods/TopicsTreemap.tsxruns16,691 bytesassets/webartifacts_app/paper-report/src/components/methods/YearBarChart.tsxruns4,002 bytesassets/webartifacts_app/paper-report/src/components/methods/useInsights.tsruns3,342 bytesassets/webartifacts_app/paper-report/src/components/papers/JournalRank.tsxruns8,557 bytesassets/webartifacts_app/paper-report/src/components/papers/PaperCardItem.tsxruns9,302 bytesassets/webartifacts_app/paper-report/src/components/papers/PaperList.tsxruns5,264 bytesassets/webartifacts_app/paper-report/src/components/papers/PaperRowCatalog.tsxruns6,280 bytesassets/webartifacts_app/paper-report/src/components/papers/PaperRowIndex.tsxruns4,203 bytesassets/webartifacts_app/paper-report/src/components/papers/PaperRowIndexHeader.tsxruns1,170 bytesassets/webartifacts_app/paper-report/src/components/papers/PaperSheet.tsxruns21,038 bytesassets/webartifacts_app/paper-report/src/components/papers/QuickJump.tsxruns2,090 bytesassets/webartifacts_app/paper-report/src/components/papers/TierDot.tsxruns699 bytesassets/webartifacts_app/paper-report/src/components/papers/TierHeader.tsxruns3,297 bytesassets/webartifacts_app/paper-report/src/components/papers/ZoneFilter.tsxruns6,001 bytesassets/webartifacts_app/paper-report/src/components/ui/accordion.tsxruns2,001 bytesassets/webartifacts_app/paper-report/src/components/ui/alert.tsxruns1,598 bytesassets/webartifacts_app/paper-report/src/components/ui/aspect-ratio.tsxruns140 bytesassets/webartifacts_app/paper-report/src/components/ui/avatar.tsxruns1,405 bytesassets/webartifacts_app/paper-report/src/components/ui/badge.tsxruns1,140 bytesassets/webartifacts_app/paper-report/src/components/ui/breadcrumb.tsxruns2,712 bytesassets/webartifacts_app/paper-report/src/components/ui/button.tsxruns1,902 bytesassets/webartifacts_app/paper-report/src/components/ui/calendar.tsxruns7,555 bytesassets/webartifacts_app/paper-report/src/components/ui/card.tsxruns1,828 bytesassets/webartifacts_app/paper-report/src/components/ui/carousel.tsxruns6,224 bytesassets/webartifacts_app/paper-report/src/components/ui/chart.tsxruns10,473 bytesassets/webartifacts_app/paper-report/src/components/ui/checkbox.tsxruns1,026 bytesassets/webartifacts_app/paper-report/src/components/ui/collapsible.tsxruns315 bytesassets/webartifacts_app/paper-report/src/components/ui/command.tsxruns4,887 bytesassets/webartifacts_app/paper-report/src/components/ui/context-menu.tsxruns7,420 bytesassets/webartifacts_app/paper-report/src/components/ui/dialog.tsxruns3,835 bytesassets/webartifacts_app/paper-report/src/components/ui/drawer.tsxruns3,021 bytesassets/webartifacts_app/paper-report/src/components/ui/dropdown-menu.tsxruns7,606 bytesassets/webartifacts_app/paper-report/src/components/ui/form.tsxruns4,118 bytesassets/webartifacts_app/paper-report/src/components/ui/hover-card.tsxruns1,251 bytesassets/webartifacts_app/paper-report/src/components/ui/input.tsxruns768 bytesassets/webartifacts_app/paper-report/src/components/ui/label.tsxruns724 bytesassets/webartifacts_app/paper-report/src/components/ui/menubar.tsxruns8,622 bytesassets/webartifacts_app/paper-report/src/components/ui/navigation-menu.tsxruns5,124 bytesassets/webartifacts_app/paper-report/src/components/ui/popover.tsxruns1,356 bytesassets/webartifacts_app/paper-report/src/components/ui/progress.tsxruns778 bytesassets/webartifacts_app/paper-report/src/components/ui/radio-group.tsxruns1,410 bytesassets/webartifacts_app/paper-report/src/components/ui/resizable.tsxruns1,709 bytesassets/webartifacts_app/paper-report/src/components/ui/scroll-area.tsxruns1,642 bytesassets/webartifacts_app/paper-report/src/components/ui/select.tsxruns5,731 bytesassets/webartifacts_app/paper-report/src/components/ui/separator.tsxruns770 bytesassets/webartifacts_app/paper-report/src/components/ui/sheet.tsxruns4,280 bytesassets/webartifacts_app/paper-report/src/components/ui/skeleton.tsxruns266 bytesassets/webartifacts_app/paper-report/src/components/ui/slider.tsxruns1,037 bytesassets/webartifacts_app/paper-report/src/components/ui/sonner.tsxruns1,461 bytesassets/webartifacts_app/paper-report/src/components/ui/switch.tsxruns1,162 bytesassets/webartifacts_app/paper-report/src/components/ui/table.tsxruns2,859 bytesassets/webartifacts_app/paper-report/src/components/ui/tabs.tsxruns1,877 bytesassets/webartifacts_app/paper-report/src/components/ui/textarea.tsxruns649 bytesassets/webartifacts_app/paper-report/src/components/ui/toggle-group.tsxruns1,739 bytesassets/webartifacts_app/paper-report/src/components/ui/toggle.tsxruns1,486 bytesassets/webartifacts_app/paper-report/src/components/ui/tooltip.tsxruns1,253 bytesassets/webartifacts_app/paper-report/src/fonts/geist-mono.woff2asset31,368 bytesassets/webartifacts_app/paper-report/src/fonts/geist-sans.woff2asset28,396 bytesassets/webartifacts_app/paper-report/src/index.cssasset6,232,660 bytesassets/webartifacts_app/paper-report/src/lib/format.tsruns2,126 bytesassets/webartifacts_app/paper-report/src/lib/i18n.tsruns38,823 bytesassets/webartifacts_app/paper-report/src/lib/mock-data.tsruns66,183 bytesassets/webartifacts_app/paper-report/src/lib/normalize.tsruns7,749 bytesassets/webartifacts_app/paper-report/src/lib/prisma-titles.tsruns3,157 bytesassets/webartifacts_app/paper-report/src/lib/safari-detect.tsruns1,580 bytesassets/webartifacts_app/paper-report/src/lib/types.tsruns8,162 bytesassets/webartifacts_app/paper-report/src/lib/utils.tsruns166 bytesassets/webartifacts_app/paper-report/src/main.tsxruns1,152 bytesassets/webartifacts_app/paper-report/tailwind.config.jsruns2,157 bytesassets/webartifacts_app/paper-report/tsconfig.app.jsonasset1,052 bytesassets/webartifacts_app/paper-report/tsconfig.jsonasset248 bytesassets/webartifacts_app/paper-report/tsconfig.node.jsonasset591 bytesassets/webartifacts_app/paper-report/vite.config.tsruns244 bytesdocs/index.htmlasset7,198,281 bytesdocs/screenshots/audit-zh.pngasset253,247 bytesdocs/screenshots/audit.pngasset248,744 bytesdocs/screenshots/discovery-report-zh.pngasset345,311 bytesdocs/screenshots/discovery-report.pngasset328,736 bytesdocs/screenshots/findings-zh.pngasset411,870 bytesdocs/screenshots/findings.pngasset405,393 bytesdocs/screenshots/methods-2-zh.pngasset192,675 bytesdocs/screenshots/methods-2.pngasset181,295 bytesdocs/screenshots/methods-3-zh.pngasset215,661 bytesdocs/screenshots/methods-3.pngasset196,501 bytesdocs/screenshots/methods-zh.pngasset251,702 bytesdocs/screenshots/methods.pngasset244,871 bytesevals/evals.jsonasset1,624 bytespytest.iniasset137 bytesreferences/agent_mode.mddoc49,115 bytesreferences/arxiv_helper_cheatsheet.mddoc7,302 bytesreferences/citation_chasing.mddoc5,239 bytesreferences/classifier_subagent_prompt.mddoc5,134 bytesreferences/crossref_helper_cheatsheet.mddoc6,680 bytesreferences/error_handling.mddoc9,391 bytesreferences/journal_metrics.mddoc14,022 bytesreferences/openalex_helper_cheatsheet.mddoc9,128 bytesreferences/openreview_helper_cheatsheet.mddoc7,576 bytesreferences/output_files.mddoc8,393 bytesreferences/prisma_s_checklist.mddoc8,422 bytesreferences/pubmed_helper_cheatsheet.mddoc7,098 bytesreferences/query_planner.mddoc14,264 bytesreferences/rcs_rubric.mddoc6,936 bytesreferences/report_title.mddoc8,613 bytesreferences/runtime_bootstrap.mddoc4,918 bytesreferences/search_export/chinese_methodology.mddoc17,322 bytesreferences/search_export/filters_library.mddoc7,341 bytesreferences/search_export/methodology.mddoc23,938 bytesreferences/search_export/press_checklist.mddoc6,879 bytesreferences/search_export/proximity_table.jsonasset7,146 bytesreferences/search_export/syntax_cards/acm_dl.mddoc5,542 bytesreferences/search_export/syntax_cards/cab_cabi.mddoc11,419 bytesreferences/search_export/syntax_cards/cinahl_ebsco.mddoc9,007 bytesreferences/search_export/syntax_cards/clinicaltrials_gov.mddoc12,296 bytesreferences/search_export/syntax_cards/cnki.mddoc11,987 bytesreferences/search_export/syntax_cards/cochrane_central.mddoc7,802 bytesreferences/search_export/syntax_cards/econlit_ebsco.mddoc10,037 bytesreferences/search_export/syntax_cards/embase_com.mddoc6,475 bytesreferences/search_export/syntax_cards/embase_ovid.mddoc7,444 bytesreferences/search_export/syntax_cards/eric.mddoc6,252 bytesreferences/search_export/syntax_cards/ieee_xplore.mddoc6,120 bytesreferences/search_export/syntax_cards/psycinfo_ebsco.mddoc6,640 bytesreferences/search_export/syntax_cards/psycinfo_ovid.mddoc5,816 bytesreferences/search_export/syntax_cards/pubmed.mddoc6,073 bytesreferences/search_export/syntax_cards/scifinder.mddoc7,719 bytesreferences/search_export/syntax_cards/scopus.mddoc6,589 bytesreferences/search_export/syntax_cards/sinomed.mddoc12,128 bytesreferences/search_export/syntax_cards/wanfang.mddoc6,312 bytesreferences/search_export/syntax_cards/wos.mddoc6,630 bytesreferences/setup.mddoc11,568 bytesreferences/source_routing.mddoc28,961 bytesreferences/ss_helper_cheatsheet.mddoc8,360 bytesreferences/stop_decision.mddoc6,871 bytesreferences/summary_writer.mddoc5,668 bytesreferences/tier_decision.mddoc5,286 bytesscripts/__init__.pyruns39 bytesscripts/agent_search.pyruns121,643 bytesscripts/arxiv_helper.pyruns16,590 bytesscripts/config.pyruns3,119 bytesscripts/crossref_helper.pyruns22,506 bytesscripts/data_materialization.pyruns36,875 bytesscripts/detect_language.pyruns2,588 bytesscripts/discovery_curve.pyruns21,211 bytesscripts/federated_kg_resolver.pyruns30,009 bytesscripts/generate_exports.pyruns13,876 bytesscripts/html_renderer_webartifacts.pyruns18,311 bytesscripts/journal_rank.pyruns37,914 bytesscripts/md_report.pyruns14,310 bytesscripts/nssd_helper.pyruns26,625 bytesscripts/openalex_guard.pyruns7,304 bytesscripts/openalex_helper.pyruns60,910 bytesscripts/openreview_helper.pyruns22,243 bytesscripts/prisma_s_logger.pyruns26,249 bytesscripts/pubmed_helper.pyruns15,208 bytesscripts/quota_guard.pyruns11,411 bytesscripts/rank_filter.pyruns19,641 bytesscripts/rank_intent.pyruns26,997 bytesscripts/rcs_parser.pyruns13,665 bytesscripts/report_identity.pyruns4,788 bytesscripts/requirements.lockasset1,482 bytesscripts/requirements.txtdoc1,017 bytesscripts/search_export/__init__.pyruns937 bytesscripts/search_export/deeplink.pyruns17,085 bytesscripts/search_export/generate.pyruns75,326 bytesscripts/search_export/linter.pyruns39,378 bytesscripts/search_export/proximity.pyruns12,302 bytesscripts/search_export/vocab_verify.pyruns18,834 bytesscripts/semantic_cache.pyruns5,544 bytesscripts/sjr_helper.pyruns23,657 bytesscripts/source_fallback.pyruns10,828 bytesscripts/ss_helper.pyruns46,683 bytesscripts/types.pyruns18,871 bytesscripts/vendored/LICENSE-paperqa.txtdoc11,358 bytesscripts/vendored/README-vendored.mddoc8,687 bytesscripts/vendored/__init__.pyruns86 bytesscripts/vendored/tenacity_retry.pyruns9,192 bytesscripts/yiigle_helper.pyruns15,648 bytestests/__init__.pyruns0 bytestests/fixtures/openreview_challenge_403.jsonasset534 bytestests/fixtures/openreview_search_page1.jsonasset31,473 bytestests/fixtures/openreview_search_page2.jsonasset9,722 bytestests/test_agent_rank.pyruns17,951 bytestests/test_agent_search.pyruns56,198 bytestests/test_arxiv_helper.pyruns10,286 bytestests/test_arxiv_recent.pyruns3,520 bytestests/test_coverage_report.pyruns5,252 bytestests/test_crossref_helper.pyruns17,737 bytestests/test_data_materialization_rank.pyruns9,945 bytestests/test_detect_language.pyruns2,370 bytestests/test_discovery_curve.pyruns11,246 bytestests/test_enrich_kg.pyruns21,628 bytestests/test_federated_kg_resolver.pyruns27,343 bytestests/test_html_renderer_webartifacts.pyruns2,173 bytestests/test_journal_rank.pyruns22,047 bytestests/test_modules_smoke.pyruns2,396 bytestests/test_nssd_helper.pyruns28,982 bytestests/test_openalex_fallback.pyruns30,608 bytestests/test_openalex_helper.pyruns27,700 bytestests/test_openreview_helper.pyruns33,189 bytestests/test_openreview_merge.pyruns2,620 bytestests/test_pool_count.pyruns3,824 bytestests/test_prisma_s_logger.pyruns2,258 bytestests/test_pubmed_helper.pyruns11,675 bytestests/test_query_warning.pyruns3,409 bytestests/test_quota_guard.pyruns10,601 bytestests/test_rank_filter.pyruns17,327 bytestests/test_rank_intent.pyruns27,182 bytestests/test_rcs_parser.pyruns6,733 bytestests/test_recency_legs.pyruns12,115 bytestests/test_report_identity.pyruns7,838 bytestests/test_search_export_deeplink.pyruns10,675 bytestests/test_search_export_generate.pyruns70,404 bytestests/test_search_export_linter.pyruns18,422 bytestests/test_search_export_proximity.pyruns7,036 bytestests/test_search_export_vocab_verify.pyruns11,143 bytestests/test_sjr_helper.pyruns29,413 bytestests/test_ss_helper.pyruns33,783 bytestests/test_stable_ids.pyruns1,625 bytestests/test_year_and_query_edges.pyruns10,534 bytestests/test_year_bounds.pyruns7,601 bytestests/test_yiigle_helper.pyruns15,181 bytes
Read SKILL.md
# paper-search-pro
Multi-source literature search with adjustable depth. Four tiers, five data sources orchestrated by you (the main agent). Python helpers handle deterministic work; LLM classification is delegated to parallel Inline SubAgents — no external API key required.
## When to use this skill
- User wants to find academic papers / 找文献 / 论文搜索
- User is preparing a literature review, systematic review (SR), scoping review, or meta-analysis
- User wants to scope research on a topic for a thesis / proposal / coursework / news story
- User asks "what research exists on X" / "find me papers about Y"
- User uploads a query that suggests literature gathering (PICO, SPIDER, MeSH, RCT, etc.)
## When NOT to use
View the complete source on GitHubSkills included
- paper-search-pro
Repository facts
- License
- Apache-2.0
- Created
- May 24, 2026
- Last pushed
- Nov 3, 2026
- Forks
- 16
- Open issues
- 0
- Project activity
- Active
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 4, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 207 notes
SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- 1 broad permissionin 1 file: SKILL.md:1
- 1 dangerous shell commandin 1 file: references/output_files.md:106
- 851 network referencesin 91 files: assets/webartifacts_app/paper-report/src/lib/mock-data.ts:55 THIRD_PARTY.md:17 scripts/journal_rank.py:119 and 88 more
- No hidden or obfuscated text
- No instruction overrides
- 181 executable scriptsin 181 files: assets/webartifacts_app/paper-report/eslint.config.js:1 assets/webartifacts_app/paper-report/package.json:1 assets/webartifacts_app/paper-report/postcss.config.js:1 and 178 more
- 115 references to secretsin 34 files: scripts/ss_helper.py:83 references/setup.md:12 scripts/search_export/vocab_verify.py:134 and 31 more
- No requests to vote in Hot
Show all 1,149 signals by file
.gitignore
LICENSE.txt
NOTICE.md
- Network accessline 11
<http://www.apache.org/licenses/LICENSE-2.0> - Network accessline 35
|---|---| | **Project** | paper-qa (also known as PaperQA / PaperQA2) | | **Repository** | <https://github.com/Future-House/paper-qa> | - Network accessline 36
| **Project** | paper-qa (also known as PaperQA / PaperQA2) | | **Repository** | <https://github.com/Future-House/paper-qa> | | **License** | Apache License 2.0 | - Network accessline 37
| **Repository** | <https://github.com/Future-House/paper-qa> |
README.md
- Network accessline 21
<a href="LICENSE.txt"><img src="https://img.shields.io/badge/license-Apache_2.0-000?style=flat-square" alt="Apache 2.0"/></a> - Network accessline 22
<a href="SKILL.md"><img src="https://img.shields.io/badge/agent-Skill-000?style=flat-square" alt="Agent Skill"/></a> - Network accessline 23
<img src="https://img.shields.io/badge/Python-3.10+-000?style=flat-square" alt="Python 3.10+"/> - Network accessline 24
<img src="https://img.shields.io/badge/version-2.5.0-000?style=flat-square" alt="v2.5.0"/> - Network accessline 34
**[→ Live demo (opens the actual report in your browser)](https://o0000-code.github.io/paper-search-pro/)** - Network accessline 83
git clone https://github.com/O0000-code/paper-search-pro.git \ - Network accessline 169
| Layer | Source | Role | Cost | Apply at | |:---:|:---|:---|:---:|:---| | **L1** | OpenAlex | primary — always on | free | <https://openalex.org/settings/api> | - Network accessline 170
|:---:|:---|:---|:---:|:---| | **L1** | OpenAlex | primary — always on | free | <https://openalex.org/settings/api> | | **L2** | PubMed | medical · MeSH enricher | free | <https://account.ncbi.nlm.nih.gov/settings/> | - Network accessline 171
| **L1** | OpenAlex | primary — always on | free | <https://openalex.org/settings/api> | - Network accessline 172
| **L2** | PubMed | medical · MeSH enricher | free | <https://account.ncbi.nlm.nih.gov/settings/> | - Network accessline 173
| **L2** | arXiv | preprint freshness (T‑0\~T‑4) · AI topics (T‑0\~T‑365) | free | *(no signup — SDK enforces 1 req / 3 s)* | | **L3** | Semantic Scholar | influentialCitationCount + abstract fallback | free | <https://www.semanticscholar.o - Network accessline 174
| **L3** | Semantic Scholar | influentialCitationCount + abstract fallback | free | <https://www.semanticscholar.org/product/api> | - Access to secretsline 180
[Credential-related source omitted] - Access to secretsline 182
[Credential-related source omitted] - Network accessline 237
I maintain paper-search-pro mostly on my own, with help from two lovely contributors, [@haoxinC111](https://github.com/haoxinC111) and [@MatrixA](https://github.com/MatrixA). You're welcome to be the third. If it has helped you, your star m
README.zh.md
- Network accessline 21
<a href="LICENSE.txt"><img src="https://img.shields.io/badge/license-Apache_2.0-000?style=flat-square" alt="Apache 2.0"/></a> - Network accessline 22
<a href="SKILL.md"><img src="https://img.shields.io/badge/agent-Skill-000?style=flat-square" alt="Agent Skill"/></a> - Network accessline 23
<img src="https://img.shields.io/badge/Python-3.10+-000?style=flat-square" alt="Python 3.10+"/> - Network accessline 24
<img src="https://img.shields.io/badge/version-2.5.0-000?style=flat-square" alt="v2.5.0"/> - Network accessline 34
**[→ 在线 Demo(浏览器直接打开真实报告)](https://o0000-code.github.io/paper-search-pro/)** - Network accessline 83
git clone https://github.com/O0000-code/paper-search-pro.git \ - Network accessline 169
| 层 | 数据源 | 角色 | 成本 | 申请地址 | |:---:|:---|:---|:---:|:---| | **L1** | OpenAlex | 主源 — 始终启用 | free | <https://openalex.org/settings/api> | - Network accessline 170
|:---:|:---|:---|:---:|:---| | **L1** | OpenAlex | 主源 — 始终启用 | free | <https://openalex.org/settings/api> | | **L2** | PubMed | 医学 · MeSH 富化 | free | <https://account.ncbi.nlm.nih.gov/settings/> | - Network accessline 171
| **L1** | OpenAlex | 主源 — 始终启用 | free | <https://openalex.org/settings/api> | - Network accessline 172
| **L2** | PubMed | 医学 · MeSH 富化 | free | <https://account.ncbi.nlm.nih.gov/settings/> | - Network accessline 173
| **L2** | arXiv | preprint freshness (T‑0\~T‑4) · AI 主题 (T‑0\~T‑365) | free | *(无需注册 — SDK 自带 1 req / 3 s 限速)* | | **L3** | Semantic Scholar | influentialCitationCount + 摘要回退 | free | <https://www.semanticscholar.org/product/api> | | **L3* - Network accessline 174
| **L3** | Semantic Scholar | influentialCitationCount + 摘要回退 | free | <https://www.semanticscholar.org/product/api> | - Access to secretsline 180
[Credential-related source omitted] - Access to secretsline 182
[Credential-related source omitted] - Network accessline 237
本项目主要由我一个人维护,还有两位可爱的贡献者 [@haoxinC111](https://github.com/haoxinC111) 和 [@MatrixA](https://github.com/MatrixA) 帮过忙,欢迎你成为第三位。如果它帮到了你,你的 Star 对我来说是很大的动力,我会继续把它更新下去。
SKILL.md
THIRD_PARTY.md
- Network accessline 17
| Package | License | Homepage | |---|:---:|---| | **shadcn/ui** — 41 component files under `src/components/ui/*.tsx` are derived from shadcn/ui's copy-paste catalog | MIT | <https://ui.shadcn.com/> | - Network accessline 18
|---|:---:|---| | **shadcn/ui** — 41 component files under `src/components/ui/*.tsx` are derived from shadcn/ui's copy-paste catalog | MIT | <https://ui.shadcn.com/> | | **Radix UI** — 27 `@radix-ui/react-*` unstyled accessible primitives | - Network accessline 19
| **shadcn/ui** — 41 component files under `src/components/ui/*.tsx` are derived from shadcn/ui's copy-paste catalog | MIT | <https://ui.shadcn.com/> | - Network accessline 20
| **Radix UI** — 27 `@radix-ui/react-*` unstyled accessible primitives | MIT | <https://www.radix-ui.com/> | - Network accessline 21
| **Lucide** — icon set used throughout the report | ISC | <https://lucide.dev/> | - Network accessline 22
| **Sonner** — toast notification primitive | MIT | <https://sonner.emilkowal.ski/> | - Network accessline 23
| **Vaul** — drawer primitive | MIT | <https://vaul.emilkowal.ski/> | - Network accessline 24
| **cmdk** — command-menu primitive | MIT | <https://cmdk.paco.me/> | - Network accessline 25
| **Embla Carousel** — carousel primitive | MIT | <https://www.embla-carousel.com/> | - Network accessline 26
| **React Day Picker** — calendar primitive | MIT | <https://react-day-picker.js.org/> | - Network accessline 27
| **React Resizable Panels** — resizable-layout primitive | MIT | <https://github.com/bvaughn/react-resizable-panels> | - Network accessline 31
| Package | License | Homepage | |---|:---:|---| | **Recharts** — composable chart library powering the Methods tab | MIT | <https://recharts.org/> | - Network accessline 33
| **Recharts** — composable chart library powering the Methods tab | MIT | <https://recharts.org/> | - Network accessline 37
| Package | License | Homepage | |---|:---:|---| | **React Hook Form** | MIT | <https://react-hook-form.com/> | - Network accessline 38
|---|:---:|---| | **React Hook Form** | MIT | <https://react-hook-form.com/> | | **@hookform/resolvers** | MIT | <https://github.com/react-hook-form/resolvers> | - Network accessline 39
| **React Hook Form** | MIT | <https://react-hook-form.com/> | - Network accessline 40
| **@hookform/resolvers** | MIT | <https://github.com/react-hook-form/resolvers> | - Network accessline 41
| **Zod** — schema validation | MIT | <https://zod.dev/> | - Network accessline 45
| Package | License | Homepage | |---|:---:|---| | **Tailwind CSS** | MIT | <https://tailwindcss.com/> | - Network accessline 46
|---|:---:|---| | **Tailwind CSS** | MIT | <https://tailwindcss.com/> | | **tailwindcss-animate** | MIT | <https://github.com/jamiebuilds/tailwindcss-animate> | - Network accessline 47
| **Tailwind CSS** | MIT | <https://tailwindcss.com/> | - Network accessline 48
| **tailwindcss-animate** | MIT | <https://github.com/jamiebuilds/tailwindcss-animate> | - Network accessline 49
| **class-variance-authority** | Apache 2.0 | <https://cva.style/> | - Network accessline 50
| **clsx** | MIT | <https://github.com/lukeed/clsx> | - Network accessline 51
| **tailwind-merge** | MIT | <https://github.com/dcastil/tailwind-merge> | - Network accessline 55
| Font | License | Homepage | |---|:---:|---| | **Geist Variable** — Vercel's geometric sans (Latin) | SIL OFL 1.1 | <https://github.com/vercel/geist-font> | - Network accessline 56
|---|:---:|---| | **Geist Variable** — Vercel's geometric sans (Latin) | SIL OFL 1.1 | <https://github.com/vercel/geist-font> | | **Geist Mono Variable** — Vercel's mono | SIL OFL 1.1 | <https://github.com/vercel/geist-font> | - Network accessline 57
| **Geist Variable** — Vercel's geometric sans (Latin) | SIL OFL 1.1 | <https://github.com/vercel/geist-font> | - Network accessline 58
| **Geist Mono Variable** — Vercel's mono | SIL OFL 1.1 | <https://github.com/vercel/geist-font> | - Network accessline 59
| **Noto Sans SC Variable** — Google's pan-Chinese sans (CJK) | SIL OFL 1.1 | <https://fonts.google.com/noto/specimen/Noto+Sans+SC> | - Network accessline 63
| Package | License | Homepage | |---|:---:|---| | **React** + **React DOM** | MIT | <https://react.dev/> | - Network accessline 64
|---|:---:|---| | **React** + **React DOM** | MIT | <https://react.dev/> | | **Vite** — bundler | MIT | <https://vitejs.dev/> | - Network accessline 65
| **React** + **React DOM** | MIT | <https://react.dev/> | - Network accessline 66
| **Vite** — bundler | MIT | <https://vitejs.dev/> | - Network accessline 67
| **TypeScript** | Apache 2.0 | <https://www.typescriptlang.org/> | - Network accessline 68
| **next-themes** | MIT | <https://github.com/pacocoursey/next-themes> | - Network accessline 69
| **date-fns** | MIT | <https://date-fns.org/> | - Network accessline 70
| **html-inline** — single-file HTML compile step | MIT | <https://github.com/popcorn/html-inline> | - Network accessline 71
| **PostCSS** + **autoprefixer** | MIT | <https://postcss.org/> | - Network accessline 79
| Package | License | Homepage | |---|:---:|---| | **pyalex** — OpenAlex client | MIT | <https://github.com/J535D165/pyalex> | - Network accessline 80
|---|:---:|---| | **pyalex** — OpenAlex client | MIT | <https://github.com/J535D165/pyalex> | | **semanticscholar** — Semantic Scholar client | MIT | <https://github.com/danielnsilva/semanticscholar> | - Network accessline 81
| **pyalex** — OpenAlex client | MIT | <https://github.com/J535D165/pyalex> | - Network accessline 82
| **semanticscholar** — Semantic Scholar client | MIT | <https://github.com/danielnsilva/semanticscholar> | - Network accessline 83
| **biopython** — PubMed via NCBI Entrez | Biopython License (BSD-like) | <https://biopython.org/> | | **arxiv** — arXiv API client | MIT | <https://github.com/lukasschwab/arxiv.py> | | **requests** — HTTP client | Apache 2.0 | <https://req - Network accessline 84
| **arxiv** — arXiv API client | MIT | <https://github.com/lukasschwab/arxiv.py> | | **requests** — HTTP client | Apache 2.0 | <https://requests.readthedocs.io/> | | **PyYAML** — YAML loader | MIT | <https://pyyaml.org/> | - Network accessline 85
| **requests** — HTTP client | Apache 2.0 | <https://requests.readthedocs.io/> | - Network accessline 86
| **PyYAML** — YAML loader | MIT | <https://pyyaml.org/> | - Network accessline 87
| **Jinja2** — template engine | BSD-3-Clause | <https://palletsprojects.com/p/jinja/> |
assets/benchmark_queries/litsearch_subset.json
- Network accessline 1
{ "name": "LitSearch-style subset (CS/NLP, 12 queries)", "source_note": "These 12 queries are written in LitSearch (EMNLP 2024) style — natural-language research questions in CS/NLP with citation-graph gold standards. For the OFFICIAL L - Network accessline 2
"name": "LitSearch-style subset (CS/NLP, 12 queries)", "source_note": "These 12 queries are written in LitSearch (EMNLP 2024) style — natural-language research questions in CS/NLP with citation-graph gold standards. For the OFFICIAL LitSe - Network accessline 3
"source_note": "These 12 queries are written in LitSearch (EMNLP 2024) style — natural-language research questions in CS/NLP with citation-graph gold standards. For the OFFICIAL LitSearch v1 dataset (597 queries), download from https://gith
assets/benchmark_queries/sparbench_subset.json
- Network accessline 1
{ "name": "SPARBench-style subset (stub, 5 queries)", "source_note": "SPARBench (Specialized PAper Retrieval Benchmark, arXiv:2507.15245) is a 2024 benchmark for academic paper retrieval. The OFFICIAL dataset (200+ queries with expert-v - Network accessline 2
"name": "SPARBench-style subset (stub, 5 queries)", "source_note": "SPARBench (Specialized PAper Retrieval Benchmark, arXiv:2507.15245) is a 2024 benchmark for academic paper retrieval. The OFFICIAL dataset (200+ queries with expert-valid - Network accessline 3
"source_note": "SPARBench (Specialized PAper Retrieval Benchmark, arXiv:2507.15245) is a 2024 benchmark for academic paper retrieval. The OFFICIAL dataset (200+ queries with expert-validated gold standards) must be downloaded separately fro - Network accessline 64
} ], "todo_for_user": "Replace this stub with the official SPARBench v1 dataset when fetched from https://arxiv.org/abs/2507.15245. The benchmark runner (scripts/run_benchmark.py) accepts this same schema so no code change is needed — j - Network accessline 65
], "todo_for_user": "Replace this stub with the official SPARBench v1 dataset when fetched from https://arxiv.org/abs/2507.15245. The benchmark runner (scripts/run_benchmark.py) accepts this same schema so no code change is needed — just - Network accessline 66
"todo_for_user": "Replace this stub with the official SPARBench v1 dataset when fetched from https://arxiv.org/abs/2507.15245. The benchmark runner (scripts/run_benchmark.py) accepts this same schema so no code change is needed — just swap
assets/default_config.yaml
- Network accessline 15
# --- OpenAlex (L1 primary source) --- # OpenAlex 2026-02 switched from mailto polite pool to API key model. # Apply at: https://openalex.org/keys (free, $1/day quota) - Network accessline 16
# OpenAlex 2026-02 switched from mailto polite pool to API key model. # Apply at: https://openalex.org/keys (free, $1/day quota) # Either openalex_email OR openalex_api_key — having both is fine. - Network accessline 17
# Apply at: https://openalex.org/keys (free, $1/day quota) - Access to secretsline 18
[Credential-related source omitted] - Access to secretsline 20
[Credential-related source omitted] - Network accessline 22
# --- Semantic Scholar (L3 enrichment: influentialCitationCount + abstract fallback) --- # Apply at: https://www.semanticscholar.org/product/api (free) - Network accessline 23
# Apply at: https://www.semanticscholar.org/product/api (free) - Access to secretsline 25
[Credential-related source omitted] - Network accessline 27
# --- PubMed / NCBI (L2 booster: MeSH enricher) --- # Apply at: https://account.ncbi.nlm.nih.gov/settings/ -> API Key Management - Network accessline 28
# Apply at: https://account.ncbi.nlm.nih.gov/settings/ -> API Key Management - Access to secretsline 31
[Credential-related source omitted] - Access to secretsline 78
[Credential-related source omitted] - Network accessline 109
# HTTP works (no Cloudflare). Leave unset to use the built-in defaults. sources: cas: "https://raw.githubusercontent.com/hitfyd/ShowJCR/master/%E4%B8%AD%E7%A7%91%E9%99%A2%E5%88%86%E5%8C%BA%E8%A1%A8%E5%8F%8AJCR%E5%8E%9F%E5%A7%8B%E6%95% - Network accessline 110
sources: cas: "https://raw.githubusercontent.com/hitfyd/ShowJCR/master/%E4%B8%AD%E7%A7%91%E9%99%A2%E5%88%86%E5%8C%BA%E8%A1%A8%E5%8F%8AJCR%E5%8E%9F%E5%A7%8B%E6%95%B0%E6%8D%AE%E6%96%87%E4%BB%B6/FQBJCR2025-UTF8.csv" jcr: "https://raw.g - Network accessline 111
cas: "https://raw.githubusercontent.com/hitfyd/ShowJCR/master/%E4%B8%AD%E7%A7%91%E9%99%A2%E5%88%86%E5%8C%BA%E8%A1%A8%E5%8F%8AJCR%E5%8E%9F%E5%A7%8B%E6%95%B0%E6%8D%AE%E6%96%87%E4%BB%B6/FQBJCR2025-UTF8.csv" - Network accessline 112
jcr: "https://raw.githubusercontent.com/hitfyd/ShowJCR/master/%E4%B8%AD%E7%A7%91%E9%99%A2%E5%88%86%E5%8C%BA%E8%A1%A8%E5%8F%8AJCR%E5%8E%9F%E5%A7%8B%E6%95%B0%E6%8D%AE%E6%96%87%E4%BB%B6/JCR2024-UTF8.csv" - Network accessline 113
sjr: "https://raw.githubusercontent.com/saramabrouk173/zotero-sjr-ranker/main/scimagojr%202024.csv"
assets/webartifacts_app/paper-report/README.md
- Network accessline 7
- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Oxc](https://oxc.rs) - Network accessline 8
- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) - Network accessline 12
The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation). - Network accessline 46
You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plu
assets/webartifacts_app/paper-report/bundle.html
- Network accessline 5
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Paper Search Pro — Discovery Report</title> <script type="module" crossorigin>var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescrip - Network accessline 6
<title>Paper Search Pro — Discovery Report</title> <script type="module" crossorigin>var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.h - Network accessline 7
<script type="module" crossorigin>var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).expo - Network accessline 15
`).replace(Fd,``)}function Ld(e,t){return t=Id(t),Id(e)===t}function Rd(e,t,n,r,a,o){switch(n){case`children`:typeof r==`string`?t===`body`||t===`textarea`&&r===``||Ut(e,r):(typeof r==`number`||typeof r==`bigint`)&&t!==`body`&&Ut(e,``+r);br - Network accessline 16
AND ("Cognitive Training"[mh] OR "working memory training"[tiab] OR "working-memory training"[tiab] OR "working memory intervention"[tiab] OR "n-back training"[tiab] OR Cogmed[tiab] OR "memory training"[tiab] OR "cognitive training"[tiab] O - Network accessline 17
("Cognitive Training"[mh] OR "working memory training"[tiab] OR "working-memory training"[tiab] OR "working memory intervention"[tiab] OR "n-back training"[tiab] OR Cogmed[tiab] OR "memory training"[tiab] OR "cognitive training"[tiab] OR "b - Network accessline 18
("older adult*" OR "older people" OR "older person*" OR elderly OR senior* OR "late life") AND ("working memory training" OR "working-memory training" OR "working memory intervention" OR "n-back training" OR Cogmed OR "memory training" OR - Network accessline 19
AND ("working memory training" OR "working-memory training" OR "working memory intervention" OR "n-back training" OR Cogmed OR "memory training" OR "cognitive training" OR "brain training") )`,strategy_lines:[`#1 TS=("older adult*" OR "olde - Network accessline 20
)`,strategy_lines:[`#1 TS=("older adult*" OR "older people" OR "older person*" OR elderly OR senior* OR "late life")`,`#2 TS=("working memory training" OR "working-memory training" OR "working memory intervention" OR "n-back training" OR Co - Network accessline 21
("older adult*" OR "older people" OR "older person*" OR elderly OR senior* OR "late life") AND ("working memory training" OR "working-memory training" OR "working memory intervention" OR "n-back training" OR Cogmed OR "memory training" OR - Network accessline 22
AND ("working memory training" OR "working-memory training" OR "working memory intervention" OR "n-back training" OR Cogmed OR "memory training" OR "cognitive training" OR "brain training") )`,strategy_lines:[`#1 TITLE-ABS-KEY("older adult* - Network accessline 23
)`,strategy_lines:[`#1 TITLE-ABS-KEY("older adult*" OR "older people" OR "older person*" OR elderly OR senior* OR "late life")`,`#2 TITLE-ABS-KEY("working memory training" OR "working-memory training" OR "working memory intervention" OR "n- - Network accessline 24
AND ("working memory training":ti,ab OR "working-memory training":ti,ab OR "working memory intervention":ti,ab OR "n-back training":ti,ab OR Cogmed:ti,ab OR "memory training":ti,ab OR "cognitive training":ti,ab OR "brain training":ti,ab)`,s - Network accessline 25
("working memory training":ti,ab OR "working-memory training":ti,ab OR "working memory intervention":ti,ab OR "n-back training":ti,ab OR Cogmed:ti,ab OR "memory training":ti,ab OR "cognitive training":ti,ab OR "brain training":ti,ab)`,strat - Network accessline 26
AND (SU %= '工作记忆训练' OR SU %= '工作记忆干预' OR SU %= '记忆训练' OR SU %= '认知训练' OR SU %= 'n-back训练')`,strategy_lines:null,deep_link:{platform:`cnki`,tier:`C`,url_kind:`paste_only`,url:null,url_template:null,verified_http:null,verified_date:null,patte - Network accessline 70
For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return v.useEffect(()=>{e&&(document.getElementById(e)||console.error(n))},[n,e]),null},_u=`DialogDescriptionWarning`,vu=({contentRef:e,descriptionId:t - Network accessline 105
A${a},${a},0,0,${+(u<0)},${E.x},${E.y} A${r},${r},0,${+(k>180)},${+(u>0)},${S.x},${S.y} A${a},${a},0,0,${+(u<0)},${C.x},${C.y}Z`}else b+=`L${t},${n}Z`;return b},qk={cx:0,cy:0,innerRadius:0,outerRadius:0,startAngle:0,endAngle:0,c - Network accessline 106
A${r},${r},0,${+(k>180)},${+(u>0)},${S.x},${S.y} A${a},${a},0,0,${+(u<0)},${C.x},${C.y}Z`}else b+=`L${t},${n}Z`;return b},qk={cx:0,cy:0,innerRadius:0,outerRadius:0,startAngle:0,endAngle:0,cornerRadius:0,forceCornerRadius:!1,cornerIsEx - Network accessline 107
[Credential-related source omitted]
assets/webartifacts_app/paper-report/components.json
assets/webartifacts_app/paper-report/eslint.config.js
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/package.json
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/postcss.config.js
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/public/favicon.svg
- Network accessline 1
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="46" fill="none" viewBox="0 0 48 46"><path fill="#863bff" d="M25.946 44.938c-.664.845-2.021.375-2.021-.698V33.937a2.26 2.26 0 0 0-2.262-2.262H10.287c-.92 0-1.456-1.04-.92-1.788l7.48-
assets/webartifacts_app/paper-report/public/icons.svg
- Network accessline 1
<svg xmlns="http://www.w3.org/2000/svg">
assets/webartifacts_app/paper-report/src/App.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/assets/react.svg
- Network accessline 1
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="35.93" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 228"><path fill="
assets/webartifacts_app/paper-report/src/assets/vite.svg
- Network accessline 1
<svg xmlns="http://www.w3.org/2000/svg" width="77" height="47" fill="none" aria-labelledby="vite-logo-title" viewBox="0 0 77 47"><title id="vite-logo-title">Vite</title><style>.parenthesis{fill:#000}@media (prefers-color-scheme:dark){.paren
assets/webartifacts_app/paper-report/src/components/adapters/KickerAccordion.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/adapters/KickerAlert.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/adapters/SearchInput.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/adapters/SegmentedToggle.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/adapters/SimpleTooltip.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/audit/AuditTab.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/audit/ComplianceSummary.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/audit/PhaseGroup.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/audit/PrismaRow.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/audit/StatusDot.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/audit/audit-utils.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/chrome/LayoutSwitcher.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/chrome/thumbs/Thumbs.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/extensions/ExtensionsTab.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/hero/FilterBar.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/hero/ReportTitle.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/hero/SliderWithZones.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/hero/TierStrip.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/hero/tops/BrandLink.tsx
assets/webartifacts_app/paper-report/src/components/hero/tops/DocumentTop.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/hero/tops/EditorialTop.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/hero/tops/SwissTop.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/methods/CitationScatter.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/methods/DiscoveryCurve.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/methods/MethodologyAccordion.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/methods/MethodsTab.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/methods/RcsHistogram.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/methods/SearchStrategies.tsx
- Executable scriptline 1
Executable file - Network accessline 176
* leak into a clickable link — fall through; * 3. the platform's entry page derived from the `host` field ("中国知网 / * kns.cnki.net" → https://kns.cnki.net) — same rule as generate.py's - Network accessline 177
* 3. the platform's entry page derived from the `host` field ("中国知网 / * kns.cnki.net" → https://kns.cnki.net) — same rule as generate.py's * `_host_entry_url`: the page opens, the user pastes. - Network accessline 178
* kns.cnki.net" → https://kns.cnki.net) — same rule as generate.py's - Network accessline 190
} const m = /[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}/.exec(String(s.host ?? "")) return m ? `https://${m[0]}` : null - Network accessline 191
const m = /[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}/.exec(String(s.host ?? "")) return m ? `https://${m[0]}` : null } - Network accessline 192
return m ? `https://${m[0]}` : null
assets/webartifacts_app/paper-report/src/components/methods/SectionHeader.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/methods/Stat.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/methods/TierAllocation.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/methods/TopicsTreemap.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/methods/YearBarChart.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/methods/useInsights.ts
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/papers/JournalRank.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/papers/PaperCardItem.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/papers/PaperList.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/papers/PaperRowCatalog.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/papers/PaperRowIndex.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/papers/PaperRowIndexHeader.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/papers/PaperSheet.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/papers/QuickJump.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/papers/TierDot.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/papers/TierHeader.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/papers/ZoneFilter.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/ui/accordion.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/ui/alert.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/ui/aspect-ratio.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/ui/avatar.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/ui/badge.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/ui/breadcrumb.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/ui/button.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/ui/calendar.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/ui/card.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/ui/carousel.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/ui/chart.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/ui/checkbox.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/ui/collapsible.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/ui/command.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/ui/context-menu.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/ui/dialog.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/ui/drawer.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/ui/dropdown-menu.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/ui/form.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/ui/hover-card.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/ui/input.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/ui/label.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/ui/menubar.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/ui/navigation-menu.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/ui/popover.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/ui/progress.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/ui/radio-group.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/ui/resizable.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/ui/scroll-area.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/ui/select.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/ui/separator.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/ui/sheet.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/ui/skeleton.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/ui/slider.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/ui/sonner.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/ui/switch.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/ui/table.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/ui/tabs.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/ui/textarea.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/ui/toggle-group.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/ui/toggle.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/components/ui/tooltip.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/lib/format.ts
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/lib/i18n.ts
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/lib/mock-data.ts
- Executable scriptline 1
Executable file - Network accessline 55
venue: "Science", doi: "10.1126/science.1230579", doi_url: "https://doi.org/10.1126/science.1230579", - Network accessline 56
doi: "10.1126/science.1230579", doi_url: "https://doi.org/10.1126/science.1230579", abstract: - Network accessline 57
doi_url: "https://doi.org/10.1126/science.1230579", - Network accessline 81
venue: "Developmental Psychology", doi: "10.1037/a0028228", doi_url: "https://doi.org/10.1037/a0028228", - Network accessline 82
doi: "10.1037/a0028228", doi_url: "https://doi.org/10.1037/a0028228", abstract: - Network accessline 83
doi_url: "https://doi.org/10.1037/a0028228", - Network accessline 112
venue: "PNAS", doi: "10.1073/pnas.0801268105", doi_url: "https://doi.org/10.1073/pnas.0801268105", - Network accessline 113
doi: "10.1073/pnas.0801268105", doi_url: "https://doi.org/10.1073/pnas.0801268105", abstract: - Network accessline 114
doi_url: "https://doi.org/10.1073/pnas.0801268105", - Network accessline 144
venue: "Psychological Bulletin", doi: "10.1037/a0029082", doi_url: "https://doi.org/10.1037/a0029082", - Network accessline 145
doi: "10.1037/a0029082", doi_url: "https://doi.org/10.1037/a0029082", abstract: - Network accessline 146
doi_url: "https://doi.org/10.1037/a0029082", - Network accessline 175
venue: "Memory & Cognition", doi: "10.1037/a0035144", doi_url: "https://doi.org/10.1037/a0035144", - Network accessline 176
doi: "10.1037/a0035144", doi_url: "https://doi.org/10.1037/a0035144", abstract: - Network accessline 177
doi_url: "https://doi.org/10.1037/a0035144", - Network accessline 201
venue: "Trends in Cognitive Sciences", doi: "10.1016/j.tics.2013.05.009", doi_url: "https://doi.org/10.1016/j.tics.2013.05.009", - Network accessline 202
doi: "10.1016/j.tics.2013.05.009", doi_url: "https://doi.org/10.1016/j.tics.2013.05.009", abstract: - Network accessline 203
doi_url: "https://doi.org/10.1016/j.tics.2013.05.009", - Network accessline 233
venue: "Psychology and Aging", doi: "10.1037/a0030986", doi_url: "https://doi.org/10.1037/a0030986", - Network accessline 234
doi: "10.1037/a0030986", doi_url: "https://doi.org/10.1037/a0030986", abstract: - Network accessline 235
doi_url: "https://doi.org/10.1037/a0030986", - Network accessline 264
venue: "Perspectives on Psychological Science", doi: "10.1037/aap0000094", doi_url: "https://doi.org/10.1037/aap0000094", - Network accessline 265
doi: "10.1037/aap0000094", doi_url: "https://doi.org/10.1037/aap0000094", abstract: - Network accessline 266
doi_url: "https://doi.org/10.1037/aap0000094", - Network accessline 294
venue: "Frontiers in Aging Neuroscience", doi: "10.3389/fnagi.2014.00063", doi_url: "https://doi.org/10.3389/fnagi.2014.00063", - Network accessline 295
doi: "10.3389/fnagi.2014.00063", doi_url: "https://doi.org/10.3389/fnagi.2014.00063", abstract: - Network accessline 296
doi_url: "https://doi.org/10.3389/fnagi.2014.00063", - Network accessline 325
venue: "Nature Reviews Neuroscience", doi: "10.1038/nrn3884", doi_url: "https://doi.org/10.1038/nrn3884", - Network accessline 326
doi: "10.1038/nrn3884", doi_url: "https://doi.org/10.1038/nrn3884", abstract: - Network accessline 327
doi_url: "https://doi.org/10.1038/nrn3884", - Network accessline 351
venue: "Neuropsychology", doi: "10.1037/0894-4105.22.5.567", doi_url: "https://doi.org/10.1037/0894-4105.22.5.567", - Network accessline 352
doi: "10.1037/0894-4105.22.5.567", doi_url: "https://doi.org/10.1037/0894-4105.22.5.567", abstract: - Network accessline 353
doi_url: "https://doi.org/10.1037/0894-4105.22.5.567", - Network accessline 379
venue: "Nature", doi: "10.1038/nature11704", doi_url: "https://doi.org/10.1038/nature11704", - Network accessline 380
doi: "10.1038/nature11704", doi_url: "https://doi.org/10.1038/nature11704", abstract: - Network accessline 381
doi_url: "https://doi.org/10.1038/nature11704", - Network accessline 735
"tier": "A", "url_kind": "prefill", "url": "https://pubmed.ncbi.nlm.nih.gov/?term=%28%22Aged%22%5Bmh%5D+OR+%22Aged%2C+80+and+over%22%5Bmh%5D+OR+%22older+adults%22%5Btiab%5D+OR+%22older+people%22%5Btiab%5D+OR+%22older+per - Network accessline 736
"url_kind": "prefill", "url": "https://pubmed.ncbi.nlm.nih.gov/?term=%28%22Aged%22%5Bmh%5D+OR+%22Aged%2C+80+and+over%22%5Bmh%5D+OR+%22older+adults%22%5Btiab%5D+OR+%22older+people%22%5Btiab%5D+OR+%22older+persons%22%5Btiab%5D+OR+el - Network accessline 737
"url": "https://pubmed.ncbi.nlm.nih.gov/?term=%28%22Aged%22%5Bmh%5D+OR+%22Aged%2C+80+and+over%22%5Bmh%5D+OR+%22older+adults%22%5Btiab%5D+OR+%22older+people%22%5Btiab%5D+OR+%22older+persons%22%5Btiab%5D+OR+elderly%5Btiab%5D+OR+seniors%5Btiab - Network accessline 738
"api_url": "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term=%28%22Aged%22%5Bmh%5D+OR+%22Aged%2C+80+and+over%22%5Bmh%5D+OR+%22older+adults%22%5Btiab%5D+OR+%22older+people%22%5Btiab%5D+OR+%22older+persons%22%5Btiab%5 - Network accessline 795
"url_kind": "paste_only", "url": null, "url_template": "https://www.webofscience.com/wos/woscc/advanced-search", - Network accessline 796
"url": null, "url_template": "https://www.webofscience.com/wos/woscc/advanced-search", "verified_http": null, - Network accessline 797
"url_template": "https://www.webofscience.com/wos/woscc/advanced-search", - Network accessline 820
"url_kind": "paste_only", "url": null, "url_template": "https://www.scopus.com/search/form.uri?display=advanced", - Network accessline 821
"url": null, "url_template": "https://www.scopus.com/search/form.uri?display=advanced", "verified_http": null, - Network accessline 822
"url_template": "https://www.scopus.com/search/form.uri?display=advanced", - Network accessline 841
"url_kind": "paste_only", "url": null, "url_template": "https://www.embase.com/#advancedSearch", - Network accessline 842
"url": null, "url_template": "https://www.embase.com/#advancedSearch", "verified_http": null, - Network accessline 843
"url_template": "https://www.embase.com/#advancedSearch", - Network accessline 893
"url_kind": "browser", "url": null, "url_template": "https://www.cochranelibrary.com/search?q={urlenc}", - Network accessline 894
"url": null, "url_template": "https://www.cochranelibrary.com/search?q={urlenc}", "verified_http": null, - Network accessline 895
"url_template": "https://www.cochranelibrary.com/search?q={urlenc}", - Network accessline 954
"url_kind": "paste_only", "url": null, "url_template": "https://search.ebscohost.com/login.aspx?authtype=ip&profile=ehost&defaultdb=psyh", - Network accessline 955
"url": null, "url_template": "https://search.ebscohost.com/login.aspx?authtype=ip&profile=ehost&defaultdb=psyh", "verified_http": null, - Network accessline 956
"url_template": "https://search.ebscohost.com/login.aspx?authtype=ip&profile=ehost&defaultdb=psyh", - Network accessline 1006
"url_kind": "paste_only", "url": null, "url_template": "https://search.ebscohost.com/login.aspx?authtype=ip&profile=ehost&defaultdb=ccm", - Network accessline 1007
"url": null, "url_template": "https://search.ebscohost.com/login.aspx?authtype=ip&profile=ehost&defaultdb=ccm", "verified_http": null, - Network accessline 1008
"url_template": "https://search.ebscohost.com/login.aspx?authtype=ip&profile=ehost&defaultdb=ccm", - Network accessline 1075
"url_kind": "browser", "url": null, "url_template": "https://s.wanfangdata.com.cn/paper?q={urlenc}", - Network accessline 1076
"url": null, "url_template": "https://s.wanfangdata.com.cn/paper?q={urlenc}", "verified_http": null, - Network accessline 1077
"url_template": "https://s.wanfangdata.com.cn/paper?q={urlenc}",
assets/webartifacts_app/paper-report/src/lib/normalize.ts
- Executable scriptline 1
Executable file - Network accessline 213
venue: p.venue ?? null, doi: p.doi ?? null, doiUrl: p.doi ? `https://doi.org/${p.doi}` : null, - Network accessline 214
doi: p.doi ?? null, doiUrl: p.doi ? `https://doi.org/${p.doi}` : null, abstract: p.abstract ?? null, - Network accessline 215
doiUrl: p.doi ? `https://doi.org/${p.doi}` : null,
assets/webartifacts_app/paper-report/src/lib/prisma-titles.ts
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/lib/safari-detect.ts
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/lib/types.ts
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/lib/utils.ts
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/src/main.tsx
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/tailwind.config.js
- Executable scriptline 1
Executable file
assets/webartifacts_app/paper-report/vite.config.ts
- Executable scriptline 1
Executable file
docs/index.html
- Network accessline 5
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Paper Search Pro — Discovery Report</title> <script type="module" crossorigin>var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescrip - Network accessline 6
<title>Paper Search Pro — Discovery Report</title> <script type="module" crossorigin>var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.h - Network accessline 7
<script type="module" crossorigin>var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).expo - Network accessline 15
`).replace(Fd,``)}function Ld(e,t){return t=Id(t),Id(e)===t}function Rd(e,t,n,r,a,o){switch(n){case`children`:typeof r==`string`?t===`body`||t===`textarea`&&r===``||Ut(e,r):(typeof r==`number`||typeof r==`bigint`)&&t!==`body`&&Ut(e,``+r);br - Network accessline 16
AND ("Cognitive Training"[mh] OR "working memory training"[tiab] OR "working-memory training"[tiab] OR "working memory intervention"[tiab] OR "n-back training"[tiab] OR Cogmed[tiab] OR "memory training"[tiab] OR "cognitive training"[tiab] O - Network accessline 17
("Cognitive Training"[mh] OR "working memory training"[tiab] OR "working-memory training"[tiab] OR "working memory intervention"[tiab] OR "n-back training"[tiab] OR Cogmed[tiab] OR "memory training"[tiab] OR "cognitive training"[tiab] OR "b - Network accessline 18
("older adult*" OR "older people" OR "older person*" OR elderly OR senior* OR "late life") AND ("working memory training" OR "working-memory training" OR "working memory intervention" OR "n-back training" OR Cogmed OR "memory training" OR - Network accessline 19
AND ("working memory training" OR "working-memory training" OR "working memory intervention" OR "n-back training" OR Cogmed OR "memory training" OR "cognitive training" OR "brain training") )`,strategy_lines:[`#1 TS=("older adult*" OR "olde - Network accessline 20
)`,strategy_lines:[`#1 TS=("older adult*" OR "older people" OR "older person*" OR elderly OR senior* OR "late life")`,`#2 TS=("working memory training" OR "working-memory training" OR "working memory intervention" OR "n-back training" OR Co - Network accessline 21
("older adult*" OR "older people" OR "older person*" OR elderly OR senior* OR "late life") AND ("working memory training" OR "working-memory training" OR "working memory intervention" OR "n-back training" OR Cogmed OR "memory training" OR - Network accessline 22
AND ("working memory training" OR "working-memory training" OR "working memory intervention" OR "n-back training" OR Cogmed OR "memory training" OR "cognitive training" OR "brain training") )`,strategy_lines:[`#1 TITLE-ABS-KEY("older adult* - Network accessline 23
)`,strategy_lines:[`#1 TITLE-ABS-KEY("older adult*" OR "older people" OR "older person*" OR elderly OR senior* OR "late life")`,`#2 TITLE-ABS-KEY("working memory training" OR "working-memory training" OR "working memory intervention" OR "n- - Network accessline 24
AND ("working memory training":ti,ab OR "working-memory training":ti,ab OR "working memory intervention":ti,ab OR "n-back training":ti,ab OR Cogmed:ti,ab OR "memory training":ti,ab OR "cognitive training":ti,ab OR "brain training":ti,ab)`,s - Network accessline 25
("working memory training":ti,ab OR "working-memory training":ti,ab OR "working memory intervention":ti,ab OR "n-back training":ti,ab OR Cogmed:ti,ab OR "memory training":ti,ab OR "cognitive training":ti,ab OR "brain training":ti,ab)`,strat - Network accessline 26
AND (SU %= '工作记忆训练' OR SU %= '工作记忆干预' OR SU %= '记忆训练' OR SU %= '认知训练' OR SU %= 'n-back训练')`,strategy_lines:null,deep_link:{platform:`cnki`,tier:`C`,url_kind:`paste_only`,url:null,url_template:null,verified_http:null,verified_date:null,patte - Network accessline 70
For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return v.useEffect(()=>{e&&(document.getElementById(e)||console.error(n))},[n,e]),null},_u=`DialogDescriptionWarning`,vu=({contentRef:e,descriptionId:t - Network accessline 105
A${a},${a},0,0,${+(u<0)},${E.x},${E.y} A${r},${r},0,${+(k>180)},${+(u>0)},${S.x},${S.y} A${a},${a},0,0,${+(u<0)},${C.x},${C.y}Z`}else b+=`L${t},${n}Z`;return b},qk={cx:0,cy:0,innerRadius:0,outerRadius:0,startAngle:0,endAngle:0,c - Network accessline 106
A${r},${r},0,${+(k>180)},${+(u>0)},${S.x},${S.y} A${a},${a},0,0,${+(u<0)},${C.x},${C.y}Z`}else b+=`L${t},${n}Z`;return b},qk={cx:0,cy:0,innerRadius:0,outerRadius:0,startAngle:0,endAngle:0,cornerRadius:0,forceCornerRadius:!1,cornerIsEx - Network accessline 107
[Credential-related source omitted]
references/agent_mode.md
references/arxiv_helper_cheatsheet.md
- Network accessline 43
python3 -m scripts.arxiv_helper get 1706.03762 # bare id python3 -m scripts.arxiv_helper get 1706.03762v5 # version-suffixed python3 -m scripts.arxiv_helper get https://arxiv.org/abs/2401.12345 - Network accessline 44
python3 -m scripts.arxiv_helper get 1706.03762v5 # version-suffixed python3 -m scripts.arxiv_helper get https://arxiv.org/abs/2401.12345 python3 -m scripts.arxiv_helper get hep-th/9707234 # legacy form - Network accessline 45
python3 -m scripts.arxiv_helper get https://arxiv.org/abs/2401.12345 - Network accessline 80
"arxiv_categories": ["cs.CL", "cs.AI"], "arxiv_comment": "Accepted at NeurIPS 2024", // submitter's note; often empty "pdf_url": "https://arxiv.org/pdf/2401.12345v3", - Network accessline 81
"arxiv_comment": "Accepted at NeurIPS 2024", // submitter's note; often empty "pdf_url": "https://arxiv.org/pdf/2401.12345v3", "sources": ["arxiv"], - Network accessline 82
"pdf_url": "https://arxiv.org/pdf/2401.12345v3",
references/crossref_helper_cheatsheet.md
- Network accessline 49
"license": [ { "URL": "https://www.nejm.org/about-nejm/...", - Network accessline 50
{ "URL": "https://www.nejm.org/about-nejm/...", "content_version": "vor", // tdm | vor | am | unspecified - Network accessline 51
"URL": "https://www.nejm.org/about-nejm/...", - Network accessline 89
], "license": [ {"URL": "https://www.nejm.org/about-nejm/permissions", "content_version": "vor", "delay_in_days": 0} - Network accessline 90
"license": [ {"URL": "https://www.nejm.org/about-nejm/permissions", "content_version": "vor", "delay_in_days": 0} ] - Network accessline 91
{"URL": "https://www.nejm.org/about-nejm/permissions", "content_version": "vor", "delay_in_days": 0}
references/error_handling.md
- Access to secretsline 11
[Credential-related source omitted] - Access to secretsline 21
[Credential-related source omitted] - Access to secretsline 29
[Credential-related source omitted] - Network accessline 35
| **Symptom** | Biopython `HTTPError 429` OR empty efetch when records expected | | **Trigger** | Wrong / expired `ncbi_api_key`; or >10/s (with key) / >3/s (anonymous) | | **Action** | First, verify key is valid: `curl 'https://eutils.ncbi - Access to secretsline 36
[Credential-related source omitted] - Network accessline 37
[Credential-related source omitted] - Access to secretsline 37
[Credential-related source omitted]
references/journal_metrics.md
- Network accessline 64
### Fetch (init-once; runtime; never committed)
references/openalex_helper_cheatsheet.md
- Access to secretsline 6
[Credential-related source omitted] - Network accessline 32
python3 -m scripts.openalex_helper get W3011865677 python3 -m scripts.openalex_helper get 10.2307/1914185 # DOI bare form python3 -m scripts.openalex_helper get https://doi.org/10.1038/x - Network accessline 34
python3 -m scripts.openalex_helper get https://doi.org/10.1038/x - Network accessline 107
- **per_page hard-capped at 20** — pyalex returns ~25k-token payloads when per_page>20 even though API accepts up to 200. Helper internally enforces `_PER_PAGE=20` and pages. - **OpenAlex W-IDs drift between releases** — if you have a W-ID - Network accessline 108
- **OpenAlex W-IDs drift between releases** — if you have a W-ID that 404s, retry as DOI lookup. `get` handles `10.x/y` -> `https://doi.org/10.x/y` for you.
references/openreview_helper_cheatsheet.md
- Network accessline 54
"keywords": ["diffusion language model", "discrete"], "tldr": "...", // content.TLDR when the authors gave one "pdf_url": "https://openreview.net/pdf?id=g88nt4ieTG", // only when the note has a PDF - Network accessline 55
"tldr": "...", // content.TLDR when the authors gave one "pdf_url": "https://openreview.net/pdf?id=g88nt4ieTG", // only when the note has a PDF "oa_locations": ["https://openreview.net/forum?id=g88nt - Network accessline 56
"pdf_url": "https://openreview.net/pdf?id=g88nt4ieTG", // only when the note has a PDF - Network accessline 57
"oa_locations": ["https://openreview.net/forum?id=g88nt4ieTG"], // reviews and discussion live here - Network accessline 72
- **Only the search endpoint works.** `GET /notes?content.venueid=…` (list a whole venue) answers anonymous clients with 403 `ChallengeRequiredError`. The helper uses only `GET https://api2.openreview.net/notes/search?…&limit=25&offset=k`.
references/output_files.md
- Dangerous shell operationline 106
rm -rf ./paper-search-results/<id>/batches/ ./paper-search-results/<id>/classifications/
references/pubmed_helper_cheatsheet.md
- Access to secretsline 8
[Credential-related source omitted] - Network accessline 60
| `publication_types: List[str]` | e.g. `["Journal Article", "Randomized Controlled Trial", "Multicenter Study"]` | | `pmcid: str` | "PMC9876543" (only filled if missing) | | `pmc_url: str` | "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC98 - Network accessline 61
| `pmcid: str` | "PMC9876543" (only filled if missing) | | `pmc_url: str` | "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC9876543/" | | `abstract: str` | Filled ONLY if missing — OA reconstructed wins; PubMed = fallback | - Network accessline 62
| `pmc_url: str` | "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC9876543/" | - Network accessline 105
PubMed's MeSH is an English-language controlled vocabulary — Chinese keywords route through PubMed's translation layer with mediocre precision, and `search-mesh` requires the **canonical English MeSH descriptor** to match. When the user que
references/search_export/chinese_methodology.md
- Network accessline 83
**受控词验证分轨([A-6] 硬约束)**:CMeSH **无权威免费查表 API** → 主题词默认标 **🟨 语法已验·词表待核**(`llm_suggest_only` + 黄旗「待 UI 内人工确认规范主题词+副主题词」)。**本轮实测发现一个免费软交叉核端点**:`GET https://www.sinomed.ac.cn/suggest.do?dbtype=mt_&q=<中文词>` 无需登录返回 CMeSH 中文主题词候选(`糖尿病`→有候选;无义乱码→HTTP
references/search_export/filters_library.md
- Network accessline 84
**URL**:`https://sites.google.com/a/york.ac.uk/issg-search-filters-resource`(RCT filter 直达页:`.../home/rcts`)。由 InterTASC Information Specialists' Sub-Group 维护,**收录并批判性评价**了 SR / RCT / 非随机研究 / 诊断准确性 / 质性等过滤器,跨多个库和服务商 [Hb §4.4.7]。
references/search_export/syntax_cards/acm_dl.md
- Network accessline 3
> 语法卡 · 统一字段格式(13 spec §4)。检索对公众免费;深链 **B 档**(官方端点,curl 被 Cloudflare 拦,浏览器可用)。**★无邻近算符** → 跨库翻译时降级为 AND/短语。CCS 分类是过滤 facet,非可爆炸叙词表 → 受控词 `not_applicable`。语法主张附官方 URL + verified_date。 - Network accessline 54
tier: "B" url_kind: "prefill" url_template: "https://dl.acm.org/action/doSearch?AllField={urlenc}" - Network accessline 55
url_kind: "prefill" url_template: "https://dl.acm.org/action/doSearch?AllField={urlenc}" verified_http: "403(curl,Cloudflare bot 拦截);真实浏览器内该 URL 可用" - Network accessline 56
url_template: "https://dl.acm.org/action/doSearch?AllField={urlenc}" verified_http: "403(curl,Cloudflare bot 拦截);真实浏览器内该 URL 可用" note: "官方文档化端点;curl 被 Cloudflare 拦(403),但浏览器内公开可用(检索免费,全文订阅)。不承诺脚本层直达。" - Network accessline 57
verified_http: "403(curl,Cloudflare bot 拦截);真实浏览器内该 URL 可用" note: "官方文档化端点;curl 被 Cloudflare 拦(403),但浏览器内公开可用(检索免费,全文订阅)。不承诺脚本层直达。" verified_date: "2026-07-16" - Network accessline 58
note: "官方文档化端点;curl 被 Cloudflare 拦(403),但浏览器内公开可用(检索免费,全文订阅)。不承诺脚本层直达。" - Network accessline 59
verified_date: "2026-07-16" source_url: - "https://libraries.acm.org/binaries/content/assets/libraries/new_acm-digital-library-user-guide.pdf" - Network accessline 60
source_url: - "https://libraries.acm.org/binaries/content/assets/libraries/new_acm-digital-library-user-guide.pdf" - "https://library-guides.ucl.ac.uk/ACM-Digital-Library/techniques-for-searching" - Network accessline 61
- "https://libraries.acm.org/binaries/content/assets/libraries/new_acm-digital-library-user-guide.pdf" - Network accessline 62
- "https://library-guides.ucl.ac.uk/ACM-Digital-Library/techniques-for-searching" - Network accessline 63
- "https://refhunter.org/en/database_sheets/acm-digital-library" - Network accessline 68
- "通配 * 可词尾/词中、不可词首;引号短语内通配无效" - "布尔须大写;默认词间 AND;多字段靠 Advanced 多行 + Edit Query 手改布尔" - "深链 B 档:doSearch?AllField= 官方端点,curl 403(Cloudflare),浏览器内可用" - Network accessline 69
- "布尔须大写;默认词间 AND;多字段靠 Advanced 多行 + Edit Query 手改布尔" - "深链 B 档:doSearch?AllField= 官方端点,curl 403(Cloudflare),浏览器内可用" - "CCS 分类是 facet 过滤,非检索式层可爆炸叙词 → 受控词 not_applicable" - Network accessline 70
- "深链 B 档:doSearch?AllField= 官方端点,curl 403(Cloudflare),浏览器内可用" - Network accessline 88
### 深链(B 档) `https://dl.acm.org/action/doSearch?AllField=<URL编码>` — 官方端点,curl 403(Cloudflare),浏览器内可用;不承诺脚本层直达(C-14 天然满足:检索免费无墙)。 - Network accessline 89
`https://dl.acm.org/action/doSearch?AllField=<URL编码>` — 官方端点,curl 403(Cloudflare),浏览器内可用;不承诺脚本层直达(C-14 天然满足:检索免费无墙)。
references/search_export/syntax_cards/cab_cabi.md
- Network accessline 66
tier: "C" url_kind: "paste_only" url_template: "https://www.cabidigitallibrary.org/action/doSearch?AllField={urlenc}" - Network accessline 67
url_kind: "paste_only" url_template: "https://www.cabidigitallibrary.org/action/doSearch?AllField={urlenc}" note: "CAB Abstracts is subscription on every host; execution requires institutional login. URL structure noted only; not HTTP-v - Network accessline 68
url_template: "https://www.cabidigitallibrary.org/action/doSearch?AllField={urlenc}" - Network accessline 69
note: "CAB Abstracts is subscription on every host; execution requires institutional login. URL structure noted only; not HTTP-verified this round, no login-bypass. Deliver the paste-ready professional string." source_url: - "https://help - Network accessline 70
source_url: - "https://help.cabi.org/cabi-digital-library-help/" # CABI official help hub - "https://help.cabi.org/cabi-digital-library-help/search/instructions-for-recreating-saved-searches-from-ca - Network accessline 71
- "https://help.cabi.org/cabi-digital-library-help/" # CABI official help hub - Network accessline 72
- "https://help.cabi.org/cabi-digital-library-help/search/instructions-for-recreating-saved-searches-from-cab-direct" # official: proximity ~n, wildcards, boolean, index-field stemming - Network accessline 73
- "https://www.cabi.org/cabithesaurus/" # CABI Thesaurus (controlled vocab browse) - Network accessline 74
- "https://ospguides.ovid.com/OSPguides/cabadb.htm" # Ovid CAB Abstracts guide (hosts_note)
references/search_export/syntax_cards/cinahl_ebsco.md
- Network accessline 57
tier: "C" url_kind: "paste_only" url_template: "https://search.ebscohost.com/login.aspx?authtype=ip&profile=ehost&defaultdb=ccm" - Network accessline 58
url_kind: "paste_only" url_template: "https://search.ebscohost.com/login.aspx?authtype=ip&profile=ehost&defaultdb=ccm" note: "EBSCOhost addresses bind to institution customer-id/profile; execution requires institutional login. No public - Network accessline 59
url_template: "https://search.ebscohost.com/login.aspx?authtype=ip&profile=ehost&defaultdb=ccm" - Network accessline 60
note: "EBSCOhost addresses bind to institution customer-id/profile; execution requires institutional login. No public stateless deep link. Never construct a login-bypassing URL." source_url: - "https://libraryguides.mcgill.ca/c.php?g=4771 - Network accessline 61
source_url: - "https://libraryguides.mcgill.ca/c.php?g=477164&p=5387366" # McGill: CINAHL MH/MM/MJ/MW field codes + explode + - "https://libraryguides.mcgill.ca/epib629/search-tips" # McGil - Network accessline 62
- "https://libraryguides.mcgill.ca/c.php?g=477164&p=5387366" # McGill: CINAHL MH/MM/MJ/MW field codes + explode + - Network accessline 63
- "https://libraryguides.mcgill.ca/epib629/search-tips" # McGill: CINAHL Nn/Wn proximity + suggest-subject-headings note - Network accessline 64
- "https://about.ebsco.com/sites/default/files/acquiadam-assets/Top-Five-Searching-Strategies-Handout.pdf" # EBSCO official: N/W, wildcards - Network accessline 65
- "https://connect.ebsco.com/" # EBSCO Connect help hub (CINAHL/MeSH Headings, field codes) - Network accessline 66
- "https://guides.library.manoa.hawaii.edu/cinahl/cinahlhdgs" # CINAHL Explode / Major Concept / Subheadings (EBSCO-transcribed) - Network accessline 91
> "**Explode** — Represented by the + sign at the end of the subject heading … e.g., `(MH "Pregnancy in Diabetes+")` will search for records indexed with 'Pregnancy in Diabetes' OR 'Diabetes Mellitus, Gestational' OR 'Fetal Macrosomia'. **M - Network accessline 92
> — https://libraryguides.mcgill.ca/c.php?g=477164&p=5387366 - Network accessline 104
> "To use proximity operators in CINAHL, uncheck 'Suggest Subject Headings' if entering an unqualified search … or specify the TI OR AB fields in your search query." > — https://libraryguides.mcgill.ca/epib629/search-tips - Network accessline 105
> — https://libraryguides.mcgill.ca/epib629/search-tips
references/search_export/syntax_cards/clinicaltrials_gov.md
- Network accessline 10
access: free # 免费、无登录、无验证码 api: base: "https://clinicaltrials.gov/api/v2/studies" - Network accessline 11
api: base: "https://clinicaltrials.gov/api/v2/studies" version: "2.0.5" # /api/v2/version 实测 apiVersion,dataTimestamp 2026-07-15 - Network accessline 12
base: "https://clinicaltrials.gov/api/v2/studies" - Network accessline 34
field_tags: # Essie 不用后缀标签;字段由 query.<field> 或 AREA[] 指定 target_field: "AREA[<SearchArea>]<term>" # 例 AREA[ConditionSearch]diabetes search_areas_ref: "https://clinicaltrials.gov/api/v2/studies/search-areas" - Network accessline 35
target_field: "AREA[<SearchArea>]<term>" # 例 AREA[ConditionSearch]diabetes search_areas_ref: "https://clinicaltrials.gov/api/v2/studies/search-areas" boolean: {and: "AND", or: "OR", not: "NOT", case: "UPPERCASE-REQUIRED"} # 实测:小写 or→1 - Network accessline 36
search_areas_ref: "https://clinicaltrials.gov/api/v2/studies/search-areas" - Network accessline 62
tier: "A" # A 档来自 API v2 端点(服务器端 totalCount,机械可验、可构造) url_kind: "api" # 主交付=API URL;人读 URL 见 ui_template api_template: "https://clinicaltrials.gov/api/v2/studies?query.cond={urlenc}&query. - Network accessline 63
url_kind: "api" # 主交付=API URL;人读 URL 见 ui_template api_template: "https://clinicaltrials.gov/api/v2/studies?query.cond={urlenc}&query.intr={urlenc}&query.term={urlenc}&countTotal=true" ui_template: "https://clinical - Network accessline 64
api_template: "https://clinicaltrials.gov/api/v2/studies?query.cond={urlenc}&query.intr={urlenc}&query.term={urlenc}&countTotal=true" - Network accessline 65
ui_template: "https://clinicaltrials.gov/expert-search?term={urlenc_essie}" # 官方人读深链(粘 Essie 式) - Network accessline 66
ui_template_alt: "https://clinicaltrials.gov/search?cond={urlenc}&intr={urlenc}&term={urlenc}" - Network accessline 69
verified_date: "2026-07-16" source_url: - "https://clinicaltrials.gov/find-studies/constructing-complex-search-queries" # Essie 算符官方定义 - Network accessline 70
source_url: - "https://clinicaltrials.gov/find-studies/constructing-complex-search-queries" # Essie 算符官方定义 - "https://clinicaltrials.gov/data-api/api" # REST API v2 - Network accessline 71
- "https://clinicaltrials.gov/find-studies/constructing-complex-search-queries" # Essie 算符官方定义 - Network accessline 72
- "https://clinicaltrials.gov/data-api/api" # REST API v2 - Network accessline 73
- "https://clinicaltrials.gov/api/v2/studies/search-areas" # 检索区/字段定义 - Network accessline 109
**A 档判定成立,但 A 性来自 API v2 端点,不是人读网页**(此点区别于 PubMed/ERIC,后者人读网页本身即服务器端渲染): - **API v2 端点**:`GET /api/v2/studies?query.term=...&countTotal=true` → HTTP 200 + 顶层 `totalCount`(服务器端 JSON,完全机械可解析、可复测)。这是**真正的 A 档可构造/可验证深链**,等价于 PubMed 的 E-utilitie - Network accessline 110
- **API v2 端点**:`GET /api/v2/studies?query.term=...&countTotal=true` → HTTP 200 + 顶层 `totalCount`(服务器端 JSON,完全机械可解析、可复测)。这是**真正的 A 档可构造/可验证深链**,等价于 PubMed 的 E-utilities `esearch`。deeplink.py 应构造并对其计数做核验。 - **人读 URL**:官方 `https://clinicaltri - Network accessline 111
- **人读 URL**:官方 `https://clinicaltrials.gov/expert-search?term=<Essie>`(及 `/search?cond=&intr=&term=`)→ HTTP 200,携带查询、浏览器内可用(免费/无登录/无验证码),**但返回固定 94295 字节 React SPA 外壳**(对 "diabetes AND metformin" 与 "cancer" 两查询字节完全相同)→ 结果**客户端渲染**。按 13 spe - Network accessline 138
(以上为实测证据表;完整 curl 命令与响应存于开发档案。)
references/search_export/syntax_cards/cnki.md
- Network accessline 80
verified_date: "2026-07-16" source_url: - "https://library.sysu.edu.cn/sites/default/files/attachments/2023-10/中国知网使用手册-详细版_1.pdf" # 详细版手册 §1.2.5.2/§1.2.5.6/§1.2.5.7(旧字段集 + 复合运算符 * / 位置描述符 # %) - Network accessline 81
source_url: - "https://library.sysu.edu.cn/sites/default/files/attachments/2023-10/中国知网使用手册-详细版_1.pdf" # 详细版手册 §1.2.5.2/§1.2.5.6/§1.2.5.7(旧字段集 + 复合运算符 * / 位置描述符 # %) - "https://library.gzucm.edu.cn/__local/0/39/86/A976E276D464E8B25AB5 - Network accessline 82
- "https://library.sysu.edu.cn/sites/default/files/attachments/2023-10/中国知网使用手册-详细版_1.pdf" # 详细版手册 §1.2.5.2/§1.2.5.6/§1.2.5.7(旧字段集 + 复合运算符 * / 位置描述符 # %) - Network accessline 83
- "https://library.gzucm.edu.cn/__local/0/39/86/A976E276D464E8B25AB5A531607_579D802A_5734FC.pdf" - Network accessline 84
- "https://wlxy.hbnu.edu.cn/_upload/article/files/c8/1e/6ee8cd4c476e80fc1d482eb9a351/a17b2405-4aac-4d1c-8130-beaa9af579a6.pdf" # 全球学术快报2.0 Web版使用手册 §2.1.3.2(新字段集含 TKA=篇关摘, 2026-07-16 verified)
references/search_export/syntax_cards/cochrane_central.md
- Network accessline 57
tier: "B" # ★修正:R4 记 200(A),主 Agent 亲测 419 → 降 B 待浏览器验证 url_kind: "prefill" url_template: "https://www.cochranelibrary.com/search?q={urlenc}" # 用 /search?q=,不带 /en/ - Network accessline 58
url_kind: "prefill" url_template: "https://www.cochranelibrary.com/search?q={urlenc}" # 用 /search?q=,不带 /en/ verified_http: "非 200(curl 层 419/302 皆时点观测到,Bot 拦截/会话预检);B 档,build 轮浏览器实测再议升 A" - Network accessline 59
url_template: "https://www.cochranelibrary.com/search?q={urlenc}" # 用 /search?q=,不带 /en/ verified_http: "非 200(curl 层 419/302 皆时点观测到,Bot 拦截/会话预检);B 档,build 轮浏览器实测再议升 A" note: "★转换修正(12 号 E 组):R4 §2.3 记 /search?q= HTTP 200(服务器端渲染,判 A) - Network accessline 60
verified_http: "非 200(curl 层 419/302 皆时点观测到,Bot 拦截/会话预检);B 档,build 轮浏览器实测再议升 A" - Network accessline 62
verified_date: "2026-07-16" source_url: - "https://www.cochrane.org/products-and-services/cochrane-library" - Network accessline 63
source_url: - "https://www.cochrane.org/products-and-services/cochrane-library" - "https://www.cochrane.de/sites/cochrane.de/files/uploads/CochraneLibrary_NewSearchGuide.pdf" - Network accessline 64
- "https://www.cochrane.org/products-and-services/cochrane-library" - Network accessline 65
- "https://www.cochrane.de/sites/cochrane.de/files/uploads/CochraneLibrary_NewSearchGuide.pdf" - Network accessline 66
- "https://epoc.cochrane.org/sites/epoc.cochrane.org/files/uploads/Resources-for-authors2017/database_syntax_guide.pdf" - Network accessline 81
### 范围与角色 Cochrane Library(Wiley)的 CENTRAL 是对照试验注册库,SR 检索必备。混合访问(摘要免费/全文订阅)。**深链档位——本卡集的转换修正点**:R4 §2.3 实测 `https://www.cochranelibrary.com/search?q=` HTTP 200 size 101250、服务器端渲染含 `search-results-template`,据此 R4 判 A 档;**但主 Agent 亲测该 URL 返回 - Network accessline 82
Cochrane Library(Wiley)的 CENTRAL 是对照试验注册库,SR 检索必备。混合访问(摘要免费/全文订阅)。**深链档位——本卡集的转换修正点**:R4 §2.3 实测 `https://www.cochranelibrary.com/search?q=` HTTP 200 size 101250、服务器端渲染含 `search-results-template`,据此 R4 判 A 档;**但主 Agent 亲测该 URL 返回 419**(12 号
references/search_export/syntax_cards/econlit_ebsco.md
- Network accessline 58
tier: "C" url_kind: "paste_only" url_template: "https://search.ebscohost.com/login.aspx?authtype=ip&profile=ehost&defaultdb=eoh" - Network accessline 59
url_kind: "paste_only" url_template: "https://search.ebscohost.com/login.aspx?authtype=ip&profile=ehost&defaultdb=eoh" note: "EBSCOhost addresses are bound to institution customer-id/profile; execution requires institutional login. No p - Network accessline 60
url_template: "https://search.ebscohost.com/login.aspx?authtype=ip&profile=ehost&defaultdb=eoh" - Network accessline 61
note: "EBSCOhost addresses are bound to institution customer-id/profile; execution requires institutional login. No public stateless deep link. Do not construct any login-bypassing URL." source_url: - "https://www.aeaweb.org/econlit/searc - Network accessline 62
source_url: - "https://www.aeaweb.org/econlit/search-hints" # AEA official: JEL descriptors, 4-digit code rule - "https://www.aeaweb.org/econlit/jelCodes.php?view=jel" # AEA off - Network accessline 63
- "https://www.aeaweb.org/econlit/search-hints" # AEA official: JEL descriptors, 4-digit code rule - Network accessline 64
- "https://www.aeaweb.org/econlit/jelCodes.php?view=jel" # AEA official: full JEL code list - Network accessline 65
- "https://about.ebsco.com/products/research-databases/econlit-full-text" # EBSCO official product page - Network accessline 66
- "https://about.ebsco.com/sites/default/files/acquiadam-assets/Top-Five-Searching-Strategies-Handout.pdf" # EBSCO official: N/W, wildcards - Network accessline 67
- "https://ospguides.ovid.com/OSPguides/econdb.htm" # Ovid EconLit guide (hosts_note: CC field) - Network accessline 89
> "The EconLit subject descriptors are the same as the Journal of Economic Literature (JEL) classifications also known as the American Economic Association Classification System. On EconLit, a zero has been added to the JEL classification t - Network accessline 90
> — AEA, *EconLit Search Hints*, https://www.aeaweb.org/econlit/search-hints (verified 2026-07-16) - Network accessline 98
> "Near Operator (N) finds results in which search terms are within a specified number of words of one another in any order. Example: tax N5 reform … Within Operator (W) finds results in which search terms are within a specified number of w - Network accessline 99
> — https://about.ebsco.com/sites/default/files/acquiadam-assets/Top-Five-Searching-Strategies-Handout.pdf
references/search_export/syntax_cards/embase_com.md
- Network accessline 56
tier: "C" url_kind: "paste_only" url_template: "https://www.embase.com/#advancedSearch" - Network accessline 57
url_kind: "paste_only" url_template: "https://www.embase.com/#advancedSearch" note: "登录墙:实测 HTTP 200 但为 hash 路由 SPA 外壳,出结果需鉴权。URL 结构已考证,执行待机构账号;交付=可粘贴检索式;绝不构造绕登录 URL。" - Network accessline 58
url_template: "https://www.embase.com/#advancedSearch" - Network accessline 59
note: "登录墙:实测 HTTP 200 但为 hash 路由 SPA 外壳,出结果需鉴权。URL 结构已考证,执行待机构账号;交付=可粘贴检索式;绝不构造绕登录 URL。" source_url: - "https://www.elsevier.support/embase/answer/how-do-i-search-in-embase" - Network accessline 60
source_url: - "https://www.elsevier.support/embase/answer/how-do-i-search-in-embase" - "https://supportcontent.elsevier.com/RightNow%20Next%20Gen/Embase/Webinar_Embase_Intro_20170823.pdf" - Network accessline 61
- "https://www.elsevier.support/embase/answer/how-do-i-search-in-embase" - Network accessline 62
- "https://supportcontent.elsevier.com/RightNow%20Next%20Gen/Embase/Webinar_Embase_Intro_20170823.pdf" - Network accessline 78
### 范围与角色 Embase(Elsevier)在 embase.com 原生宿主上的语法卡。订阅登录墙 → 深链 **C 档**:R4 §2.8 实测 `https://www.embase.com/#advancedSearch` HTTP 200 但 hash 路由 SPA 外壳,出结果需鉴权 → 交付=可粘贴检索式。 - Network accessline 79
Embase(Elsevier)在 embase.com 原生宿主上的语法卡。订阅登录墙 → 深链 **C 档**:R4 §2.8 实测 `https://www.embase.com/#advancedSearch` HTTP 200 但 hash 路由 SPA 外壳,出结果需鉴权 → 交付=可粘贴检索式。 - Network accessline 93
### 深链(C 档) `https://www.embase.com/#advancedSearch` 实测 HTTP 200(hash 路由 SPA 外壳)。URL 结构已考证,执行待机构账号;只观测不绕墙(C-14)。 - Network accessline 94
`https://www.embase.com/#advancedSearch` 实测 HTTP 200(hash 路由 SPA 外壳)。URL 结构已考证,执行待机构账号;只观测不绕墙(C-14)。
references/search_export/syntax_cards/embase_ovid.md
- Network accessline 62
note: "登录墙 + 全程会话态(ovidsp.ovid.com 会话绑定),无无状态深链。交付=可粘贴检索式;绝不构造绕登录 URL。" source_url: - "https://ospguides.ovid.com/OSPguides/embdb.htm" - Network accessline 63
source_url: - "https://ospguides.ovid.com/OSPguides/embdb.htm" - "https://ospguides.ovid.com/OSPguides/medline.htm" - Network accessline 64
- "https://ospguides.ovid.com/OSPguides/embdb.htm" - Network accessline 65
- "https://ospguides.ovid.com/OSPguides/medline.htm" - Network accessline 66
- "https://library-guides.ucl.ac.uk/OvidSP/textword-searching" - Network accessline 67
- "https://epoc.cochrane.org/sites/epoc.cochrane.org/files/uploads/Resources-for-authors2017/database_syntax_guide.pdf"
references/search_export/syntax_cards/eric.md
- Network accessline 55
tier: "A" url_kind: "prefill" url_template: "https://eric.ed.gov/?q={urlenc}" - Network accessline 56
url_kind: "prefill" url_template: "https://eric.ed.gov/?q={urlenc}" field_url_example: "https://eric.ed.gov/?q=author%3Ayoung" # 亦支持字段式 ?q=author:young - Network accessline 57
url_template: "https://eric.ed.gov/?q={urlenc}" - Network accessline 58
field_url_example: "https://eric.ed.gov/?q=author%3Ayoung" # 亦支持字段式 ?q=author:young - Network accessline 61
verified_date: "2026-07-16" source_url: - "https://eric.ed.gov/?searchtips" # Advanced Search Tips - Network accessline 62
source_url: - "https://eric.ed.gov/?searchtips" # Advanced Search Tips - "https://eric.ed.gov/?ti=all" # ERIC Thesaurus - Network accessline 63
- "https://eric.ed.gov/?searchtips" # Advanced Search Tips - Network accessline 64
- "https://eric.ed.gov/?ti=all" # ERIC Thesaurus - Network accessline 65
- "https://ospguides.ovid.com/OSPguides/ericdb.htm" # 订阅宿主 ERIC-on-Ovid - Network accessline 81
### 范围与角色 ERIC(IES/美国教育部)教育学核心库;本卡记**免费官方站 eric.ed.gov**(订阅宿主 EBSCO/Ovid/ProQuest 语法见对应卡)。深链 **A 档**:R4 §2.2 实测 `https://eric.ed.gov/?q=<URL编码>` HTTP 200、页面含 "of 27,020 results"(服务器端 HTML 计数)——**最干净的开放深链之一**。 - Network accessline 82
ERIC(IES/美国教育部)教育学核心库;本卡记**免费官方站 eric.ed.gov**(订阅宿主 EBSCO/Ovid/ProQuest 语法见对应卡)。深链 **A 档**:R4 §2.2 实测 `https://eric.ed.gov/?q=<URL编码>` HTTP 200、页面含 "of 27,020 results"(服务器端 HTML 计数)——**最干净的开放深链之一**。 - Network accessline 93
### 深链(A 档) `https://eric.ed.gov/?q=<URL编码>` 实测 200,服务器端渲染结果计数;亦支持字段式 `?q=author%3Ayoung`。deeplink.py 对 ERIC 构造并核验此 URL。 - Network accessline 94
`https://eric.ed.gov/?q=<URL编码>` 实测 200,服务器端渲染结果计数;亦支持字段式 `?q=author%3Ayoung`。deeplink.py 对 ERIC 构造并核验此 URL。
references/search_export/syntax_cards/ieee_xplore.md
- Network accessline 56
tier: "B" url_kind: "prefill" url_template: "https://ieeexplore.ieee.org/search/searchresult.jsp?queryText={urlenc}" - Network accessline 57
url_kind: "prefill" url_template: "https://ieeexplore.ieee.org/search/searchresult.jsp?queryText={urlenc}" ui_render: "client-SPA (Angular)" - Network accessline 58
url_template: "https://ieeexplore.ieee.org/search/searchresult.jsp?queryText={urlenc}" - Network accessline 62
verified_date: "2026-07-16" source_url: - "https://ieeexplore.ieee.org/Xplorehelp/searching-ieee-xplore/command-search" - Network accessline 63
source_url: - "https://ieeexplore.ieee.org/Xplorehelp/searching-ieee-xplore/command-search" - "https://ieeexplore.ieee.org/Xplorehelp/searching-ieee-xplore/" - Network accessline 64
- "https://ieeexplore.ieee.org/Xplorehelp/searching-ieee-xplore/command-search" - Network accessline 65
- "https://ieeexplore.ieee.org/Xplorehelp/searching-ieee-xplore/"
references/search_export/syntax_cards/psycinfo_ebsco.md
- Network accessline 60
tier: "C" url_kind: "paste_only" url_template: "https://search.ebscohost.com/login.aspx?authtype=ip&profile=ehost&defaultdb=psyh" - Network accessline 61
url_kind: "paste_only" url_template: "https://search.ebscohost.com/login.aspx?authtype=ip&profile=ehost&defaultdb=psyh" note: "EBSCOhost 按机构 customer-id/profile 定址,执行需机构登录,无公众无状态深链。交付=可粘贴检索式;绝不构造绕登录 URL。" - Network accessline 62
url_template: "https://search.ebscohost.com/login.aspx?authtype=ip&profile=ehost&defaultdb=psyh" - Network accessline 63
note: "EBSCOhost 按机构 customer-id/profile 定址,执行需机构登录,无公众无状态深链。交付=可粘贴检索式;绝不构造绕登录 URL。" source_url: - "https://www.apa.org/pubs/databases/training/ebsco.pdf" - Network accessline 64
source_url: - "https://www.apa.org/pubs/databases/training/ebsco.pdf" - "https://about.ebsco.com/sites/default/files/acquiadam-assets/Top-Five-Searching-Strategies-Handout.pdf" - Network accessline 65
- "https://www.apa.org/pubs/databases/training/ebsco.pdf" - Network accessline 66
- "https://about.ebsco.com/sites/default/files/acquiadam-assets/Top-Five-Searching-Strategies-Handout.pdf" - Network accessline 67
- "https://connect.ebsco.com/"
references/search_export/syntax_cards/psycinfo_ovid.md
- Network accessline 62
note: "登录墙 + 全程会话态(ovidsp.ovid.com),无深链。交付=可粘贴检索式;绝不构造绕登录 URL。" source_url: - "https://ospguides.ovid.com/OSPguides/psycdb.htm" - Network accessline 63
source_url: - "https://ospguides.ovid.com/OSPguides/psycdb.htm" - "https://library-guides.ucl.ac.uk/OvidSP/textword-searching" - Network accessline 64
- "https://ospguides.ovid.com/OSPguides/psycdb.htm" - Network accessline 65
- "https://library-guides.ucl.ac.uk/OvidSP/textword-searching" - Network accessline 66
- "https://pmc.ncbi.nlm.nih.gov/articles/PMC12527542" # EBSCO↔Ovid PsycInfo 字段码翻译表
references/search_export/syntax_cards/pubmed.md
- Network accessline 60
tier: "A" url_kind: "prefill" url_template: "https://pubmed.ncbi.nlm.nih.gov/?term={urlenc}" # 方括号编码为 %5B%5D - Network accessline 61
url_kind: "prefill" url_template: "https://pubmed.ncbi.nlm.nih.gov/?term={urlenc}" # 方括号编码为 %5B%5D api_template: "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term={urlenc}" - Network accessline 62
url_template: "https://pubmed.ncbi.nlm.nih.gov/?term={urlenc}" # 方括号编码为 %5B%5D - Network accessline 63
api_template: "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term={urlenc}" - Network accessline 65
verified_date: "2026-07-16" source_url: - "https://pubmed.ncbi.nlm.nih.gov/help/" - Network accessline 66
source_url: - "https://pubmed.ncbi.nlm.nih.gov/help/" - "https://pubmed.ncbi.nlm.nih.gov/help/#search-tags" - Network accessline 67
- "https://pubmed.ncbi.nlm.nih.gov/help/" - Network accessline 68
- "https://pubmed.ncbi.nlm.nih.gov/help/#search-tags" - Network accessline 69
- "https://www.ncbi.nlm.nih.gov/books/NBK25501/" # E-utilities - Network accessline 96
### 深链(A 档,实测) - 网页:`https://pubmed.ncbi.nlm.nih.gov/?term=<URL编码>`(方括号→`%5B%5D`)——R4 §2.1A 实测 HTTP 200 size 256265,返回完整结果页。 - Network accessline 97
- 网页:`https://pubmed.ncbi.nlm.nih.gov/?term=<URL编码>`(方括号→`%5B%5D`)——R4 §2.1A 实测 HTTP 200 size 256265,返回完整结果页。
references/search_export/syntax_cards/scifinder.md
- Network accessline 42
verified_date: "2026-07-16" source_url: - "https://web.cas.org/marketing/academic/academic_kc_resources-english/SCIACDENGREF101245_SciFinder-Quick-Reference-Guide-Academic-A4.pdf" # CAS 官方 Academic Quick Reference Guide - Network accessline 43
source_url: - "https://web.cas.org/marketing/academic/academic_kc_resources-english/SCIACDENGREF101245_SciFinder-Quick-Reference-Guide-Academic-A4.pdf" # CAS 官方 Academic Quick Reference Guide - "https://web.cas.org/marketing/pdf/SCIGE - Network accessline 44
- "https://web.cas.org/marketing/academic/academic_kc_resources-english/SCIACDENGREF101245_SciFinder-Quick-Reference-Guide-Academic-A4.pdf" # CAS 官方 Academic Quick Reference Guide - Network accessline 45
- "https://web.cas.org/marketing/pdf/SCIGENENGREF101245-SciFinder-Quick-Reference-Guide-Commercial-A4.pdf" # CAS 官方 Commercial Quick Reference Guide
references/search_export/syntax_cards/scopus.md
- Network accessline 62
tier: "C" url_kind: "paste_only" url_template: "https://www.scopus.com/search/form.uri?display=advanced" - Network accessline 63
url_kind: "paste_only" url_template: "https://www.scopus.com/search/form.uri?display=advanced" note: "登录墙:/search/form.uri 实测 301 重定向至 SSO 登录。入口指向 Advanced document search(display=advanced):本卡产出的 TITLE-ABS-KEY(...) 字段码只在高级检索框生效,基本检索页粘进去 - Network accessline 64
url_template: "https://www.scopus.com/search/form.uri?display=advanced" - Network accessline 65
note: "登录墙:/search/form.uri 实测 301 重定向至 SSO 登录。入口指向 Advanced document search(display=advanced):本卡产出的 TITLE-ABS-KEY(...) 字段码只在高级检索框生效,基本检索页粘进去不工作(2026-09-30 由 display=basic 改)。URL 结构已考证,执行待机构账号;交付=可粘贴检索式;绝不构造绕登录 URL。" source_url: - "https: - Network accessline 66
source_url: - "https://elsevier.libguides.com/Scopus/topical-search" - "https://supportcontent.elsevier.com/RightNow%20Next%20Gen/Scopus/Files/Scopus%20Quick%20Reference%20Guide%20WEB_2023.pdf" - Network accessline 67
- "https://elsevier.libguides.com/Scopus/topical-search" - Network accessline 68
- "https://supportcontent.elsevier.com/RightNow%20Next%20Gen/Scopus/Files/Scopus%20Quick%20Reference%20Guide%20WEB_2023.pdf" - Network accessline 69
- "https://blog.scopus.com/boolean-searches-in-scopus-understanding-operator-precedence-best-practices" - Network accessline 99
### 深链(C 档) `https://www.scopus.com/results/results.uri?...`(会话态);`/search/form.uri` 实测 301→SSO。URL 结构已考证,执行待机构账号;只观测不绕墙(C-14)。 - Network accessline 100
`https://www.scopus.com/results/results.uri?...`(会话态);`/search/form.uri` 实测 301→SSO。URL 结构已考证,执行待机构账号;只观测不绕墙(C-14)。
references/search_export/syntax_cards/sinomed.md
- Network accessline 49
verification: llm_suggest_only # 默认:LLM 建议 + 黄旗『待人工核』(须 UI 内确认准确主题词+副主题词) free_crosscheck: # ★实测发现(2026-07-16):存在免费无登录 autocomplete,可做存在性交叉核 endpoint: "GET https://www.sinomed.ac.cn/suggest.do?dbtype=mt_&q=<中 - Network accessline 50
free_crosscheck: # ★实测发现(2026-07-16):存在免费无登录 autocomplete,可做存在性交叉核 endpoint: "GET https://www.sinomed.ac.cn/suggest.do?dbtype=mt_&q=<中文词>" behavior: "返回 CMeSH 中文主题词候选;命中→有候选,无命中→HTTP 200 空体(size 0)" - Network accessline 51
endpoint: "GET https://www.sinomed.ac.cn/suggest.do?dbtype=mt_&q=<中文词>" - Network accessline 66
verified_date: "2026-07-16" source_url: - "https://www.sinomed.ac.cn/zh/subjectSearch.html" # 官方主题检索页 - Network accessline 67
source_url: - "https://www.sinomed.ac.cn/zh/subjectSearch.html" # 官方主题检索页 - "https://baike.baidu.com/item/中国生物医学文献服务系统/9588775" # 版本/资源/CMeSH 2017 佐证 - Network accessline 68
- "https://www.sinomed.ac.cn/zh/subjectSearch.html" # 官方主题检索页 - Network accessline 69
- "https://baike.baidu.com/item/中国生物医学文献服务系统/9588775" # 版本/资源/CMeSH 2017 佐证 - Network accessline 70
- "https://lib.cmc.edu.cn/cbm.pdf" # 馆方使用指南(主题检索/副主题词组配步骤) - Network accessline 111
- 端点 `GET https://www.sinomed.ac.cn/suggest.do?dbtype=mt_&q=<中文词>` **无需登录**即返回 CMeSH 中文主题词候选。实测:
references/search_export/syntax_cards/wanfang.md
- Network accessline 57
tier: "B" url_kind: "prefill" url_template: "https://s.wanfangdata.com.cn/paper?q={urlenc}" - Network accessline 58
url_kind: "prefill" url_template: "https://s.wanfangdata.com.cn/paper?q={urlenc}" ui_render: "client-SPA (Nuxt/Vue, window.__NUXT__)" - Network accessline 59
url_template: "https://s.wanfangdata.com.cn/paper?q={urlenc}" - Network accessline 63
verified_date: "2026-07-16" source_url: - "http://www.llas.cas.cn/xwzx/tzgg/202204/P020241229644157292759.pdf" - Network accessline 64
source_url: - "http://www.llas.cas.cn/xwzx/tzgg/202204/P020241229644157292759.pdf" - "https://library.zuel.edu.cn/_upload/article/files/16/da/a36893834ff8978060d5256a93b8/be1fd347-d276-49a0-8921-b25e6c17a1b8.pdf" - Network accessline 65
- "http://www.llas.cas.cn/xwzx/tzgg/202204/P020241229644157292759.pdf" - Network accessline 66
- "https://library.zuel.edu.cn/_upload/article/files/16/da/a36893834ff8978060d5256a93b8/be1fd347-d276-49a0-8921-b25e6c17a1b8.pdf" - Network accessline 79
### 范围与角色 万方智搜(万方数据,订阅)中文原生学术发现系统。深链 **B 档**:R4 §2.6 实测 `https://s.wanfangdata.com.cn/paper?q=<URL编码>` HTTP 200,返回 `window.__NUXT__` SPA 外壳(Nuxt/Vue,预填并前端拉结果)→ 浏览器内可用、脚本层取不到结果。 - Network accessline 80
万方智搜(万方数据,订阅)中文原生学术发现系统。深链 **B 档**:R4 §2.6 实测 `https://s.wanfangdata.com.cn/paper?q=<URL编码>` HTTP 200,返回 `window.__NUXT__` SPA 外壳(Nuxt/Vue,预填并前端拉结果)→ 浏览器内可用、脚本层取不到结果。
references/search_export/syntax_cards/wos.md
- Network accessline 66
tier: "C" url_kind: "paste_only" url_template: "https://www.webofscience.com/wos/woscc/advanced-search" - Network accessline 67
url_kind: "paste_only" url_template: "https://www.webofscience.com/wos/woscc/advanced-search" note: "登录墙:advanced-search 页实测 HTTP 200 但仅加载 Angular 外壳(2026-09-30 由 basic-search 改:本卡产出的 TS= 字段标签只在 Advanced Search 生效),出结果需机构鉴权;Advanced Sea - Network accessline 68
url_template: "https://www.webofscience.com/wos/woscc/advanced-search" - Network accessline 69
note: "登录墙:advanced-search 页实测 HTTP 200 但仅加载 Angular 外壳(2026-09-30 由 basic-search 改:本卡产出的 TS= 字段标签只在 Advanced Search 生效),出结果需机构鉴权;Advanced Search 有会话内可分享 query 链接但绑定会话、非无状态预填。URL 结构已考证,执行待机构账号;交付=可粘贴检索式;绝不构造绕登录 URL。" source_url: - "https: - Network accessline 70
source_url: - "https://webofscience.zendesk.com/hc/en-us/articles/20016122409105-Search-Operators" - "https://webofscience.zendesk.com/hc/en-us/articles/26916347018257-Web-of-Science-Core-Collection-Advanced-Search-Field-Tags" - Network accessline 71
- "https://webofscience.zendesk.com/hc/en-us/articles/20016122409105-Search-Operators" - Network accessline 72
- "https://webofscience.zendesk.com/hc/en-us/articles/26916347018257-Web-of-Science-Core-Collection-Advanced-Search-Field-Tags" - Network accessline 73
- "https://webofscience.zendesk.com/hc/en-us/articles/20130361503249-Advanced-Search-Query-Builder" - Network accessline 101
### 深链(C 档) `https://www.webofscience.com/wos/woscc/advanced-search` — 实测 HTTP 200(仅 SPA 外壳,出结果需鉴权;2026-09-30 复测)。检索式用 TS= 字段标签,只能粘进 Advanced Search,所以入口指向它而不是 basic-search。Advanced Search 有「会话内可分享 query 链接」(链条图标复制),但绑定会话、非无状态预填。URL 结构已考证,执 - Network accessline 102
`https://www.webofscience.com/wos/woscc/advanced-search` — 实测 HTTP 200(仅 SPA 外壳,出结果需鉴权;2026-09-30 复测)。检索式用 TS= 字段标签,只能粘进 Advanced Search,所以入口指向它而不是 basic-search。Advanced Search 有「会话内可分享 query 链接」(链条图标复制),但绑定会话、非无状态预填。URL 结构已考证,执行待机构账号;只观测不绕
references/setup.md
- Access to secretsline 12
[Credential-related source omitted] - Access to secretsline 13
[Credential-related source omitted] - Access to secretsline 14
[Credential-related source omitted] - Network accessline 32
| | | |---|---| | Apply at | https://openalex.org/settings/api | - Network accessline 33
|---|---| | Apply at | https://openalex.org/settings/api | | Cost | Free, $1/day quota (~10k list calls / 1k searches) | - Network accessline 34
| Apply at | https://openalex.org/settings/api | - Access to secretsline 37
[Credential-related source omitted] - Network accessline 40
**Steps**: 1. Register at https://openalex.org (any email) - Network accessline 41
1. Register at https://openalex.org (any email) - Network accessline 42
2. Visit https://openalex.org/settings/api → generate API key - Access to secretsline 43
[Credential-related source omitted] - Network accessline 49
[Credential-related source omitted] - Access to secretsline 49
[Credential-related source omitted] - Network accessline 55
| | | |---|---| | Apply at | https://www.semanticscholar.org/product/api | - Network accessline 56
|---|---| | Apply at | https://www.semanticscholar.org/product/api | | Cost | Free, no paid tier exists | - Network accessline 57
| Apply at | https://www.semanticscholar.org/product/api | - Access to secretsline 60
[Credential-related source omitted] - Network accessline 63
**Steps**: 1. Visit https://www.semanticscholar.org/product/api - Network accessline 64
1. Visit https://www.semanticscholar.org/product/api - Network accessline 71
curl -s 'https://api.semanticscholar.org/graph/v1/paper/DOI:10.1162/neco.1997.9.8.1735?fields=influentialCitationCount' \ - Network accessline 78
| | | |---|---| | Apply at | https://account.ncbi.nlm.nih.gov/settings/ | - Network accessline 79
|---|---| | Apply at | https://account.ncbi.nlm.nih.gov/settings/ | | Cost | Free | - Network accessline 80
| Apply at | https://account.ncbi.nlm.nih.gov/settings/ | - Access to secretsline 83
[Credential-related source omitted] - Network accessline 86
**Steps**: 1. Visit https://account.ncbi.nlm.nih.gov/settings/ → log in (Google / ORCID / new NCBI account) - Network accessline 87
1. Visit https://account.ncbi.nlm.nih.gov/settings/ → log in (Google / ORCID / new NCBI account) - Network accessline 95
[Credential-related source omitted] - Access to secretsline 95
[Credential-related source omitted] - Network accessline 113
curl -s -H 'User-Agent: paper-search-pro/2.0 (mailto:YOUR_EMAIL)' \ - Network accessline 114
'https://api.crossref.org/works/10.1056/NEJMoa2034577' | head -c 400 - Access to secretsline 164
[Credential-related source omitted] - Access to secretsline 168
[Credential-related source omitted] - Access to secretsline 172
[Credential-related source omitted] - Access to secretsline 206
[Credential-related source omitted] - Access to secretsline 207
[Credential-related source omitted] - Access to secretsline 209
[Credential-related source omitted] - Access to secretsline 214
[Credential-related source omitted] - Access to secretsline 215
[Credential-related source omitted]
references/source_routing.md
references/ss_helper_cheatsheet.md
scripts/__init__.py
- Executable scriptline 1
Executable file
scripts/agent_search.py
scripts/arxiv_helper.py
scripts/config.py
- Executable scriptline 1
Executable file
scripts/crossref_helper.py
- Executable scriptline 1
Executable file - Network accessline 76
_USER_AGENT_TEMPLATE = ( "paper-search-pro/2.0 " "(https://github.com/anthropic/paper-search-pro; mailto:{email})" - Network accessline 77
"paper-search-pro/2.0 " "(https://github.com/anthropic/paper-search-pro; mailto:{email})" ) - Network accessline 78
"(https://github.com/anthropic/paper-search-pro; mailto:{email})" - Network accessline 79
) _BASE_URL = "https://api.crossref.org/works" _RATE_LIMIT_SLEEP = 0.1 # 10 req/s — well under polite-pool 10/s ceiling. - Network accessline 80
_BASE_URL = "https://api.crossref.org/works" - Network accessline 101
global _session, _email _email = (config.crossref_email if config else "") or _DEFAULT_EMAIL _session = requests.Session() - Network accessline 102
_email = (config.crossref_email if config else "") or _DEFAULT_EMAIL _session = requests.Session() _session.headers["User-Agent"] = _USER_AGENT_TEMPLATE.format(email=_email) - Network accessline 103
_session = requests.Session() - Network accessline 425
type=_TYPE_MAP.get(rec.get("type") or ""), citation_count=_as_int(rec.get("is-referenced-by-count")), doi_url=f"https://doi.org/{doi}" if doi else None, - Network accessline 426
citation_count=_as_int(rec.get("is-referenced-by-count")), doi_url=f"https://doi.org/{doi}" if doi else None, sources=["crossref"], - Network accessline 427
doi_url=f"https://doi.org/{doi}" if doi else None,
scripts/data_materialization.py
- Executable scriptline 1
Executable file - Network accessline 416
"rcs": p.rcs, "citation_count": p.citation_count or 0, "doi_url": p.doi_url or (f"https://doi.org/{p.doi}" if p.doi else None), - Network accessline 417
"citation_count": p.citation_count or 0, "doi_url": p.doi_url or (f"https://doi.org/{p.doi}" if p.doi else None), "is_seed": (p.discovery_path or "").startswith("query:"), - Network accessline 418
"doi_url": p.doi_url or (f"https://doi.org/{p.doi}" if p.doi else None), - Network accessline 589
"venue": p.venue, "doi": p.doi, "doi_url": p.doi_url or (f"https://doi.org/{p.doi}" if p.doi else None), - Network accessline 590
"doi": p.doi, "doi_url": p.doi_url or (f"https://doi.org/{p.doi}" if p.doi else None), "abstract": p.abstract, - Network accessline 591
"doi_url": p.doi_url or (f"https://doi.org/{p.doi}" if p.doi else None),
scripts/detect_language.py
- Executable scriptline 1
Executable file
scripts/discovery_curve.py
- Executable scriptline 1
Executable file - Network accessline 112
keys.append(f"pmid|{paper.pmid}") if paper.openalex_id: keys.append("openalex|" + paper.openalex_id.replace("https://openalex.org/", "")) - Network accessline 113
if paper.openalex_id: keys.append("openalex|" + paper.openalex_id.replace("https://openalex.org/", "")) if paper.ss_paper_id: - Network accessline 114
keys.append("openalex|" + paper.openalex_id.replace("https://openalex.org/", ""))
scripts/federated_kg_resolver.py
- Executable scriptline 1
Executable file - Network accessline 64
Examples: "https://doi.org/10.1038/X" -> "10.1038/x" - Network accessline 65
"https://doi.org/10.1038/X" -> "10.1038/x" - Network accessline 71
d = doi.strip().lower() d = ( d.replace("https://doi.org/", "") - Network accessline 72
d = ( d.replace("https://doi.org/", "") .replace("http://doi.org/", "") - Network accessline 73
d.replace("https://doi.org/", "") - Network accessline 74
.replace("http://doi.org/", "") - Network accessline 75
.replace("https://dx.doi.org/", "") - Network accessline 76
.replace("http://dx.doi.org/", "") - Network accessline 88
Examples: "1706.03762v5" -> "1706.03762" "https://arxiv.org/abs/2401.12345v2" -> "2401.12345" - Network accessline 89
"1706.03762v5" -> "1706.03762" "https://arxiv.org/abs/2401.12345v2" -> "2401.12345" """ - Network accessline 90
"https://arxiv.org/abs/2401.12345v2" -> "2401.12345" - Network accessline 131
return ("pmid", str(paper.pmid)) if paper.openalex_id: oid = paper.openalex_id.replace("https://openalex.org/", "") - Network accessline 132
if paper.openalex_id: oid = paper.openalex_id.replace("https://openalex.org/", "") return ("openalex", oid) - Network accessline 133
oid = paper.openalex_id.replace("https://openalex.org/", "")
scripts/generate_exports.py
- Executable scriptline 1
Executable file - Network accessline 138
fields.append(f" doi = {{{p.doi}}}") if p.doi_url or p.doi: url = p.doi_url or f"https://doi.org/{p.doi}" - Network accessline 139
if p.doi_url or p.doi: url = p.doi_url or f"https://doi.org/{p.doi}" fields.append(f" url = {{{url}}}") - Network accessline 140
url = p.doi_url or f"https://doi.org/{p.doi}" - Network accessline 185
lines.append(f"DO - {p.doi}") if p.doi_url or p.doi: lines.append(f"UR - {p.doi_url or f'https://doi.org/{p.doi}'}") - Network accessline 186
if p.doi_url or p.doi: lines.append(f"UR - {p.doi_url or f'https://doi.org/{p.doi}'}") if p.abstract: - Network accessline 187
lines.append(f"UR - {p.doi_url or f'https://doi.org/{p.doi}'}") - Network accessline 246
"venue": p.venue or "", "doi": p.doi or "", "doi_url": p.doi_url or (f"https://doi.org/{p.doi}" if p.doi else ""), - Network accessline 247
"doi": p.doi or "", "doi_url": p.doi_url or (f"https://doi.org/{p.doi}" if p.doi else ""), "rcs": p.rcs if p.rcs is not None else "", - Network accessline 248
"doi_url": p.doi_url or (f"https://doi.org/{p.doi}" if p.doi else ""),
scripts/html_renderer_webartifacts.py
- Executable scriptline 1
Executable file
scripts/journal_rank.py
- Executable scriptline 1
Executable file - Network accessline 119
PORTAL_URL: Dict[str, str] = { "cas": "https://www.fenqubiao.com", - Network accessline 120
"cas": "https://www.fenqubiao.com", - Network accessline 121
"jcr": "https://jcr.clarivate.com", - Network accessline 122
"sjr": "https://www.scimagojr.com", - Network accessline 128
DEFAULT_SOURCES: Dict[str, str] = { "cas": ( "https://raw.githubusercontent.com/hitfyd/ShowJCR/master/" - Network accessline 129
"cas": ( "https://raw.githubusercontent.com/hitfyd/ShowJCR/master/" "%E4%B8%AD%E7%A7%91%E9%99%A2%E5%88%86%E5%8C%BA%E8%A1%A8%E5%8F%8AJCR" - Network accessline 130
"https://raw.githubusercontent.com/hitfyd/ShowJCR/master/" - Network accessline 134
), "jcr": ( "https://raw.githubusercontent.com/hitfyd/ShowJCR/master/" - Network accessline 135
"jcr": ( "https://raw.githubusercontent.com/hitfyd/ShowJCR/master/" "%E4%B8%AD%E7%A7%91%E9%99%A2%E5%88%86%E5%8C%BA%E8%A1%A8%E5%8F%8AJCR" - Network accessline 136
"https://raw.githubusercontent.com/hitfyd/ShowJCR/master/" - Network accessline 140
), "sjr": ( "https://raw.githubusercontent.com/saramabrouk173/zotero-sjr-ranker/" - Network accessline 141
"sjr": ( "https://raw.githubusercontent.com/saramabrouk173/zotero-sjr-ranker/" "main/scimagojr%202024.csv" - Network accessline 142
"https://raw.githubusercontent.com/saramabrouk173/zotero-sjr-ranker/" - Network accessline 160
_USER_AGENT = ( "paper-search-pro/2.2 " "(https://github.com/anthropic/paper-search-pro; journal-rank fetch)" - Network accessline 161
"paper-search-pro/2.2 " "(https://github.com/anthropic/paper-search-pro; journal-rank fetch)" ) - Network accessline 162
"(https://github.com/anthropic/paper-search-pro; journal-rank fetch)" - Network accessline 606
# --------------------------------------------------------------------------- # Cache + fetch (init-once; never re-fetch a present, fresh file) - Network accessline 607
# Cache + fetch (init-once; never re-fetch a present, fresh file) - Network accessline 627
def fetch( - Network accessline 648
stale_days: re-fetch when a cached file is older than this. force: re-fetch even if a fresh cache exists. session: an injectable requests.Session (tests pass a fake; default - Network accessline 649
force: re-fetch even if a fresh cache exists. session: an injectable requests.Session (tests pass a fake; default constructs one with the polite User-Agent). - Network accessline 650
session: an injectable requests.Session (tests pass a fake; default - Network accessline 673
continue if sess is None: sess = requests.Session() - Network accessline 674
if sess is None: sess = requests.Session() sess.headers["User-Agent"] = _USER_AGENT - Network accessline 675
sess = requests.Session() - Network accessline 704
return fetch(platform=None, **kwargs) - Network accessline 872
if args.command == "fetch": cache_dir = args.cache_dir or cfg_cache_dir result = fetch( - Network accessline 873
cache_dir = args.cache_dir or cfg_cache_dir result = fetch( platform=args.platform, year=args.year, sources=cfg_sources, - Network accessline 874
result = fetch(
scripts/md_report.py
- Executable scriptline 1
Executable file
scripts/nssd_helper.py
- Executable scriptline 1
Executable file - Network accessline 11
Endpoint (verified live 2026-07-12, no login / no signature / no WAF cookie): POST https://www.ncpssd.cn/searchHandler/search - Network accessline 12
POST https://www.ncpssd.cn/searchHandler/search - Network accessline 96
SEARCH_URL = "https://www.ncpssd.cn/searchHandler/search" - Network accessline 223
Mirrors ``yiigle_helper._normalize_doi`` and the OpenAlex / SS convention so the cross-source dedup key (federated_kg_resolver keys on the lowercase DOI) lines up. Previously NSSD only lowercased, so a "https://doi.org/10.x" row - Network accessline 224
the cross-source dedup key (federated_kg_resolver keys on the lowercase DOI) lines up. Previously NSSD only lowercased, so a "https://doi.org/10.x" row would not collide with the bare "10.x" form emitted by the other sources. - Network accessline 225
lines up. Previously NSSD only lowercased, so a "https://doi.org/10.x" row - Network accessline 229
if s is None: return None for prefix in ("https://doi.org/", "http://doi.org/", "doi.org/", "doi:"): - Network accessline 230
return None for prefix in ("https://doi.org/", "http://doi.org/", "doi.org/", "doi:"): if s.lower().startswith(prefix): - Network accessline 231
for prefix in ("https://doi.org/", "http://doi.org/", "doi.org/", "doi:"): - Network accessline 345
type="article", keywords=keywords, doi_url=(f"https://doi.org/{doi}" if doi else None), - Network accessline 346
keywords=keywords, doi_url=(f"https://doi.org/{doi}" if doi else None), sources=[_SOURCE], - Network accessline 347
doi_url=(f"https://doi.org/{doi}" if doi else None),
scripts/openalex_guard.py
- Executable scriptline 1
Executable file
scripts/openalex_helper.py
- Executable scriptline 1
Executable file - Network accessline 10
- F21 journal filter: must resolve source IDs first (display_name str is unreliable) - F6 Attention paper: cited_by 6543 is an OpenAlex data merger bug, not pyalex bug - ID prefix stripping required (raw IDs come as "https://openalex.org/W1 - Network accessline 11
- F6 Attention paper: cited_by 6543 is an OpenAlex data merger bug, not pyalex bug - ID prefix stripping required (raw IDs come as "https://openalex.org/W123...") """ - Network accessline 12
- ID prefix stripping required (raw IDs come as "https://openalex.org/W123...") - Access to secretsline 176
[Credential-related source omitted] - Access to secretsline 182
[Credential-related source omitted] - Access to secretsline 183
[Credential-related source omitted] - Network accessline 191
def _strip_oa_prefix(s: Optional[str], prefix: str = "https://openalex.org/") -> Optional[str]: - Network accessline 200
if not doi: return None return doi.replace("https://doi.org/", "").replace("http://doi.org/", "").lower() or None - Network accessline 202
return doi.replace("https://doi.org/", "").replace("http://doi.org/", "").lower() or None - Network accessline 230
# Bare ID or URL: https://pubmed.ncbi.nlm.nih.gov/12345 - Network accessline 299
topics = [ { "id": _strip_oa_prefix(t.get("id"), "https://openalex.org/"), - Network accessline 300
{ "id": _strip_oa_prefix(t.get("id"), "https://openalex.org/"), "name": t.get("display_name"), - Network accessline 301
"id": _strip_oa_prefix(t.get("id"), "https://openalex.org/"), - Network accessline 801
Accepts: - "W3011865677" - "https://openalex.org/W3011865677" - Network accessline 802
- "W3011865677" - "https://openalex.org/W3011865677" - "10.2307/1914185" - Network accessline 803
- "https://openalex.org/W3011865677" - Network accessline 804
- "10.2307/1914185" - "https://doi.org/10.2307/1914185" """ - Network accessline 805
- "https://doi.org/10.2307/1914185" - Network accessline 809
if s.startswith("10."): s = f"https://doi.org/{s}" - Network accessline 810
s = f"https://doi.org/{s}" - Network accessline 942
s = openalex_id.strip() if s.startswith("10."): s = f"https://doi.org/{s}" - Network accessline 943
if s.startswith("10."): s = f"https://doi.org/{s}" raw_work = openalex_guard.call(lambda: Works()[s]) - Network accessline 944
s = f"https://doi.org/{s}" - Network accessline 1014
s = author_id_or_name.strip() is_id = s.startswith("A") and len(s) >= 10 and s[1:].isdigit() is_id = is_id or s.startswith("https://openalex.org/A") - Network accessline 1016
is_id = is_id or s.startswith("https://openalex.org/A")
scripts/openreview_helper.py
- Executable scriptline 1
Executable file - Network accessline 16
Endpoint discipline (anonymous, live-verified 2026-10-01): GET https://api2.openreview.net/notes/search - Network accessline 17
GET https://api2.openreview.net/notes/search - Network accessline 53
"NeurIPS 2025 Poster", "COLM 2026", "EMNLP 2023 Findings"; TMLR -> "TMLR". Never the bare word "OpenReview". id -> pdf_url = "https://openreview.net/pdf?id=<id>" (only when - Network accessline 54
TMLR -> "TMLR". Never the bare word "OpenReview". id -> pdf_url = "https://openreview.net/pdf?id=<id>" (only when the note has a pdf — a small venue's paper may not) - Network accessline 55
id -> pdf_url = "https://openreview.net/pdf?id=<id>" (only when - Network accessline 56
the note has a pdf — a small venue's paper may not) forum -> oa_locations = ["https://openreview.net/forum?id=<forum>"] (constant) -> type = "article", sources = ["openreview"] - Network accessline 57
forum -> oa_locations = ["https://openreview.net/forum?id=<forum>"] - Network accessline 77
_SEARCH_URL = "https://api2.openreview.net/notes/search" - Network accessline 275
pdf = _val(content, "pdf") pdf_url = ( f"https://openreview.net/pdf?id={note_id if isinstance(note_id, str) and note_id else forum}" - Network accessline 276
pdf_url = ( f"https://openreview.net/pdf?id={note_id if isinstance(note_id, str) and note_id else forum}" if pdf else None - Network accessline 277
f"https://openreview.net/pdf?id={note_id if isinstance(note_id, str) and note_id else forum}" - Network accessline 289
tldr=_clean_text(_val(content, "TLDR")), pdf_url=pdf_url, oa_locations=[f"https://openreview.net/forum?id={forum}"], - Network accessline 290
pdf_url=pdf_url, oa_locations=[f"https://openreview.net/forum?id={forum}"], sources=["openreview"], - Network accessline 291
oa_locations=[f"https://openreview.net/forum?id={forum}"],
scripts/prisma_s_logger.py
- Executable scriptline 1
Executable file
scripts/pubmed_helper.py
- Executable scriptline 1
Executable file - Access to secretsline 41
[Credential-related source omitted] - Access to secretsline 42
[Credential-related source omitted] - Network accessline 140
"doi": doi, "pmcid": pmcid, "pmc_url": f"https://www.ncbi.nlm.nih.gov/pmc/articles/{pmcid}/" if pmcid else None, - Network accessline 141
"pmcid": pmcid, "pmc_url": f"https://www.ncbi.nlm.nih.gov/pmc/articles/{pmcid}/" if pmcid else None, "title": title, - Network accessline 142
"pmc_url": f"https://www.ncbi.nlm.nih.gov/pmc/articles/{pmcid}/" if pmcid else None,
scripts/quota_guard.py
- Executable scriptline 1
Executable file - Network accessline 64
_PROBE_URL = "https://api.openalex.org/works?per_page=1" - Access to secretsline 163
[Credential-related source omitted] - Access to secretsline 166
[Credential-related source omitted] - Access to secretsline 168
[Credential-related source omitted] - Access to secretsline 169
[Credential-related source omitted]
scripts/rank_filter.py
- Executable scriptline 1
Executable file
scripts/rank_intent.py
- Executable scriptline 1
Executable file
scripts/rcs_parser.py
- Executable scriptline 1
Executable file
scripts/report_identity.py
- Executable scriptline 1
Executable file
scripts/search_export/__init__.py
- Executable scriptline 1
Executable file
scripts/search_export/deeplink.py
- Executable scriptline 1
Executable file - Network accessline 51
#: The date the A-tier URL *patterns* below were last live-confirmed (curl HTTP - Network accessline 91
_USER_AGENT = ( "paper-search-pro/2.4 " "(https://github.com/O0000-code/paper-search-pro; deep-link verify)" - Network accessline 92
"paper-search-pro/2.4 " "(https://github.com/O0000-code/paper-search-pro; deep-link verify)" ) - Network accessline 93
"(https://github.com/O0000-code/paper-search-pro; deep-link verify)" - Network accessline 96
_PUBMED_WEB = "https://pubmed.ncbi.nlm.nih.gov/?term={q}" - Network accessline 97
_PUBMED_ESEARCH = ( "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term={q}" ) - Network accessline 98
"https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term={q}" - Network accessline 99
) _ERIC_WEB = "https://eric.ed.gov/?q={q}" _CTGOV_API = "https://clinicaltrials.gov/api/v2/studies" - Network accessline 100
_ERIC_WEB = "https://eric.ed.gov/?q={q}" - Network accessline 101
_CTGOV_API = "https://clinicaltrials.gov/api/v2/studies" - Network accessline 102
_CTGOV_UI = "https://clinicaltrials.gov/expert-search?term={q}" - Network accessline 320
if sess is None: import requests # lazy: only when a real check is requested sess = requests.Session() - Network accessline 321
import requests # lazy: only when a real check is requested sess = requests.Session() sess.headers["User-Agent"] = _USER_AGENT - Network accessline 322
sess = requests.Session()
scripts/search_export/generate.py
- Executable scriptline 1
Executable file - Network accessline 103
}, "who_ictrp": { "role": "registry", "deep_link": "https://trialsearch.who.int", - Network accessline 104
"who_ictrp": { "role": "registry", "deep_link": "https://trialsearch.who.int", "kind": "browser_entry", - Network accessline 105
"role": "registry", "deep_link": "https://trialsearch.who.int", - Network accessline 1202
m = re.search(r"[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}", str(host or "")) return f"https://{m.group(0)}" if m else None - Network accessline 1203
return f"https://{m.group(0)}" if m else None
scripts/search_export/linter.py
- Executable scriptline 1
Executable file
scripts/search_export/proximity.py
- Executable scriptline 1
Executable file
scripts/search_export/vocab_verify.py
- Executable scriptline 1
Executable file - Network accessline 72
_USER_AGENT = ( "paper-search-pro/2.4 " "(https://github.com/anthropic/paper-search-pro; vocab verify)" - Network accessline 73
"paper-search-pro/2.4 " "(https://github.com/anthropic/paper-search-pro; vocab verify)" ) - Network accessline 74
"(https://github.com/anthropic/paper-search-pro; vocab verify)" - Network accessline 75
) _ERIC_API = "https://api.ies.ed.gov/eric/" _SINOMED_SUGGEST = "https://www.sinomed.ac.cn/suggest.do" - Network accessline 76
_ERIC_API = "https://api.ies.ed.gov/eric/" - Network accessline 77
_SINOMED_SUGGEST = "https://www.sinomed.ac.cn/suggest.do" - Access to secretsline 134
[Credential-related source omitted] - Access to secretsline 143
[Credential-related source omitted] - Access to secretsline 144
[Credential-related source omitted] - Access to secretsline 159
[Credential-related source omitted] - Access to secretsline 167
[Credential-related source omitted] - Access to secretsline 171
[Credential-related source omitted] - Access to secretsline 172
[Credential-related source omitted] - Network accessline 218
if sess is None: import requests # lazy sess = requests.Session() - Network accessline 219
import requests # lazy sess = requests.Session() sess.headers["User-Agent"] = _USER_AGENT - Network accessline 220
sess = requests.Session() - Network accessline 287
if sess is None: import requests # lazy sess = requests.Session() - Network accessline 288
import requests # lazy sess = requests.Session() sess.headers["User-Agent"] = _USER_AGENT - Network accessline 289
sess = requests.Session()
scripts/semantic_cache.py
- Executable scriptline 1
Executable file
scripts/sjr_helper.py
- Executable scriptline 1
Executable file - Network accessline 73
"Journal quartiles are from SCImago Journal Rank (SJR), derived from Scopus " "data. © SCImago. Free for non-commercial use with citation; see " "https://www.scimagojr.com/legal-notice.php. SJR is NOT the Clarivate JCR " - Network accessline 74
"data. © SCImago. Free for non-commercial use with citation; see " "https://www.scimagojr.com/legal-notice.php. SJR is NOT the Clarivate JCR " "Impact Factor." - Network accessline 75
"https://www.scimagojr.com/legal-notice.php. SJR is NOT the Clarivate JCR " - Network accessline 82
SJR_DOWNLOAD_URL = "https://www.scimagojr.com/journalrank.php?out=xls&year={year}" - Network accessline 83
SJR_PORTAL_URL = "https://www.scimagojr.com"
scripts/source_fallback.py
- Executable scriptline 1
Executable file - Network accessline 149
s = (identifier or "").strip() low = s.lower() for prefix in ("https://doi.org/", "http://doi.org/", "doi:"): - Network accessline 150
low = s.lower() for prefix in ("https://doi.org/", "http://doi.org/", "doi:"): if low.startswith(prefix): - Network accessline 151
for prefix in ("https://doi.org/", "http://doi.org/", "doi:"):
scripts/ss_helper.py
- Executable scriptline 1
Executable file - Access to secretsline 83
[Credential-related source omitted] - Access to secretsline 84
[Credential-related source omitted] - Access to secretsline 85
[Credential-related source omitted] - Access to secretsline 94
[Credential-related source omitted] - Network accessline 116
# Strip a possible "https://doi.org/" prefix defensively - Network accessline 117
for prefix in ("https://doi.org/", "http://doi.org/", "doi.org/"): - Network accessline 135
return None d = doi.strip().lower() for prefix in ("https://doi.org/", "http://doi.org/", "doi.org/", "doi:"): - Network accessline 136
d = doi.strip().lower() for prefix in ("https://doi.org/", "http://doi.org/", "doi.org/", "doi:"): if d.startswith(prefix): - Network accessline 137
for prefix in ("https://doi.org/", "http://doi.org/", "doi.org/", "doi:"): - Access to secretsline 316
[Credential-related source omitted] - Network accessline 439
_SS_GRAPH_URL = "https://api.semanticscholar.org/graph/v1" - Access to secretsline 501
[Credential-related source omitted] - Access to secretsline 504
[Credential-related source omitted] - Access to secretsline 508
[Credential-related source omitted] - Access to secretsline 527
[Credential-related source omitted] - Network accessline 543
f"(HTTP {res.status_code}); continuing without a key. Renew " f"semantic_scholar_api_key in ~/.paper-search-pro/config.yaml " f"(https://www.semanticscholar.org/product/api#api-key-form).", - Network accessline 544
[Credential-related source omitted] - Access to secretsline 544
[Credential-related source omitted] - Network accessline 545
f"(https://www.semanticscholar.org/product/api#api-key-form).", - Access to secretsline 622
[Credential-related source omitted] - Access to secretsline 630
[Credential-related source omitted] - Access to secretsline 643
[Credential-related source omitted] - Network accessline 790
is_oa=bool(pdf_url) if pdf_url else None, pdf_url=pdf_url, doi_url=(f"https://doi.org/{_ss_doi_from_external_ids(ext)}" - Network accessline 791
pdf_url=pdf_url, doi_url=(f"https://doi.org/{_ss_doi_from_external_ids(ext)}" if _ss_doi_from_external_ids(ext) else None), - Network accessline 792
doi_url=(f"https://doi.org/{_ss_doi_from_external_ids(ext)}" - Access to secretsline 802
[Credential-related source omitted] - Access to secretsline 837
[Credential-related source omitted] - Access to secretsline 883
[Credential-related source omitted] - Access to secretsline 893
[Credential-related source omitted] - Access to secretsline 933
[Credential-related source omitted] - Access to secretsline 954
[Credential-related source omitted] - Access to secretsline 964
[Credential-related source omitted]
scripts/types.py
- Executable scriptline 1
Executable file - Network accessline 54
(or the chosen category's quartile). Data © SCImago (scimagojr.com), non-commercial cited use — SCImago custom terms, NOT a Creative Commons / CC BY-NC licence; attribution required. - Network accessline 55
non-commercial cited use — SCImago custom terms, NOT a Creative Commons / CC BY-NC licence; attribution required. - sjr_category_quartiles : {category: "Qn"} — per-category SJR quartiles. - Network accessline 56
CC BY-NC licence; attribution required. - Access to secretsline 321
[Credential-related source omitted] - Access to secretsline 322
[Credential-related source omitted] - Access to secretsline 324
[Credential-related source omitted]
scripts/vendored/LICENSE-paperqa.txt
scripts/vendored/README-vendored.md
- Network accessline 3
This directory contains code and design patterns adapted from the [paper-qa](https://github.com/Future-House/paper-qa) project by FutureHouse - Network accessline 4
[paper-qa](https://github.com/Future-House/paper-qa) project by FutureHouse - Network accessline 10
- **Project**: paper-qa (also known as PaperQA / PaperQA2) - **Repository**: https://github.com/Future-House/paper-qa - Network accessline 11
- **Repository**: https://github.com/Future-House/paper-qa
scripts/vendored/__init__.py
- Executable scriptline 1
Executable file
scripts/vendored/tenacity_retry.py
- Executable scriptline 1
Executable file - Network accessline 185
@retryable_api_call(provider="openalex") def fetch_work(work_id: str) -> dict: return httpx.get(f"https://api.openalex.org/works/{work_id}").raise_for_status().json() - Network accessline 187
return httpx.get(f"https://api.openalex.org/works/{work_id}").raise_for_status().json()
scripts/yiigle_helper.py
- Executable scriptline 1
Executable file - Network accessline 17
Endpoint discipline (verified live 2026-07-12, no login / no signature): POST https://www.yiigle.com/apiVue/search/searchList - Network accessline 18
POST https://www.yiigle.com/apiVue/search/searchList - Network accessline 78
_SEARCH_URL = "https://www.yiigle.com/apiVue/search/searchList" - Network accessline 111
return None d = str(doi).strip() for prefix in ("https://doi.org/", "http://doi.org/", "doi.org/", "doi:"): - Network accessline 112
d = str(doi).strip() for prefix in ("https://doi.org/", "http://doi.org/", "doi.org/", "doi:"): if d.lower().startswith(prefix): - Network accessline 113
for prefix in ("https://doi.org/", "http://doi.org/", "doi.org/", "doi:"): - Network accessline 193
type="article", keywords=_extract_keywords(record), doi_url=(f"https://doi.org/{doi}" if doi else None), - Network accessline 194
keywords=_extract_keywords(record), doi_url=(f"https://doi.org/{doi}" if doi else None), sources=["yiigle"], - Network accessline 195
doi_url=(f"https://doi.org/{doi}" if doi else None),
tests/__init__.py
- Executable scriptline 1
Executable file
tests/fixtures/openreview_challenge_403.json
- Network accessline 1
{ "_fixture_note": "Real HTTP 403 body from anonymous GET https://api2.openreview.net/notes?content.venueid=ICLR.cc/2026/Conference&limit=5 (2026-10-01).", - Network accessline 2
"_fixture_note": "Real HTTP 403 body from anonymous GET https://api2.openreview.net/notes?content.venueid=ICLR.cc/2026/Conference&limit=5 (2026-10-01).", - Network accessline 7
"status": 403, "details": { "challengeUrl": "https://openreview.net/challenge?redirect=https%3A%2F%2Fapi2.openreview.net%2Fnotes%3Fcontent.venueid%3DICLR.cc%252F2026%252FConference%26limit%3D5", - Network accessline 8
"details": { "challengeUrl": "https://openreview.net/challenge?redirect=https%3A%2F%2Fapi2.openreview.net%2Fnotes%3Fcontent.venueid%3DICLR.cc%252F2026%252FConference%26limit%3D5", "reqId": "2026-09-30-10246308" - Network accessline 9
"challengeUrl": "https://openreview.net/challenge?redirect=https%3A%2F%2Fapi2.openreview.net%2Fnotes%3Fcontent.venueid%3DICLR.cc%252F2026%252FConference%26limit%3D5",
tests/fixtures/openreview_search_page1.json
- Network accessline 1
{ "_fixture_note": "Real notes from anonymous GET https://api2.openreview.net/notes/search (2026-10-01), re-grouped into one page and trimmed: only the fields openreview_helper reads are kept, abstracts cut to 300 characters. Values are ot - Network accessline 2
"_fixture_note": "Real notes from anonymous GET https://api2.openreview.net/notes/search (2026-10-01), re-grouped into one page and trimmed: only the fields openreview_helper reads are kept, abstracts cut to 300 characters. Values are other - Network accessline 543
}, "pdf": { "value": "https://proceedings.neurips.cc/paper_files/paper/2024/file/00d80722b756de0166523a87805dd00f-Paper-Conference.pdf" - Network accessline 544
"pdf": { "value": "https://proceedings.neurips.cc/paper_files/paper/2024/file/00d80722b756de0166523a87805dd00f-Paper-Conference.pdf" } - Network accessline 545
"value": "https://proceedings.neurips.cc/paper_files/paper/2024/file/00d80722b756de0166523a87805dd00f-Paper-Conference.pdf" - Network accessline 641
}, "pdf": { "value": "https://arxiv.org/pdf/2510.04365v1" - Network accessline 642
"pdf": { "value": "https://arxiv.org/pdf/2510.04365v1" } - Network accessline 643
"value": "https://arxiv.org/pdf/2510.04365v1" - Network accessline 673
}, "pdf": { "value": "http://arxiv.org/pdf/2505.18456v1" - Network accessline 674
"pdf": { "value": "http://arxiv.org/pdf/2505.18456v1" } - Network accessline 675
"value": "http://arxiv.org/pdf/2505.18456v1"
tests/fixtures/openreview_search_page2.json
- Network accessline 1
{ "_fixture_note": "Real notes from anonymous GET https://api2.openreview.net/notes/search (2026-10-01), re-grouped into one page and trimmed: only the fields openreview_helper reads are kept, abstracts cut to 300 characters. Values are ot - Network accessline 2
"_fixture_note": "Real notes from anonymous GET https://api2.openreview.net/notes/search (2026-10-01), re-grouped into one page and trimmed: only the fields openreview_helper reads are kept, abstracts cut to 300 characters. Values are other
tests/test_agent_rank.py
tests/test_agent_search.py
tests/test_arxiv_helper.py
- Executable scriptline 1
Executable file - Network accessline 76
assert extract_arxiv_id("http://arxiv.org/abs/1706.03762v5") == "1706.03762" - Network accessline 77
assert extract_arxiv_id("https://arxiv.org/abs/2605.21489") == "2605.21489" - Network accessline 78
assert extract_arxiv_id("https://arxiv.org/pdf/1706.03762v7") == "1706.03762"
tests/test_arxiv_recent.py
tests/test_coverage_report.py
tests/test_crossref_helper.py
- Executable scriptline 1
Executable file - Network accessline 66
"license": [ { "URL": "http://www.nejmgroup.org/legal/terms-of-use.htm", - Network accessline 67
{ "URL": "http://www.nejmgroup.org/legal/terms-of-use.htm", "content-version": "vor", - Network accessline 68
"URL": "http://www.nejmgroup.org/legal/terms-of-use.htm", - Network accessline 92
"funder": [{"name": "NIH", "DOI": "10.13039/100000002", "award": ["R01-12345"]}], "license": [ {"URL": "https://creativecommons.org/licenses/by/4.0/", - Network accessline 93
"license": [ {"URL": "https://creativecommons.org/licenses/by/4.0/", "content-version": "vor", "delay-in-days": 365} - Network accessline 94
{"URL": "https://creativecommons.org/licenses/by/4.0/", - Network accessline 232
self.assertEqual(lic["URL"], "http://www.nejmgroup.org/legal/terms-of-use.htm")
tests/test_data_materialization_rank.py
- Executable scriptline 1
Executable file
tests/test_detect_language.py
tests/test_discovery_curve.py
tests/test_enrich_kg.py
- Executable scriptline 1
Executable file - Network accessline 46
"tldr": {"model": "tldr@v2.0.0", "text": "TLDR A1"}, "citationCount": 44, "influentialCitationCount": 7, "openAccessPdf": {"url": "https://x/a1.pdf"}, "venue": "Journal A", - Network accessline 47
"citationCount": 44, "influentialCitationCount": 7, "openAccessPdf": {"url": "https://x/a1.pdf"}, "venue": "Journal A", "publicationVenue": {"id": "v1", "name": "Journal A", "issn": "1111-1111", - Network accessline 48
"openAccessPdf": {"url": "https://x/a1.pdf"}, "venue": "Journal A", - Network accessline 74
"abstract": None, "sources": ["openalex"], "rcs": 8, "authors": [{"name": "Alice"}], "venue": "J A", "issn": "1111-1111"}, {"doi": "https://doi.org/10.1000/b2", "title": "Has abstract — 中文标题", - Network accessline 75
"venue": "J A", "issn": "1111-1111"}, {"doi": "https://doi.org/10.1000/b2", "title": "Has abstract — 中文标题", "citation_count": 10, "abstract": "OA abstract", "sources": ["openalex"], "rcs": 6}, - Network accessline 76
{"doi": "https://doi.org/10.1000/b2", "title": "Has abstract — 中文标题", - Network accessline 91
"DOI": "10.1056/nejmoa2034577", "funder": [{"name": "BioNTech and Pfizer", "DOI": "10.13039/100004319", "award": []}], "license": [{"URL": "http://www.nejmgroup.org/legal/terms-of-use.htm", - Network accessline 92
"funder": [{"name": "BioNTech and Pfizer", "DOI": "10.13039/100004319", "award": []}], "license": [{"URL": "http://www.nejmgroup.org/legal/terms-of-use.htm", "content-version": "vor", "delay-in-days": 0}], - Network accessline 93
"license": [{"URL": "http://www.nejmgroup.org/legal/terms-of-use.htm", - Network accessline 99
"DOI": "10.1234/trial", "funder": [{"name": "NIH", "DOI": "10.13039/100000002", "award": ["R01-12345"]}], "license": [{"URL": "https://creativecommons.org/licenses/by/4.0/", - Network accessline 100
"funder": [{"name": "NIH", "DOI": "10.13039/100000002", "award": ["R01-12345"]}], "license": [{"URL": "https://creativecommons.org/licenses/by/4.0/", "content-version": "vor", "delay-in-days": 365}], - Network accessline 101
"license": [{"URL": "https://creativecommons.org/licenses/by/4.0/", - Access to secretsline 192
[Credential-related source omitted] - Network accessline 216
def fetch(doi): - Access to secretsline 352
[Credential-related source omitted]
tests/test_federated_kg_resolver.py
tests/test_html_renderer_webartifacts.py
- Executable scriptline 1
Executable file
tests/test_journal_rank.py
- Executable scriptline 1
Executable file - Network accessline 265
"""Fetch (fake session) into cache then load — the realistic round-trip.""" - Network accessline 266
sess = _full_session() jr.fetch(cache_dir=cache_dir, session=sess) - Network accessline 267
jr.fetch(cache_dir=cache_dir, session=sess) - Network accessline 335
with tempfile.TemporaryDirectory() as td: sess1 = _full_session() jr.fetch(cache_dir=Path(td), session=sess1) - Network accessline 336
sess1 = _full_session() jr.fetch(cache_dir=Path(td), session=sess1) assert len(sess1.calls) == 3 # first time: all three fetched - Network accessline 337
jr.fetch(cache_dir=Path(td), session=sess1) - Network accessline 340
sess2 = _full_session() res = jr.fetch(cache_dir=Path(td), session=sess2) - Network accessline 341
res = jr.fetch(cache_dir=Path(td), session=sess2) - Network accessline 347
def test_fetch_force_refetches(): with tempfile.TemporaryDirectory() as td: jr.fetch(cache_dir=Path(td), session=_full_session()) - Network accessline 348
with tempfile.TemporaryDirectory() as td: jr.fetch(cache_dir=Path(td), session=_full_session()) sess = _full_session() - Network accessline 349
jr.fetch(cache_dir=Path(td), session=_full_session()) - Network accessline 350
sess = _full_session() jr.fetch(cache_dir=Path(td), session=sess, force=True) assert len(sess.calls) == 3 # force overrides init-once - Network accessline 351
jr.fetch(cache_dir=Path(td), session=sess, force=True) - Network accessline 357
with tempfile.TemporaryDirectory() as td: td = Path(td) jr.fetch(cache_dir=td, session=_full_session()) - Network accessline 359
jr.fetch(cache_dir=td, session=_full_session()) - Network accessline 364
os.utime(p, (old, old)) sess = _full_session() jr.fetch(cache_dir=td, session=sess, stale_days=365) - Network accessline 365
sess = _full_session() jr.fetch(cache_dir=td, session=sess, stale_days=365) assert len(sess.calls) == 3 # stale -> re-fetched - Network accessline 366
jr.fetch(cache_dir=td, session=sess, stale_days=365) - Network accessline 372
with tempfile.TemporaryDirectory() as td: sess = _full_session() res = jr.fetch(platform="sjr", cache_dir=Path(td), session=sess) - Network accessline 373
sess = _full_session() res = jr.fetch(platform="sjr", cache_dir=Path(td), session=sess) assert list(res.keys()) == ["sjr"] - Network accessline 374
res = jr.fetch(platform="sjr", cache_dir=Path(td), session=sess) - Network accessline 392
"FQBJCR": _FakeResp(404, b""), }) res = jr.fetch(cache_dir=Path(td), session=sess) - Network accessline 393
}) res = jr.fetch(cache_dir=Path(td), session=sess) assert res["cas"] is None # degraded, no crash - Network accessline 394
res = jr.fetch(cache_dir=Path(td), session=sess) - Network accessline 410
"scimagojr": _FakeResp(200, _SJR_CSV.encode("utf-8")), }, raise_on={"FQBJCR"}) res = jr.fetch(cache_dir=Path(td), session=sess) - Network accessline 411
}, raise_on={"FQBJCR"}) res = jr.fetch(cache_dir=Path(td), session=sess) assert res["cas"] is None # RequestException swallowed - Network accessline 412
res = jr.fetch(cache_dir=Path(td), session=sess)
tests/test_modules_smoke.py
tests/test_nssd_helper.py
- Executable scriptline 1
Executable file - Network accessline 270
e = nssd_helper._row_to_entity(ROW_WITH_DOI) assert e.doi == "10.12677/ap.2021.114099" # lowercased assert e.doi_url == "https://doi.org/10.12677/ap.2021.114099" - Network accessline 271
assert e.doi == "10.12677/ap.2021.114099" # lowercased assert e.doi_url == "https://doi.org/10.12677/ap.2021.114099" assert e.paper_id == "10.12677/ap.2021.114099" # DOI outranks native id - Network accessline 272
assert e.doi_url == "https://doi.org/10.12677/ap.2021.114099" - Network accessline 492
"issn": "1234-5678", "years": "2022", "doi": "https://doi.org/10.1234/ABC.2022", - Network accessline 493
"years": "2022", "doi": "https://doi.org/10.1234/ABC.2022", "type": "中文期刊文章", - Network accessline 494
"doi": "https://doi.org/10.1234/ABC.2022", - Network accessline 500
f = nssd_helper._normalize_doi assert f("10.1234/ABC") == "10.1234/abc" assert f("https://doi.org/10.1/x") == "10.1/x" - Network accessline 501
assert f("10.1234/ABC") == "10.1234/abc" assert f("https://doi.org/10.1/x") == "10.1/x" assert f("http://doi.org/10.1/x") == "10.1/x" - Network accessline 502
assert f("https://doi.org/10.1/x") == "10.1/x" - Network accessline 503
assert f("http://doi.org/10.1/x") == "10.1/x" - Network accessline 511
e = nssd_helper._row_to_entity(ROW_DOI_URL) assert e.doi == "10.1234/abc.2022" # URL prefix stripped + lowercased assert e.doi_url == "https://doi.org/10.1234/abc.2022" - Network accessline 512
assert e.doi == "10.1234/abc.2022" # URL prefix stripped + lowercased assert e.doi_url == "https://doi.org/10.1234/abc.2022" assert e.paper_id == "10.1234/abc.2022" # DOI outranks native id - Network accessline 513
assert e.doi_url == "https://doi.org/10.1234/abc.2022" - Network accessline 616
# The live-verified two-concept target (A3 D-row, total≈519). This is the exact # string the reproducible curl in A3_nssd_verification.md §附 posts. - Network accessline 617
# string the reproducible curl in A3_nssd_verification.md §附 posts.
tests/test_openalex_fallback.py
- Executable scriptline 1
Executable file - Network accessline 53
res.headers.update(headers or {}) res._content = body res.url = "https://api.openalex.org/works?search=x" - Network accessline 54
res._content = body res.url = "https://api.openalex.org/works?search=x" res.reason = "Too Many Requests" if status == 429 else "Error" - Network accessline 55
res.url = "https://api.openalex.org/works?search=x" res.reason = "Too Many Requests" if status == 429 else "Error" return res - Network accessline 60
def _http_error(status, headers=None): return requests.HTTPError(response=_response(status, headers)) - Network accessline 61
return requests.HTTPError(response=_response(status, headers)) - Network accessline 133
def test_connection_error_becomes_unavailable(): fn, _ = _raiser(requests.ConnectionError("down"), requests.ConnectionError("down")) - Network accessline 134
fn, _ = _raiser(requests.ConnectionError("down"), requests.ConnectionError("down")) - Network accessline 181
def get(self, per_page, page): if page == 1: return [{"id": "https://openalex.org/W1", "doi": "https://doi.org/10.1/a", - Network accessline 182
if page == 1: return [{"id": "https://openalex.org/W1", "doi": "https://doi.org/10.1/a", "title": "Kept", "display_name": "Kept", "publication_year": 2020}] - Network accessline 183
return [{"id": "https://openalex.org/W1", "doi": "https://doi.org/10.1/a", - Network accessline 306
monkeypatch.setattr(oah, "get_work", _exhausted) monkeypatch.setattr(ss_helper, "get_paper", lambda doi: _paper(doi)) out, err, code = _run_cli(monkeypatch, ["get", "https://doi.org/10.5/x"]) - Network accessline 307
monkeypatch.setattr(ss_helper, "get_paper", lambda doi: _paper(doi)) out, err, code = _run_cli(monkeypatch, ["get", "https://doi.org/10.5/x"]) assert code == 0 and json.loads(out)["doi"] == "10.5/x" - Network accessline 308
out, err, code = _run_cli(monkeypatch, ["get", "https://doi.org/10.5/x"]) - Access to secretsline 385
[Credential-related source omitted] - Access to secretsline 389
[Credential-related source omitted] - Access to secretsline 396
[Credential-related source omitted] - Network accessline 533
def fetch(query, total_papers, sort, year_min=None, year_max=None, date_from=None, date_to=None, title_abstract_only=False):
tests/test_openalex_helper.py
- Executable scriptline 1
Executable file - Network accessline 114
assert _strip_oa_prefix("https://openalex.org/W3011865677") == "W3011865677" - Network accessline 115
assert _strip_oa_prefix("W3011865677") == "W3011865677" assert _strip_oa_prefix(None) is None assert _strip_doi_prefix("https://doi.org/10.2307/1914185") == "10.2307/1914185" - Network accessline 116
assert _strip_oa_prefix(None) is None assert _strip_doi_prefix("https://doi.org/10.2307/1914185") == "10.2307/1914185" assert _strip_doi_prefix("10.2307/1914185") == "10.2307/1914185" - Network accessline 117
assert _strip_doi_prefix("https://doi.org/10.2307/1914185") == "10.2307/1914185" - Network accessline 153
work = { "id": "https://openalex.org/W1", - Network accessline 154
"id": "https://openalex.org/W1", - Network accessline 156
"open_access": { "is_oa": True, "oa_url": "https://www.nature.com/articles/s41586-021-03819-2.pdf", - Network accessline 157
"is_oa": True, "oa_url": "https://www.nature.com/articles/s41586-021-03819-2.pdf", }, - Network accessline 158
"oa_url": "https://www.nature.com/articles/s41586-021-03819-2.pdf", - Network accessline 161
{ "is_oa": True, "pdf_url": "https://www.nature.com/articles/s41586-021-03819-2.pdf", - Network accessline 162
"is_oa": True, "pdf_url": "https://www.nature.com/articles/s41586-021-03819-2.pdf", "landing_page_url": "https://nature.com/x", - Network accessline 163
"pdf_url": "https://www.nature.com/articles/s41586-021-03819-2.pdf", - Network accessline 164
"landing_page_url": "https://nature.com/x", - Network accessline 165
}, {"is_oa": True, "landing_page_url": "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8371605/"}, {"is_oa": True, "pdf_url": "https://repo.example.edu/alphafold.pdf"}, - Network accessline 166
{"is_oa": True, "landing_page_url": "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8371605/"}, - Network accessline 167
{"is_oa": True, "pdf_url": "https://repo.example.edu/alphafold.pdf"}, - Network accessline 168
{"is_oa": False, "landing_page_url": "https://paywalled.example.com"}, - Network accessline 170
{"is_oa": True, "pdf_url": "https://www.nature.com/articles/s41586-021-03819-2.pdf"}, - Network accessline 173
e = _to_entity(work) assert len(e.oa_locations) == 3, f"expected 3 OA copies, got {e.oa_locations}" assert e.oa_locations[0] == "https://www.nature.com/articles/s41586-021-03819-2.pdf" - Network accessline 174
assert len(e.oa_locations) == 3, f"expected 3 OA copies, got {e.oa_locations}" assert e.oa_locations[0] == "https://www.nature.com/articles/s41586-021-03819-2.pdf" assert "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8371605/" in e. - Network accessline 175
assert e.oa_locations[0] == "https://www.nature.com/articles/s41586-021-03819-2.pdf" - Network accessline 176
assert "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8371605/" in e.oa_locations - Network accessline 178
assert e.pdf_url == "https://www.nature.com/articles/s41586-021-03819-2.pdf" - Network accessline 185
work = { "id": "https://openalex.org/W2", - Network accessline 186
"id": "https://openalex.org/W2", - Network accessline 187
"title": "Closed", "locations": [{"is_oa": False, "landing_page_url": "https://paywall.example"}], } - Network accessline 188
"locations": [{"is_oa": False, "landing_page_url": "https://paywall.example"}], - Access to secretsline 231
[Credential-related source omitted] - Network accessline 497
p1 = get_work("10.2307/1914185") p2 = get_work("https://doi.org/10.2307/1914185") - Network accessline 498
p2 = get_work("https://doi.org/10.2307/1914185")
tests/test_openreview_helper.py
- Executable scriptline 1
Executable file - Network accessline 301
assert [a.name for a in e.authors][:3] == ["Pengxiang Li", "Yefan Zhou", "Dilxat Muhtar"] assert e.keywords == ["diffusion language model", "discrete"] assert e.pdf_url == "https://openreview.net/pdf?id=g88nt4ieTG" - Network accessline 302
assert e.keywords == ["diffusion language model", "discrete"] assert e.pdf_url == "https://openreview.net/pdf?id=g88nt4ieTG" assert e.oa_locations == ["https://openreview.net/forum?id=g88nt4ieTG"] - Network accessline 303
assert e.pdf_url == "https://openreview.net/pdf?id=g88nt4ieTG" - Network accessline 304
assert e.oa_locations == ["https://openreview.net/forum?id=g88nt4ieTG"] - Network accessline 318
assert "pdf" not in note["content"] assert e.pdf_url is None assert e.oa_locations == [f"https://openreview.net/forum?id={note['forum']}"] - Network accessline 320
assert e.oa_locations == [f"https://openreview.net/forum?id={note['forum']}"] - Network accessline 326
e = orh._note_to_entity(n) assert e.source_native_id == "openreview:forumY" assert e.pdf_url == "https://openreview.net/pdf?id=noteX" - Network accessline 327
assert e.source_native_id == "openreview:forumY" assert e.pdf_url == "https://openreview.net/pdf?id=noteX" assert e.oa_locations == ["https://openreview.net/forum?id=forumY"] - Network accessline 328
assert e.pdf_url == "https://openreview.net/pdf?id=noteX" - Network accessline 329
assert e.oa_locations == ["https://openreview.net/forum?id=forumY"] - Network accessline 412
assert [c["params"]["offset"] for c in sess.calls] == [0, 25] for c in sess.calls: assert c["url"] == "https://api2.openreview.net/notes/search" - Network accessline 413
for c in sess.calls: assert c["url"] == "https://api2.openreview.net/notes/search" p = c["params"] - Network accessline 414
assert c["url"] == "https://api2.openreview.net/notes/search"
tests/test_openreview_merge.py
- Executable scriptline 1
Executable file
tests/test_pool_count.py
- Executable scriptline 1
Executable file
tests/test_prisma_s_logger.py
- Executable scriptline 1
Executable file
tests/test_pubmed_helper.py
- Executable scriptline 1
Executable file - Access to secretsline 39
[Credential-related source omitted] - Access to secretsline 42
[Credential-related source omitted] - Access to secretsline 46
[Credential-related source omitted] - Network accessline 171
assert paper.pmcid == "PMC7745181", f"Expected PMC7745181, got {paper.pmcid}" assert paper.pmc_url == "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7745181/", ( - Network accessline 172
assert paper.pmc_url == "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7745181/", (
tests/test_query_warning.py
- Executable scriptline 1
Executable file
tests/test_quota_guard.py
tests/test_rank_filter.py
- Executable scriptline 1
Executable file
tests/test_rank_intent.py
- Executable scriptline 1
Executable file
tests/test_rcs_parser.py
- Executable scriptline 1
Executable file
tests/test_recency_legs.py
- Executable scriptline 1
Executable file
tests/test_report_identity.py
- Executable scriptline 1
Executable file
tests/test_search_export_deeplink.py
- Executable scriptline 1
Executable file - Network accessline 90
r = dl.build_deep_link("PubMed", '"Mindfulness"[Mesh] AND anxiety[tiab]') assert r["tier"] == "A" and r["url_kind"] == "prefill" assert r["url"].startswith("https://pubmed.ncbi.nlm.nih.gov/?term=") - Network accessline 91
assert r["tier"] == "A" and r["url_kind"] == "prefill" assert r["url"].startswith("https://pubmed.ncbi.nlm.nih.gov/?term=") assert "%5B" in r["url"], "MeSH brackets must be encoded in the web URL" - Network accessline 92
assert r["url"].startswith("https://pubmed.ncbi.nlm.nih.gov/?term=") - Network accessline 107
r = dl.build_deep_link("eric", "mindfulness AND anxiety") assert r["tier"] == "A" and r["url_kind"] == "prefill" assert r["url"].startswith("https://eric.ed.gov/?q=") - Network accessline 108
assert r["tier"] == "A" and r["url_kind"] == "prefill" assert r["url"].startswith("https://eric.ed.gov/?q=") assert r["api_url"] is None - Network accessline 109
assert r["url"].startswith("https://eric.ed.gov/?q=") - Network accessline 130
assert r["machine_verifiable_endpoint"] == "api_url" assert r["ui_render"] == "client-SPA" assert r["url"].startswith("https://clinicaltrials.gov/expert-search?term=") - Network accessline 131
assert r["ui_render"] == "client-SPA" assert r["url"].startswith("https://clinicaltrials.gov/expert-search?term=") print(f"OK CT.gov A-tier: api_url machine-verifiable, human ui separate") - Network accessline 132
assert r["url"].startswith("https://clinicaltrials.gov/expert-search?term=") - Network accessline 148
def test_build_b_tier_browser_only_no_filled_url(): r = dl.build_deep_link( "ieee", "test", url_template="https://ieeexplore.ieee.org/search/...{q}", - Network accessline 149
r = dl.build_deep_link( "ieee", "test", url_template="https://ieeexplore.ieee.org/search/...{q}", ) - Network accessline 150
"ieee", "test", url_template="https://ieeexplore.ieee.org/search/...{q}", - Network accessline 152
assert r["tier"] == "B" and r["url_kind"] == "browser" assert r["url"] is None, "B tier must NOT return a constructed filled URL" assert r["url_template"] == "https://ieeexplore.ieee.org/search/...{q}" - Network accessline 153
assert r["url"] is None, "B tier must NOT return a constructed filled URL" assert r["url_template"] == "https://ieeexplore.ieee.org/search/...{q}" print("OK B tier (IEEE): url None, card template surfaced verbatim") - Network accessline 154
assert r["url_template"] == "https://ieeexplore.ieee.org/search/...{q}"
tests/test_search_export_generate.py
- Executable scriptline 1
Executable file - Network accessline 129
wos = lt.load_card("wos")["deep_link"]["url_template"] scopus = lt.load_card("scopus")["deep_link"]["url_template"] assert wos == "https://www.webofscience.com/wos/woscc/advanced-search" - Network accessline 130
scopus = lt.load_card("scopus")["deep_link"]["url_template"] assert wos == "https://www.webofscience.com/wos/woscc/advanced-search" assert scopus == "https://www.scopus.com/search/form.uri?display=advanced" - Network accessline 131
assert wos == "https://www.webofscience.com/wos/woscc/advanced-search" - Network accessline 132
assert scopus == "https://www.scopus.com/search/form.uri?display=advanced" - Network accessline 389
assert re.search( r"\[打开并直接执行检索\]\(https://pubmed\.ncbi\.nlm\.nih\.gov/\?term=", md) - Network accessline 390
r"\[打开并直接执行检索\]\(https://pubmed\.ncbi\.nlm\.nih\.gov/\?term=", md) - Network accessline 392
assert "[打开 Advanced Search](https://www.webofscience.com/wos/woscc/advanced-search)" in md - Network accessline 393
assert "[打开专业检索](https://s.wanfangdata.com.cn/paper)" in md - Network accessline 394
assert "[打开专业检索](https://kns.cnki.net)" in md - Network accessline 665
assert p["deep_link"]["tier"] == "A" assert p["deep_link"]["url"] and p["deep_link"]["url"].startswith( "https://pubmed.ncbi.nlm.nih.gov/?term=" - Network accessline 666
assert p["deep_link"]["url"] and p["deep_link"]["url"].startswith( "https://pubmed.ncbi.nlm.nih.gov/?term=" ) - Network accessline 667
"https://pubmed.ncbi.nlm.nih.gov/?term=" - Access to secretsline 1266
[Credential-related source omitted]
tests/test_search_export_linter.py
- Executable scriptline 1
Executable file
tests/test_search_export_proximity.py
- Executable scriptline 1
Executable file
tests/test_search_export_vocab_verify.py
- Executable scriptline 1
Executable file
tests/test_sjr_helper.py
tests/test_ss_helper.py
- Executable scriptline 1
Executable file - Access to secretsline 10
[Credential-related source omitted] - Network accessline 107
assert ss_helper._doi_for_ss("") is None assert ss_helper._doi_for_ss("10.1234/Foo") == "DOI:10.1234/foo" assert ss_helper._doi_for_ss("https://doi.org/10.1234/Bar") == "DOI:10.1234/bar" - Network accessline 109
assert ss_helper._doi_for_ss("https://doi.org/10.1234/Bar") == "DOI:10.1234/bar" - Network accessline 320
doi="10.1234/Foo", paper_id="HEX", title="Mapped Paper", year=2019, cites=123, icit=7, issn="1234-5678", venue_name="Journal of Things", abstract="An abstract.", pdf="https://x/y.pdf", - Network accessline 321
cites=123, icit=7, issn="1234-5678", venue_name="Journal of Things", abstract="An abstract.", pdf="https://x/y.pdf", ) - Network accessline 322
abstract="An abstract.", pdf="https://x/y.pdf", - Network accessline 332
assert e.venue == "Journal of Things" assert e.abstract == "An abstract." assert e.is_oa is True and e.pdf_url == "https://x/y.pdf" - Network accessline 333
assert e.abstract == "An abstract." assert e.is_oa is True and e.pdf_url == "https://x/y.pdf" assert e.doi_url == "https://doi.org/10.1234/foo" - Network accessline 334
assert e.is_oa is True and e.pdf_url == "https://x/y.pdf" - Network accessline 335
assert e.doi_url == "https://doi.org/10.1234/foo" - Access to secretsline 531
[Credential-related source omitted]
tests/test_stable_ids.py
tests/test_year_and_query_edges.py
- Executable scriptline 1
Executable file
tests/test_year_bounds.py
- Executable scriptline 1
Executable file
tests/test_yiigle_helper.py
- Executable scriptline 1
Executable file - Network accessline 58
"artificialKeywords": list(keywords) if keywords is not None else None, "keywords": None, "artUrl": f"https://rs.yiigle.com/cmaid/{art_id}", - Network accessline 59
"keywords": None, "artUrl": f"https://rs.yiigle.com/cmaid/{art_id}", } - Network accessline 60
"artUrl": f"https://rs.yiigle.com/cmaid/{art_id}", - Network accessline 106
assert e.abstract.startswith("近年来") assert e.doi == "10.3760/cma.j.cn114452-20240626-00330" # lowercased, no prefix assert e.doi_url == "https://doi.org/10.3760/cma.j.cn114452-20240626-00330" - Network accessline 107
assert e.doi == "10.3760/cma.j.cn114452-20240626-00330" # lowercased, no prefix assert e.doi_url == "https://doi.org/10.3760/cma.j.cn114452-20240626-00330" assert [a.name for a in e.authors] == ["施意", "史浩男", "叶翰嘉"] - Network accessline 108
assert e.doi_url == "https://doi.org/10.3760/cma.j.cn114452-20240626-00330"
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Declared and executed: 8 facts
- Contacts doi.org, which SKILL.md, the README and the plugin manifest do not mentionassets/webartifacts_app/paper-report/src/lib/mock-data.ts:57High confidence
- Contacts www.webofscience.com, which SKILL.md, the README and the plugin manifest do not mentionassets/webartifacts_app/paper-report/src/lib/mock-data.ts:797High confidence
- Contacts www.scopus.com, which SKILL.md, the README and the plugin manifest do not mentionassets/webartifacts_app/paper-report/src/lib/mock-data.ts:822High confidence
- Contacts www.embase.com, which SKILL.md, the README and the plugin manifest do not mentionassets/webartifacts_app/paper-report/src/lib/mock-data.ts:843High confidence
- Contacts www.cochranelibrary.com, which SKILL.md, the README and the plugin manifest do not mentionassets/webartifacts_app/paper-report/src/lib/mock-data.ts:895High confidence
- Contacts search.ebscohost.com, which SKILL.md, the README and the plugin manifest do not mentionassets/webartifacts_app/paper-report/src/lib/mock-data.ts:956High confidence
- Contacts s.wanfangdata.com.cn, which SKILL.md, the README and the plugin manifest do not mentionassets/webartifacts_app/paper-report/src/lib/mock-data.ts:1077High confidence
- Contacts doi.org, which SKILL.md, the README and the plugin manifest do not mentionassets/webartifacts_app/paper-report/src/lib/normalize.ts:215High confidence
Signal confidence: 492 facts
- Network access in prose of documentationLICENSE.txt:2Low confidence
- Network access in prose of documentationLICENSE.txt:4Low confidence
- Network access in prose of documentationLICENSE.txt:196Low confidence
- Network access in prose of documentationNOTICE.md:11Low confidence
- Network access in prose of documentationNOTICE.md:35Low confidence
- Network access in prose of documentationNOTICE.md:36Low confidence
- Network access in prose of documentationNOTICE.md:37Low confidence
- Network access in prose of documentationREADME.md:21Low confidence
- Network access in prose of documentationREADME.md:22Low confidence
- Network access in prose of documentationREADME.md:23Low confidence
- Network access in prose of documentationREADME.md:24Low confidence
- Network access in prose of documentationREADME.md:34Low confidence
- Network access in code of documentationREADME.md:83Low confidence
- Network access in prose of documentationREADME.md:169Low confidence
- Network access in prose of documentationREADME.md:170Low confidence
- Network access in prose of documentationREADME.md:171Low confidence
- Network access in prose of documentationREADME.md:172Low confidence
- Network access in prose of documentationREADME.md:173Low confidence
- Network access in prose of documentationREADME.md:174Low confidence
- Access to secrets in code of documentation: a variable, placeholder or call, not a stored valueREADME.md:180Low confidence
- Access to secrets in code of documentation: a variable, placeholder or call, not a stored valueREADME.md:182Low confidence
- Network access in prose of documentationREADME.md:237Low confidence
- Network access in prose of documentationREADME.zh.md:21Low confidence
- Network access in prose of documentationREADME.zh.md:22Low confidence
- Network access in prose of documentationREADME.zh.md:23Low confidence
- Network access in prose of documentationREADME.zh.md:24Low confidence
- Network access in prose of documentationREADME.zh.md:34Low confidence
- Network access in code of documentationREADME.zh.md:83Low confidence
- Network access in prose of documentationREADME.zh.md:169Low confidence
- Network access in prose of documentationREADME.zh.md:170Low confidence
- Network access in prose of documentationREADME.zh.md:171Low confidence
- Network access in prose of documentationREADME.zh.md:172Low confidence
- Network access in prose of documentationREADME.zh.md:173Low confidence
- Network access in prose of documentationREADME.zh.md:174Low confidence
- Access to secrets in code of documentation: a variable, placeholder or call, not a stored valueREADME.zh.md:180Low confidence
- Access to secrets in code of documentation: a variable, placeholder or call, not a stored valueREADME.zh.md:182Low confidence
- Network access in prose of documentationREADME.zh.md:237Low confidence
- Broad permissions in the frontmatter of the SKILL.mdSKILL.md:1High confidence
- Access to secrets in code of the SKILL.md: a variable, placeholder or call, not a stored valueSKILL.md:132Low confidence
- Access to secrets in code of the SKILL.md: a variable, placeholder or call, not a stored valueSKILL.md:133Low confidence
- Network access in prose of documentationTHIRD_PARTY.md:17Low confidence
- Network access in prose of documentationTHIRD_PARTY.md:18Low confidence
- Network access in prose of documentationTHIRD_PARTY.md:19Low confidence
- Network access in prose of documentationTHIRD_PARTY.md:20Low confidence
- Network access in prose of documentationTHIRD_PARTY.md:21Low confidence
- Network access in prose of documentationTHIRD_PARTY.md:22Low confidence
- Network access in prose of documentationTHIRD_PARTY.md:23Low confidence
- Network access in prose of documentationTHIRD_PARTY.md:24Low confidence
- Network access in prose of documentationTHIRD_PARTY.md:25Low confidence
- Network access in prose of documentationTHIRD_PARTY.md:26Low confidence
and 442 more
Only the first 500 facts are listed.
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Native | Path CLAUDE.md | .claude/skills/<skill-name>/ |
| Codex | Compatible | Standard SKILL.md SKILL.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.