[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DW3TY7ZP4E99AP25EK94Z8":3,"skill-same:01M6DW3TY7ZP4E99AP25EK94Z8":117},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":29,"publishedAt":49,"linkOnly":50,"markdownContent":51,"markdownBody":52,"frontMatter":53,"refName":66,"commitSha":67,"skillDirectory":68,"forksCount":69,"repositoryHtmlUrl":70,"repositoryHomepageUrl":71,"ownerHtmlUrl":72,"ownerBlogUrl":73,"ownerDescription":6,"updatedAt":74,"install":75,"resources":88},"01M6DW3TY7ZP4E99AP25EK94Z8","arxiv",null,"Search and retrieve academic papers from arXiv using their free REST API. No API key needed. Search by keyword, author, category, or ID. Combine with web_extract or the ocr-and-documents skill to read full paper content.","Abruptive\u002FAnkh.md","Abruptive","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F63789616?v=4","01M6DW35JG7EG876Y6R3VZK85J","Abruptive®","01M6DW35PK0FG6G6DSEBAP9F62",77,"MIT","https:\u002F\u002Fgithub.com\u002FAbruptive\u002FAnkh.md\u002Fblob\u002Fdivine\u002Fexamples\u002Fweb-researcher\u002F.agent\u002Fskills\u002Fresearch\u002Farxiv\u002FSKILL.md",[18,23,26],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究",{"categoryNo":27,"categoryName":28,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[5,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],"hermes agent","id","free","paper","rest api","full","Academic","extract","read","research","hermes","science","api","ocr","REST","content","search","documents","web","2026-11-10 10:12:30",false,"---\nname: arxiv\ndescription: Search and retrieve academic papers from arXiv using their free REST API. No API key needed. Search by keyword, author, category, or ID. Combine with web_extract or the ocr-and-documents skill to read full paper content.\nversion: 1.0.0\nauthor: Hermes Agent\nlicense: MIT\nmetadata:\n  hermes:\n    tags: [Research, Arxiv, Papers, Academic, Science, API]\n    related_skills: [ocr-and-documents]\n---\n\n# arXiv Research\n\nSearch and retrieve academic papers from arXiv via their free REST API. No API key, no dependencies — just curl.\n\n## Quick Reference\n\n| Action | Command |\n|--------|---------|\n| Search papers | `curl \"https:\u002F\u002Fexport.arxiv.org\u002Fapi\u002Fquery?search_query=all:QUERY&max_results=5\"` |\n| Get specific paper | `curl \"https:\u002F\u002Fexport.arxiv.org\u002Fapi\u002Fquery?id_list=2402.03300\"` |\n| Read abstract (web) | `web_extract(urls=[\"https:\u002F\u002Farxiv.org\u002Fabs\u002F2402.03300\"])` |\n| Read full paper (PDF) | `web_extract(urls=[\"https:\u002F\u002Farxiv.org\u002Fpdf\u002F2402.03300\"])` |\n\n## Searching Papers\n\nThe API returns Atom XML. Parse with `grep`\u002F`sed` or pipe through `python3` for clean output.\n\n### Basic search\n\n```bash\ncurl -s \"https:\u002F\u002Fexport.arxiv.org\u002Fapi\u002Fquery?search_query=all:GRPO+reinforcement+learning&max_results=5\"\n```\n\n### Clean output (parse XML to readable format)\n\n```bash\ncurl -s \"https:\u002F\u002Fexport.arxiv.org\u002Fapi\u002Fquery?search_query=all:GRPO+reinforcement+learning&max_results=5&sortBy=submittedDate&sortOrder=descending\" | python3 -c \"\nimport sys, xml.etree.ElementTree as ET\nns = {'a': 'http:\u002F\u002Fwww.w3.org\u002F2005\u002FAtom'}\nroot = ET.parse(sys.stdin).getroot()\nfor i, entry in enumerate(root.findall('a:entry', ns)):\n    title = entry.find('a:title', ns).text.strip().replace('\\n', ' ')\n    arxiv_id = entry.find('a:id', ns).text.strip().split('\u002Fabs\u002F')[-1]\n    published = entry.find('a:published', ns).text[:10]\n    authors = ', '.join(a.find('a:name', ns).text for a in entry.findall('a:author', ns))\n    summary = entry.find('a:summary', ns).text.strip()[:200]\n    cats = ', '.join(c.get('term') for c in entry.findall('a:category', ns))\n    print(f'{i+1}. [{arxiv_id}] {title}')\n    print(f'   Authors: {authors}')\n    print(f'   Published: {published} | Categories: {cats}')\n    print(f'   Abstract: {summary}...')\n    print(f'   PDF: https:\u002F\u002Farxiv.org\u002Fpdf\u002F{arxiv_id}')\n    print()\n\"\n```\n\n## Search Query Syntax\n\n| Prefix | Searches | Example |\n|--------|----------|---------|\n| `all:` | All fields | `all:transformer+attention` |\n| `ti:` | Title | `ti:large+language+models` |\n| `au:` | Author | `au:vaswani` |\n| `abs:` | Abstract | `abs:reinforcement+learning` |\n| `cat:` | Category | `cat:cs.AI` |\n| `co:` | Comment | `co:accepted+NeurIPS` |\n\n### Boolean operators\n\n```\n# AND (default when using +)\nsearch_query=all:transformer+attention\n\n# OR\nsearch_query=all:GPT+OR+all:BERT\n\n# AND NOT\nsearch_query=all:language+model+ANDNOT+all:vision\n\n# Exact phrase\nsearch_query=ti:\"chain+of+thought\"\n\n# Combined\nsearch_query=au:hinton+AND+cat:cs.LG\n```\n\n## Sort and Pagination\n\n| Parameter | Options |\n|-----------|---------|\n| `sortBy` | `relevance`, `lastUpdatedDate`, `submittedDate` |\n| `sortOrder` | `ascending`, `descending` |\n| `start` | Result offset (0-based) |\n| `max_results` | Number of results (default 10, max 30000) |\n\n```bash\n# Latest 10 papers in cs.AI\ncurl -s \"https:\u002F\u002Fexport.arxiv.org\u002Fapi\u002Fquery?search_query=cat:cs.AI&sortBy=submittedDate&sortOrder=descending&max_results=10\"\n```\n\n## Fetching Specific Papers\n\n```bash\n# By arXiv ID\ncurl -s \"https:\u002F\u002Fexport.arxiv.org\u002Fapi\u002Fquery?id_list=2402.03300\"\n\n# Multiple papers\ncurl -s \"https:\u002F\u002Fexport.arxiv.org\u002Fapi\u002Fquery?id_list=2402.03300,2401.12345,2403.00001\"\n```\n\n## BibTeX Generation\n\nAfter fetching metadata for a paper, generate a BibTeX entry:\n\n```bash\ncurl -s \"https:\u002F\u002Fexport.arxiv.org\u002Fapi\u002Fquery?id_list=1706.03762\" | python3 -c \"\nimport sys, xml.etree.ElementTree as ET\nns = {'a': 'http:\u002F\u002Fwww.w3.org\u002F2005\u002FAtom', 'arxiv': 'http:\u002F\u002Farxiv.org\u002Fschemas\u002Fatom'}\nroot = ET.parse(sys.stdin).getroot()\nentry = root.find('a:entry', ns)\nif entry is None: sys.exit('Paper not found')\ntitle = entry.find('a:title', ns).text.strip().replace('\\n', ' ')\nauthors = ' and '.join(a.find('a:name', ns).text for a in entry.findall('a:author', ns))\nyear = entry.find('a:published', ns).text[:4]\nraw_id = entry.find('a:id', ns).text.strip().split('\u002Fabs\u002F')[-1]\ncat = entry.find('arxiv:primary_category', ns)\nprimary = cat.get('term') if cat is not None else 'cs.LG'\nlast_name = entry.find('a:author', ns).find('a:name', ns).text.split()[-1]\nprint(f'@article{{{last_name}{year}_{raw_id.replace(\\\".\\\", \\\"\\\")},')\nprint(f'  title     = {{{title}}},')\nprint(f'  author    = {{{authors}}},')\nprint(f'  year      = {{{year}}},')\nprint(f'  eprint    = {{{raw_id}}},')\nprint(f'  archivePrefix = {{arXiv}},')\nprint(f'  primaryClass  = {{{primary}}},')\nprint(f'  url       = {{https:\u002F\u002Farxiv.org\u002Fabs\u002F{raw_id}}}')\nprint('}')\n\"\n```\n\n## Reading Paper Content\n\nAfter finding a paper, read it:\n\n```\n# Abstract page (fast, metadata + abstract)\nweb_extract(urls=[\"https:\u002F\u002Farxiv.org\u002Fabs\u002F2402.03300\"])\n\n# Full paper (PDF → markdown via Firecrawl)\nweb_extract(urls=[\"https:\u002F\u002Farxiv.org\u002Fpdf\u002F2402.03300\"])\n```\n\nFor local PDF processing, see the `ocr-and-documents` skill.\n\n## Common Categories\n\n| Category | Field |\n|----------|-------|\n| `cs.AI` | Artificial Intelligence |\n| `cs.CL` | Computation and Language (NLP) |\n| `cs.CV` | Computer Vision |\n| `cs.LG` | Machine Learning |\n| `cs.CR` | Cryptography and Security |\n| `stat.ML` | Machine Learning (Statistics) |\n| `math.OC` | Optimization and Control |\n| `physics.comp-ph` | Computational Physics |\n\nFull list: https:\u002F\u002Farxiv.org\u002Fcategory_taxonomy\n\n## Helper Script\n\nThe `scripts\u002Fsearch_arxiv.py` script handles XML parsing and provides clean output:\n\n```bash\npython scripts\u002Fsearch_arxiv.py \"GRPO reinforcement learning\"\npython scripts\u002Fsearch_arxiv.py \"transformer attention\" --max 10 --sort date\npython scripts\u002Fsearch_arxiv.py --author \"Yann LeCun\" --max 5\npython scripts\u002Fsearch_arxiv.py --category cs.AI --sort date\npython scripts\u002Fsearch_arxiv.py --id 2402.03300\npython scripts\u002Fsearch_arxiv.py --id 2402.03300,2401.12345\n```\n\nNo dependencies — uses only Python stdlib.\n\n---\n\n## Semantic Scholar (Citations, Related Papers, Author Profiles)\n\narXiv doesn't provide citation data or recommendations. Use the **Semantic Scholar API** for that — free, no key needed for basic use (1 req\u002Fsec), returns JSON.\n\n### Get paper details + citations\n\n```bash\n# By arXiv ID\ncurl -s \"https:\u002F\u002Fapi.semanticscholar.org\u002Fgraph\u002Fv1\u002Fpaper\u002FarXiv:2402.03300?fields=title,authors,citationCount,referenceCount,influentialCitationCount,year,abstract\" | python3 -m json.tool\n\n# By Semantic Scholar paper ID or DOI\ncurl -s \"https:\u002F\u002Fapi.semanticscholar.org\u002Fgraph\u002Fv1\u002Fpaper\u002FDOI:10.1234\u002Fexample?fields=title,citationCount\"\n```\n\n### Get citations OF a paper (who cited it)\n\n```bash\ncurl -s \"https:\u002F\u002Fapi.semanticscholar.org\u002Fgraph\u002Fv1\u002Fpaper\u002FarXiv:2402.03300\u002Fcitations?fields=title,authors,year,citationCount&limit=10\" | python3 -m json.tool\n```\n\n### Get references FROM a paper (what it cites)\n\n```bash\ncurl -s \"https:\u002F\u002Fapi.semanticscholar.org\u002Fgraph\u002Fv1\u002Fpaper\u002FarXiv:2402.03300\u002Freferences?fields=title,authors,year,citationCount&limit=10\" | python3 -m json.tool\n```\n\n### Search papers (alternative to arXiv search, returns JSON)\n\n```bash\ncurl -s \"https:\u002F\u002Fapi.semanticscholar.org\u002Fgraph\u002Fv1\u002Fpaper\u002Fsearch?query=GRPO+reinforcement+learning&limit=5&fields=title,authors,year,citationCount,externalIds\" | python3 -m json.tool\n```\n\n### Get paper recommendations\n\n```bash\ncurl -s -X POST \"https:\u002F\u002Fapi.semanticscholar.org\u002Frecommendations\u002Fv1\u002Fpapers\u002F\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"positivePaperIds\": [\"arXiv:2402.03300\"], \"negativePaperIds\": []}' | python3 -m json.tool\n```\n\n### Author profile\n\n```bash\ncurl -s \"https:\u002F\u002Fapi.semanticscholar.org\u002Fgraph\u002Fv1\u002Fauthor\u002Fsearch?query=Yann+LeCun&fields=name,hIndex,citationCount,paperCount\" | python3 -m json.tool\n```\n\n### Useful Semantic Scholar fields\n\n`title`, `authors`, `year`, `abstract`, `citationCount`, `referenceCount`, `influentialCitationCount`, `isOpenAccess`, `openAccessPdf`, `fieldsOfStudy`, `publicationVenue`, `externalIds` (contains arXiv ID, DOI, etc.)\n\n---\n\n## Complete Research Workflow\n\n1. **Discover**: `python scripts\u002Fsearch_arxiv.py \"your topic\" --sort date --max 10`\n2. **Assess impact**: `curl -s \"https:\u002F\u002Fapi.semanticscholar.org\u002Fgraph\u002Fv1\u002Fpaper\u002FarXiv:ID?fields=citationCount,influentialCitationCount\"`\n3. **Read abstract**: `web_extract(urls=[\"https:\u002F\u002Farxiv.org\u002Fabs\u002FID\"])`\n4. **Read full paper**: `web_extract(urls=[\"https:\u002F\u002Farxiv.org\u002Fpdf\u002FID\"])`\n5. **Find related work**: `curl -s \"https:\u002F\u002Fapi.semanticscholar.org\u002Fgraph\u002Fv1\u002Fpaper\u002FarXiv:ID\u002Freferences?fields=title,citationCount&limit=20\"`\n6. **Get recommendations**: POST to Semantic Scholar recommendations endpoint\n7. **Track authors**: `curl -s \"https:\u002F\u002Fapi.semanticscholar.org\u002Fgraph\u002Fv1\u002Fauthor\u002Fsearch?query=NAME\"`\n\n## Rate Limits\n\n| API | Rate | Auth |\n|-----|------|------|\n| arXiv | ~1 req \u002F 3 seconds | None needed |\n| Semantic Scholar | 1 req \u002F second | None (100\u002Fsec with API key) |\n\n## Notes\n\n- arXiv returns Atom XML — use the helper script or parsing snippet for clean output\n- Semantic Scholar returns JSON — pipe through `python3 -m json.tool` for readability\n- arXiv IDs: old format (`hep-th\u002F0601001`) vs new (`2402.03300`)\n- PDF: `https:\u002F\u002Farxiv.org\u002Fpdf\u002F{id}` — Abstract: `https:\u002F\u002Farxiv.org\u002Fabs\u002F{id}`\n- HTML (when available): `https:\u002F\u002Farxiv.org\u002Fhtml\u002F{id}`\n- For local PDF processing, see the `ocr-and-documents` skill\n\n## ID Versioning\n\n- `arxiv.org\u002Fabs\u002F1706.03762` always resolves to the **latest** version\n- `arxiv.org\u002Fabs\u002F1706.03762v1` points to a **specific** immutable version\n- When generating citations, preserve the version suffix you actually read to prevent citation drift (a later version may substantially change content)\n- The API `\u003Cid>` field returns the versioned URL (e.g., `http:\u002F\u002Farxiv.org\u002Fabs\u002F1706.03762v7`)\n\n## Withdrawn Papers\n\nPapers can be withdrawn after submission. When this happens:\n- The `\u003Csummary>` field contains a withdrawal notice (look for \"withdrawn\" or \"retracted\")\n- Metadata fields may be incomplete\n- Always check the summary before treating a result as a valid paper\n","# arXiv Research\n\nSearch and retrieve academic papers from arXiv via their free REST API. No API key, no dependencies — just curl.\n\n## Quick Reference\n\n| Action | Command |\n|--------|---------|\n| Search papers | `curl \"https:\u002F\u002Fexport.arxiv.org\u002Fapi\u002Fquery?search_query=all:QUERY&max_results=5\"` |\n| Get specific paper | `curl \"https:\u002F\u002Fexport.arxiv.org\u002Fapi\u002Fquery?id_list=2402.03300\"` |\n| Read abstract (web) | `web_extract(urls=[\"https:\u002F\u002Farxiv.org\u002Fabs\u002F2402.03300\"])` |\n| Read full paper (PDF) | `web_extract(urls=[\"https:\u002F\u002Farxiv.org\u002Fpdf\u002F2402.03300\"])` |\n\n## Searching Papers\n\nThe API returns Atom XML. Parse with `grep`\u002F`sed` or pipe through `python3` for clean output.\n\n### Basic search\n\n```bash\ncurl -s \"https:\u002F\u002Fexport.arxiv.org\u002Fapi\u002Fquery?search_query=all:GRPO+reinforcement+learning&max_results=5\"\n```\n\n### Clean output (parse XML to readable format)\n\n```bash\ncurl -s \"https:\u002F\u002Fexport.arxiv.org\u002Fapi\u002Fquery?search_query=all:GRPO+reinforcement+learning&max_results=5&sortBy=submittedDate&sortOrder=descending\" | python3 -c \"\nimport sys, xml.etree.ElementTree as ET\nns = {'a': 'http:\u002F\u002Fwww.w3.org\u002F2005\u002FAtom'}\nroot = ET.parse(sys.stdin).getroot()\nfor i, entry in enumerate(root.findall('a:entry', ns)):\n    title = entry.find('a:title', ns).text.strip().replace('\\n', ' ')\n    arxiv_id = entry.find('a:id', ns).text.strip().split('\u002Fabs\u002F')[-1]\n    published = entry.find('a:published', ns).text[:10]\n    authors = ', '.join(a.find('a:name', ns).text for a in entry.findall('a:author', ns))\n    summary = entry.find('a:summary', ns).text.strip()[:200]\n    cats = ', '.join(c.get('term') for c in entry.findall('a:category', ns))\n    print(f'{i+1}. [{arxiv_id}] {title}')\n    print(f'   Authors: {authors}')\n    print(f'   Published: {published} | Categories: {cats}')\n    print(f'   Abstract: {summary}...')\n    print(f'   PDF: https:\u002F\u002Farxiv.org\u002Fpdf\u002F{arxiv_id}')\n    print()\n\"\n```\n\n## Search Query Syntax\n\n| Prefix | Searches | Example |\n|--------|----------|---------|\n| `all:` | All fields | `all:transformer+attention` |\n| `ti:` | Title | `ti:large+language+models` |\n| `au:` | Author | `au:vaswani` |\n| `abs:` | Abstract | `abs:reinforcement+learning` |\n| `cat:` | Category | `cat:cs.AI` |\n| `co:` | Comment | `co:accepted+NeurIPS` |\n\n### Boolean operators\n\n```\n# AND (default when using +)\nsearch_query=all:transformer+attention\n\n# OR\nsearch_query=all:GPT+OR+all:BERT\n\n# AND NOT\nsearch_query=all:language+model+ANDNOT+all:vision\n\n# Exact phrase\nsearch_query=ti:\"chain+of+thought\"\n\n# Combined\nsearch_query=au:hinton+AND+cat:cs.LG\n```\n\n## Sort and Pagination\n\n| Parameter | Options |\n|-----------|---------|\n| `sortBy` | `relevance`, `lastUpdatedDate`, `submittedDate` |\n| `sortOrder` | `ascending`, `descending` |\n| `start` | Result offset (0-based) |\n| `max_results` | Number of results (default 10, max 30000) |\n\n```bash\n# Latest 10 papers in cs.AI\ncurl -s \"https:\u002F\u002Fexport.arxiv.org\u002Fapi\u002Fquery?search_query=cat:cs.AI&sortBy=submittedDate&sortOrder=descending&max_results=10\"\n```\n\n## Fetching Specific Papers\n\n```bash\n# By arXiv ID\ncurl -s \"https:\u002F\u002Fexport.arxiv.org\u002Fapi\u002Fquery?id_list=2402.03300\"\n\n# Multiple papers\ncurl -s \"https:\u002F\u002Fexport.arxiv.org\u002Fapi\u002Fquery?id_list=2402.03300,2401.12345,2403.00001\"\n```\n\n## BibTeX Generation\n\nAfter fetching metadata for a paper, generate a BibTeX entry:\n\n```bash\ncurl -s \"https:\u002F\u002Fexport.arxiv.org\u002Fapi\u002Fquery?id_list=1706.03762\" | python3 -c \"\nimport sys, xml.etree.ElementTree as ET\nns = {'a': 'http:\u002F\u002Fwww.w3.org\u002F2005\u002FAtom', 'arxiv': 'http:\u002F\u002Farxiv.org\u002Fschemas\u002Fatom'}\nroot = ET.parse(sys.stdin).getroot()\nentry = root.find('a:entry', ns)\nif entry is None: sys.exit('Paper not found')\ntitle = entry.find('a:title', ns).text.strip().replace('\\n', ' ')\nauthors = ' and '.join(a.find('a:name', ns).text for a in entry.findall('a:author', ns))\nyear = entry.find('a:published', ns).text[:4]\nraw_id = entry.find('a:id', ns).text.strip().split('\u002Fabs\u002F')[-1]\ncat = entry.find('arxiv:primary_category', ns)\nprimary = cat.get('term') if cat is not None else 'cs.LG'\nlast_name = entry.find('a:author', ns).find('a:name', ns).text.split()[-1]\nprint(f'@article{{{last_name}{year}_{raw_id.replace(\\\".\\\", \\\"\\\")},')\nprint(f'  title     = {{{title}}},')\nprint(f'  author    = {{{authors}}},')\nprint(f'  year      = {{{year}}},')\nprint(f'  eprint    = {{{raw_id}}},')\nprint(f'  archivePrefix = {{arXiv}},')\nprint(f'  primaryClass  = {{{primary}}},')\nprint(f'  url       = {{https:\u002F\u002Farxiv.org\u002Fabs\u002F{raw_id}}}')\nprint('}')\n\"\n```\n\n## Reading Paper Content\n\nAfter finding a paper, read it:\n\n```\n# Abstract page (fast, metadata + abstract)\nweb_extract(urls=[\"https:\u002F\u002Farxiv.org\u002Fabs\u002F2402.03300\"])\n\n# Full paper (PDF → markdown via Firecrawl)\nweb_extract(urls=[\"https:\u002F\u002Farxiv.org\u002Fpdf\u002F2402.03300\"])\n```\n\nFor local PDF processing, see the `ocr-and-documents` skill.\n\n## Common Categories\n\n| Category | Field |\n|----------|-------|\n| `cs.AI` | Artificial Intelligence |\n| `cs.CL` | Computation and Language (NLP) |\n| `cs.CV` | Computer Vision |\n| `cs.LG` | Machine Learning |\n| `cs.CR` | Cryptography and Security |\n| `stat.ML` | Machine Learning (Statistics) |\n| `math.OC` | Optimization and Control |\n| `physics.comp-ph` | Computational Physics |\n\nFull list: https:\u002F\u002Farxiv.org\u002Fcategory_taxonomy\n\n## Helper Script\n\nThe `scripts\u002Fsearch_arxiv.py` script handles XML parsing and provides clean output:\n\n```bash\npython scripts\u002Fsearch_arxiv.py \"GRPO reinforcement learning\"\npython scripts\u002Fsearch_arxiv.py \"transformer attention\" --max 10 --sort date\npython scripts\u002Fsearch_arxiv.py --author \"Yann LeCun\" --max 5\npython scripts\u002Fsearch_arxiv.py --category cs.AI --sort date\npython scripts\u002Fsearch_arxiv.py --id 2402.03300\npython scripts\u002Fsearch_arxiv.py --id 2402.03300,2401.12345\n```\n\nNo dependencies — uses only Python stdlib.\n\n---\n\n## Semantic Scholar (Citations, Related Papers, Author Profiles)\n\narXiv doesn't provide citation data or recommendations. Use the **Semantic Scholar API** for that — free, no key needed for basic use (1 req\u002Fsec), returns JSON.\n\n### Get paper details + citations\n\n```bash\n# By arXiv ID\ncurl -s \"https:\u002F\u002Fapi.semanticscholar.org\u002Fgraph\u002Fv1\u002Fpaper\u002FarXiv:2402.03300?fields=title,authors,citationCount,referenceCount,influentialCitationCount,year,abstract\" | python3 -m json.tool\n\n# By Semantic Scholar paper ID or DOI\ncurl -s \"https:\u002F\u002Fapi.semanticscholar.org\u002Fgraph\u002Fv1\u002Fpaper\u002FDOI:10.1234\u002Fexample?fields=title,citationCount\"\n```\n\n### Get citations OF a paper (who cited it)\n\n```bash\ncurl -s \"https:\u002F\u002Fapi.semanticscholar.org\u002Fgraph\u002Fv1\u002Fpaper\u002FarXiv:2402.03300\u002Fcitations?fields=title,authors,year,citationCount&limit=10\" | python3 -m json.tool\n```\n\n### Get references FROM a paper (what it cites)\n\n```bash\ncurl -s \"https:\u002F\u002Fapi.semanticscholar.org\u002Fgraph\u002Fv1\u002Fpaper\u002FarXiv:2402.03300\u002Freferences?fields=title,authors,year,citationCount&limit=10\" | python3 -m json.tool\n```\n\n### Search papers (alternative to arXiv search, returns JSON)\n\n```bash\ncurl -s \"https:\u002F\u002Fapi.semanticscholar.org\u002Fgraph\u002Fv1\u002Fpaper\u002Fsearch?query=GRPO+reinforcement+learning&limit=5&fields=title,authors,year,citationCount,externalIds\" | python3 -m json.tool\n```\n\n### Get paper recommendations\n\n```bash\ncurl -s -X POST \"https:\u002F\u002Fapi.semanticscholar.org\u002Frecommendations\u002Fv1\u002Fpapers\u002F\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"positivePaperIds\": [\"arXiv:2402.03300\"], \"negativePaperIds\": []}' | python3 -m json.tool\n```\n\n### Author profile\n\n```bash\ncurl -s \"https:\u002F\u002Fapi.semanticscholar.org\u002Fgraph\u002Fv1\u002Fauthor\u002Fsearch?query=Yann+LeCun&fields=name,hIndex,citationCount,paperCount\" | python3 -m json.tool\n```\n\n### Useful Semantic Scholar fields\n\n`title`, `authors`, `year`, `abstract`, `citationCount`, `referenceCount`, `influentialCitationCount`, `isOpenAccess`, `openAccessPdf`, `fieldsOfStudy`, `publicationVenue`, `externalIds` (contains arXiv ID, DOI, etc.)\n\n---\n\n## Complete Research Workflow\n\n1. **Discover**: `python scripts\u002Fsearch_arxiv.py \"your topic\" --sort date --max 10`\n2. **Assess impact**: `curl -s \"https:\u002F\u002Fapi.semanticscholar.org\u002Fgraph\u002Fv1\u002Fpaper\u002FarXiv:ID?fields=citationCount,influentialCitationCount\"`\n3. **Read abstract**: `web_extract(urls=[\"https:\u002F\u002Farxiv.org\u002Fabs\u002FID\"])`\n4. **Read full paper**: `web_extract(urls=[\"https:\u002F\u002Farxiv.org\u002Fpdf\u002FID\"])`\n5. **Find related work**: `curl -s \"https:\u002F\u002Fapi.semanticscholar.org\u002Fgraph\u002Fv1\u002Fpaper\u002FarXiv:ID\u002Freferences?fields=title,citationCount&limit=20\"`\n6. **Get recommendations**: POST to Semantic Scholar recommendations endpoint\n7. **Track authors**: `curl -s \"https:\u002F\u002Fapi.semanticscholar.org\u002Fgraph\u002Fv1\u002Fauthor\u002Fsearch?query=NAME\"`\n\n## Rate Limits\n\n| API | Rate | Auth |\n|-----|------|------|\n| arXiv | ~1 req \u002F 3 seconds | None needed |\n| Semantic Scholar | 1 req \u002F second | None (100\u002Fsec with API key) |\n\n## Notes\n\n- arXiv returns Atom XML — use the helper script or parsing snippet for clean output\n- Semantic Scholar returns JSON — pipe through `python3 -m json.tool` for readability\n- arXiv IDs: old format (`hep-th\u002F0601001`) vs new (`2402.03300`)\n- PDF: `https:\u002F\u002Farxiv.org\u002Fpdf\u002F{id}` — Abstract: `https:\u002F\u002Farxiv.org\u002Fabs\u002F{id}`\n- HTML (when available): `https:\u002F\u002Farxiv.org\u002Fhtml\u002F{id}`\n- For local PDF processing, see the `ocr-and-documents` skill\n\n## ID Versioning\n\n- `arxiv.org\u002Fabs\u002F1706.03762` always resolves to the **latest** version\n- `arxiv.org\u002Fabs\u002F1706.03762v1` points to a **specific** immutable version\n- When generating citations, preserve the version suffix you actually read to prevent citation drift (a later version may substantially change content)\n- The API `\u003Cid>` field returns the versioned URL (e.g., `http:\u002F\u002Farxiv.org\u002Fabs\u002F1706.03762v7`)\n\n## Withdrawn Papers\n\nPapers can be withdrawn after submission. When this happens:\n- The `\u003Csummary>` field contains a withdrawal notice (look for \"withdrawn\" or \"retracted\")\n- Metadata fields may be incomplete\n- Always check the summary before treating a result as a valid paper\n",{"name":5,"author":54,"license":15,"version":55,"metadata":56,"description":7},"Hermes Agent","1.0.0",{"hermes":57},{"tags":58,"related_skills":64},[59,60,61,36,62,63],"Research","Arxiv","Papers","Science","API",[65],"ocr-and-documents","divine","de2a09af17a2c6e5ca813003a5a4394e4872688a","examples\u002Fweb-researcher\u002F.agent\u002Fskills\u002Fresearch\u002Farxiv",6,"https:\u002F\u002Fgithub.com\u002FAbruptive\u002FAnkh.md","https:\u002F\u002Fwww.ankh.md","https:\u002F\u002Fgithub.com\u002FAbruptive","https:\u002F\u002Fwww.abruptive.com","2026-03-15 13:36:36",{"source":8,"skillName":5,"commands":76,"prompt":86,"zipAvailable":87},[77,80,83],{"tool":78,"command":79},"npx","npx skills add Abruptive\u002FAnkh.md --skill arxiv",{"tool":81,"command":82},"bunx","bunx skills add Abruptive\u002FAnkh.md --skill arxiv",{"tool":84,"command":85},"pnpm","pnpm dlx skills add Abruptive\u002FAnkh.md --skill arxiv","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FAbruptive\u002FAnkh.md\u002Fblob\u002Fdivine\u002Fexamples\u002Fweb-researcher\u002F.agent\u002Fskills\u002Fresearch\u002Farxiv\u002FSKILL.md",true,[89,95,99,103,107,111],{"path":90,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":93,"sourceHtmlUrl":94},"evals\u002Fevals.json","REFERENCE","参考文档",40428,"https:\u002F\u002Fgithub.com\u002FSanAntonio021\u002Fagents-skills\u002Fblob\u002Fmain\u002Fcodex-relay-chain\u002Fevals\u002Fevals.json",{"path":96,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":97,"sourceHtmlUrl":98},"references\u002Fconfiguration-and-auth.md",20150,"https:\u002F\u002Fgithub.com\u002FSanAntonio021\u002Fagents-skills\u002Fblob\u002Fmain\u002Fcodex-relay-chain\u002Freferences\u002Fconfiguration-and-auth.md",{"path":100,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":101,"sourceHtmlUrl":102},"references\u002Frelay-modes-and-providers.md",23628,"https:\u002F\u002Fgithub.com\u002FSanAntonio021\u002Fagents-skills\u002Fblob\u002Fmain\u002Fcodex-relay-chain\u002Freferences\u002Frelay-modes-and-providers.md",{"path":104,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":105,"sourceHtmlUrl":106},"references\u002Fresponses-validation.md",9423,"https:\u002F\u002Fgithub.com\u002FSanAntonio021\u002Fagents-skills\u002Fblob\u002Fmain\u002Fcodex-relay-chain\u002Freferences\u002Fresponses-validation.md",{"path":108,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":109,"sourceHtmlUrl":110},"references\u002Fupstream-sources.md",599,"https:\u002F\u002Fgithub.com\u002FSanAntonio021\u002Fagents-skills\u002Fblob\u002Fmain\u002Fcodex-relay-chain\u002Freferences\u002Fupstream-sources.md",{"path":112,"resourceType":113,"resourceTypeDesc":114,"sizeBytes":115,"sourceHtmlUrl":116},"scripts\u002Fsearch_arxiv.py","SCRIPT","脚本",4272,"https:\u002F\u002Fgithub.com\u002FAbruptive\u002FAnkh.md\u002Fblob\u002Fdivine\u002Fexamples\u002Fweb-researcher\u002F.agent\u002Fskills\u002Fresearch\u002Farxiv\u002Fscripts\u002Fsearch_arxiv.py",[118,134,143,154,165,182],{"skillNo":119,"name":120,"nameZh":6,"description":121,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":122,"categories":123,"keywords":124,"publishedAt":49},"01M6DW4BKFVMVZMX2P8M7C81YF","Global Baseline","Default cross-project workflow for planning, execution, and verification.","https:\u002F\u002Fgithub.com\u002FAbruptive\u002FAnkh.md\u002Fblob\u002Fdivine\u002Fsrc\u002Fresources\u002Fdefaults\u002Fskills\u002Fcore\u002Fglobal-baseline\u002FSKILL.md",[],[120,125,126,127,128,129,130,131,132,133],"global","baseline","workflow","planning","verification","execution","default","project","project workflow",{"skillNo":135,"name":136,"nameZh":6,"description":137,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":138,"categories":139,"keywords":140,"publishedAt":49},"01M6DW498ZZ33TESKZK3RJNCZY","Example","An example skill.","https:\u002F\u002Fgithub.com\u002FAbruptive\u002FAnkh.md\u002Fblob\u002Fdivine\u002Fsrc\u002Fresources\u002Fdefaults\u002Fskills\u002Fcore\u002Fexample\u002FSKILL.md",[],[141,142],"example","example skill",{"skillNo":144,"name":145,"nameZh":6,"description":146,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":147,"categories":148,"keywords":149,"publishedAt":49},"01M6DW46W3X6FAH7Z7ZQ2SZYTS","Fireball","Use when the user requests fireball, fire spell, or similar playful spell-casting.","https:\u002F\u002Fgithub.com\u002FAbruptive\u002FAnkh.md\u002Fblob\u002Fdivine\u002Fexamples\u002Fweb-researcher\u002F.agent\u002Fskills\u002Fspells\u002Ffireball\u002FSKILL.md",[],[145,150,151,152,153],"user","use","fun","ascii",{"skillNo":155,"name":156,"nameZh":6,"description":157,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":158,"categories":159,"keywords":160,"publishedAt":49},"01M6DW44CZMYEX8KVJN2F9JC4H","Source Digest","Summarize multiple sources into concise decision-ready findings.","https:\u002F\u002Fgithub.com\u002FAbruptive\u002FAnkh.md\u002Fblob\u002Fdivine\u002Fexamples\u002Fweb-researcher\u002F.agent\u002Fskills\u002Fresearch\u002Fsource-digest\u002FSKILL.md",[],[156,161,162,163,164],"digest","ready","summarize","decision",{"skillNo":166,"name":167,"nameZh":6,"description":168,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":169,"categories":170,"keywords":171,"publishedAt":49},"01M6DW41KZGH62P0K4QF8MJEGJ","duckduckgo-search","Free web search via DuckDuckGo when Firecrawl is unavailable. No API key needed. Use ddgs CLI or Python library to find URLs, then web_extract for content.","https:\u002F\u002Fgithub.com\u002FAbruptive\u002FAnkh.md\u002Fblob\u002Fdivine\u002Fexamples\u002Fweb-researcher\u002F.agent\u002Fskills\u002Fresearch\u002Fduckduckgo-search\u002FSKILL.md",[],[172,46,173,174,175,48,45,176,42,177,178,37,151,5,179,180,32,181],"duckduckgo search","web search","cli","python","library","firecrawl","find","fallback","web-search","via",{"skillNo":183,"name":184,"nameZh":6,"description":185,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":186,"categories":187,"keywords":188,"publishedAt":49},"01M6DW3YC2D1G61SM82V8FK4DZ","domain-intel","Passive domain reconnaissance using Python stdlib. Subdomain discovery, SSL certificate inspection, WHOIS lookups, DNS records, domain availability checks, and bulk multi-domain analysis. No API keys required.","https:\u002F\u002Fgithub.com\u002FAbruptive\u002FAnkh.md\u002Fblob\u002Fdivine\u002Fexamples\u002Fweb-researcher\u002F.agent\u002Fskills\u002Fresearch\u002Fdomain-intel\u002FSKILL.md",[],[189,190,191,192,42,193,194,195,196,197,198,199,175],"domain","domain intel","reconnaissance","discovery","analysis","whois","dns","ssl","multi-domain","subdomain","certificate"]