Research Trend Scanner
MetadataRetrievalIntermediate
Research Trend Scanner
Inspect five-year trends, top venues, highly cited papers, and keyword shifts for a research area
Scenario
Researchers want to understand how a topic has evolved over the past five years, including publication volume, venue distribution, highly cited papers, and keyword changes.
Estimated calls
~10-25 API calls per scan
Tools
meta-searchPipeline
研究方向关键词→ meta-search 按年分组→ 统计趋势→ 排序高被引→ 趋势报告
Input example
Topic: "graph neural networks for molecular property prediction" Need: five-year trend scan with top venues and highly cited papers.
Output example
Trend report: - publication count by year - top venues - highly cited papers - emerging keywords - summary of changes over time
Agent Prompt example
You are a research trend analysis assistant. Use meta-search to aggregate papers by year, venue, citation count, and keywords, then summarize the trend.Implementation steps
Step 1: Set up the environment
Configure token and HTTP client
!pip install httpx pandas
import os
os.environ["SCIVERSE_API_TOKEN"] = "sv-your-token-here" # 替换为你的真实值
Step 2: Count publications by year
Run year-by-year meta-search queries for the topic
import os
import asyncio
import httpx
import pandas as pd
BASE = "https://api.sciverse.space"
TOKEN = os.environ["SCIVERSE_API_TOKEN"]
HEADERS = {"Authorization": f"Bearer {TOKEN}"}
async def count_by_year(query: str, year: int) -> int:
async with httpx.AsyncClient(timeout=30) as client:
resp = await client.post(
f"{BASE}/meta-search", headers=HEADERS,
json={
"query": query,
"filters": [
{"field": "publication_published_year", "operator": "FILTER_OP_EQ", "value": year}
],
"page": 1, "page_size": 1
}
)
resp.raise_for_status()
return resp.json().get("total_count", 0)
async def trend_scan(query: str, start_year: int = 2020, end_year: int = 2024):
tasks = [count_by_year(query, y) for y in range(start_year, end_year + 1)]
counts = await asyncio.gather(*tasks)
return list(zip(range(start_year, end_year + 1), counts))
QUERY = "large language model"
trend = await trend_scan(QUERY)
df = pd.DataFrame(trend, columns=["year", "count"])
print(df.to_string(index=False))
Step 3: Find highly cited papers and top venues
Sort and group results by citation count and venue
async def top_cited_papers(query: str, year: int, top_n: int = 5, candidate_pool: int = 50):
"""查找某主题在某年度的高被引论文。
query 与 sort 可共用:也可直接传 sort 让服务端按引用数硬排;本例演示先按 query 取候选、再本地按引用数排序的做法。
"""
async with httpx.AsyncClient(timeout=30) as client:
resp = await client.post(
f"{BASE}/meta-search", headers=HEADERS,
json={
"query": query,
"filters": [
{"field": "publication_published_year", "operator": "FILTER_OP_EQ", "value": year}
],
"page": 1, "page_size": candidate_pool
}
)
resp.raise_for_status()
papers = (resp.json().get("results") or [])
return sorted(papers, key=lambda p: p.get("citation_count", 0), reverse=True)[:top_n]
async def main():
for year in [2022, 2023, 2024]:
papers = await top_cited_papers(QUERY, year)
print(f"\
=== {year} Top Cited for '{QUERY}' ===")
for p in papers:
venue = p.get("publication_venue_name_unified", "N/A")
cites = p.get("citation_count", 0)
print(f" [{cites} cites] {p['title'][:60]} ({venue})")
await main()
Notes
- Use the same query definition across years for comparability.
- Citation counts can favor older papers; interpret them carefully.
- Combine structured statistics with semantic reading for interpretation.
- Keep query parameters in the report so the scan can be reproduced.
FAQ
适合什么分析?
适合分析某方向近几年发文量、头部期刊、高被引论文和趋势变化。
数据从哪里来?
主要来自 meta-search 的元数据检索和排序结果。
能否直接代表学术共识?
不能,趋势扫描反映文献分布和热度,不等同于结论共识。
输出建议包含什么?
建议包含年度发文量、高被引论文、代表期刊、关键词和数据口径。
Next steps
Need an API key?
Create one in Console > Tokens.The same API key works for enabled Sciverse, DianShi, and Skills capabilities, with starter quota available according to account permissions.