Embed the Python script directly into the skill for robust and reproducible XML parsing.
Documents
Astroph Arxiv Skill Repo
Try itQueries arXiv filtering by astro-ph, extracting full abstracts, authors, and PDF links. Embeds the Python script directly into the skill for robust and repro...
What it does
Queries arXiv filtering by astro-ph, extracting full abstracts, authors, and PDF links. Embeds the Python script directly into the skill for robust and reproducible XML parsing.
The skill document
Astro-ph Radar Runbook
When the user requests a literature search for a specific topic, execute these steps strictly:
-
Construct the Query:
- Base URL:
https://export.arxiv.org/api/query - Crucial arXiv API Quirk: Combining the top-level
cat:astro-phwith keywords andsortBy=submittedDatebreaks the API's sorting and returns old papers (e.g., from 2008). To get truly recent papers, you MUST use a subcategory likecat:astro-ph.GA(Galactic Astrophysics),cat:astro-ph.SR, etc., or omit thecat:filter if the query is already specific enough. - Cost-Control Limit: Identify the number of papers requested by the user. If the user does not specify a number, default strictly to
max_results=2. NEVER exceed the requested limit. - Combine parameters:
?search_query=cat:astro-ph.GA+AND+all:""&sortBy=submittedDate&sortOrder=descending&max_results= - Ensure spaces and quotes are URL-encoded (e.g.,
%20AND%20).
- Base URL:
-
Execute Fetch and Parse:
- Instead of using pure bash tools, create and run the following Python script (e.g.,
parse_arxiv.py) to fetch, parse, and format the XML data perfectly.
- Instead of using pure bash tools, create and run the following Python script (e.g.,
import urllib.request
import xml.etree.ElementTree as ET
import sys
# Inject the exact URL constructed in Step 1 here
URL = "YOUR_CONSTRUCTED_URL_HERE"
try:
req = urllib.request.Request(URL, headers={'User-Agent': 'Mozilla/5.0'})
with urllib.request.urlopen(req) as response:
xml_data = response.read()
except Exception as e:
print(f"Error fetching data: {e}")
sys.exit(1)
root = ET.fromstring(xml_data)
ns = {'atom': 'http://www.w3.org/2005/Atom'}
count = 0
for entry in root.findall('atom:entry', ns):
title_el = entry.find('atom:title', ns)
if title_el is None or title_el.text == 'Error':
continue
title = title_el.text.replace('\n', ' ').strip()
authors = [author.find('atom:name', ns).text for author in entry.findall('atom:author', ns)]
author_str = f"{authors[0]}, {authors[1]}, {authors[2]}, {authors[3]} et al." if len(authors) > 4 else ", ".join(authors)
published = entry.find('atom:published', ns).text[:10]
summary = entry.find('atom:summary', ns).text.replace('\n', ' ').strip()
link_abs = entry.find('atom:id', ns).text
link_pdf = link_abs.replace('/abs/', '/pdf/') + ".pdf"
print(f"**{title}**")
print(f"**Authors:** {author_str}")
print(f"**Date:** {published}")
print(f"**Links:** [Abstract]({link_abs}) | [PDF]({link_pdf})")
print(f"> {summary}\n\n---")
count += 1
print(f"Found {count} papers.")
- Output the Results:
- Display the standard output generated by the script to the user. It will already be correctly formatted according to the Strict Academic Format.
Related skills
This skill helps users run the arXiv Papers Search Scraper BrowserAct template and extract structured public data. Use this skill when users ask to collect arxiv papers search scraper data, scrape arxiv papers search scraper results, monitor public records from this source, export structured records
Model-led arXiv collection: author queries, judge relevance per result, then merge and dedupe into a final paper set.
Search arxiv for latest papers by keyword and generate a structured daily report.
一个基于arXiv的论文检索与内容解析工具,支持论文搜索、PDF链接获取和内容解析功能,适用于学术研究和AI领域的最新论文获取。
Download ArXiv source or PDF artifacts per paper, read the paper, and write a structured summary.md in your chosen language.