hxxra
name: hxxra
by cxlhyx · published 2026-03-22
$ claw add gh:cxlhyx/cxlhyx-hxxra---
name: hxxra
description: A Research Assistant workflow skill with five core commands: search papers, download PDFs, analyze content, generate reports, and save to Zotero. Entry point is a Python script located at scripts/hxxra.py and invoked via stdin/stdout (OpenClaw integration). The search uses crawlers for Google Scholar and arXiv APIs; download uses Python requests or arXiv API; analyze uses an LLM; report generates Markdown summaries from analysis.json files; save uses Zotero API.
---
# hxxra
This skill is a Research Assistant that helps users search, download, analyze, report, and save research papers.
Recommended Directory Structure
For better organization, it is recommended to create a dedicated workspace for `hxxra` under your OpenClaw working directory:
📁 workspace/ # OpenClaw current working directory
└── 📁 hxxra/
├── 📁 searches/ # Stores all search result JSON files
├── 2025-03-07_neural_radiance_fields_arxiv.json
├── 2025-03-07_transformer_architectures_scholar.json
└── ...
├── 📁 papers/ # Stores downloaded PDF files and per-paper analysis results (each as a subfolder)
├── papers_report.md # Generated Markdown report summarizing all analyzed papers
├── 2023_Smith_NeRF_Explained/ # Folder named after the PDF (without extension)
├── 2023_Smith_NeRF_Explained.pdf
├── analysis.json # Structured output from LLM analysis
└── notes.md # (Optional) User-added notes
├── 2024_Zhang_Transformer_Survey/
├── 2024_Zhang_Transformer_Survey.pdf
├── analysis.json
└── ...
└── ...
└── 📁 logs/ # Stores execution logs
└── hxxra_2025-03-07.logThis structure keeps all related files organized and easily accessible for review and further processing.
Core Commands
1. **hxxra search** - Search for research papers
**Dependencies**: `pip install scholarly`
**Purpose**: Search for papers using Google Scholar and arXiv APIs
**Academic Note**: To account for the distinct characteristics of each data source, the tool adopts a differentiated sorting strategy—**arXiv results are ordered by submission date in descending order**, prioritizing the timeliness of recent research; **Google Scholar results retain the source's default relevance ranking**, ensuring strong alignment with the query keywords while appropriately weighing influential or classical literature.
**Parameters**:
**Input Examples**:
{"command": "search", "query": "neural radiance fields", "source": "arxiv", "limit": 10, "output": "results.json"} | python scripts/hxxra.py
{"command": "search", "query": "transformer architecture", "source": "scholar", "limit": 15} | python scripts/hxxra.py**Output Structure**:
{
"ok": true,
"command": "search",
"query": "<query>",
"source": "<source>",
"results": [
{
"id": "1",
"title": "Paper Title",
"authors": ["Author1", "Author2"],
"year": "2023",
"source": "arxiv",
"abstract": "Abstract text...",
"url": "https://arxiv.org/abs/xxxx.xxxxx",
"pdf_url": "https://arxiv.org/pdf/xxxx.xxxxx.pdf",
"citations": 123
}
],
"total": 10,
"output_file": "/path/to/results.json"
}------
2. **hxxra download** - Download PDF files
**Purpose**: Download PDFs for specified papers
**Parameters**:
**Input Examples**:
{"command": "download", "from-file": "results.json", "ids": ["1", "3", "5"], "dir": "./downloads"} | python scripts/hxxra.py
{"command": "download", "from-file": "results.json", "dir": "./downloads"} | python scripts/hxxra.py**Output Structure**:
{
"ok": true,
"command": "download",
"downloaded": [
{
"id": "1",
"title": "Paper Title",
"status": "success",
"pdf_path": "{workspace}/hxxra/papers/2023_Smith_NeRF_Explained/2023_Smith_NeRF_Explained.pdf",
"size_bytes": 1234567,
"url": "https://arxiv.org/pdf/xxxx.xxxxx.pdf"
}
],
"failed": [],
"total": 3,
"successful": 3,
"download_dir": "{workspace}/hxxra/papers"
}------
3. **hxxra analyze** - Analyze PDF content
**Dependencies**: `pip install pymupdf pdfplumber openai`
**Purpose**: Analyze paper content using LLM
**Parameters**:
** Note: Either `--pdf` or `--directory` must be provided, but not both*
**Input Examples**:
{"command": "analyze", "pdf": "paper.pdf", "output": "./analysis/"} | python scripts/hxxra.py
{"command": "analyze", "directory": "hxxra/papers/"} | python scripts/hxxra.py**Output Structure**:
{
"ok": true,
"command": "analyze",
"analyzed": [
{
"id": "paper_1",
"original_file": "paper.pdf",
"analysis_file": "{workspace}/hxxra/papers/2023_Smith_NeRF_Explained/analysis.json",
"metadata": {
"title": "Paper Title",
"authors": ["Author1", "Author2"],
"year": "2023",
"abstract": "Abstract text..."
},
"analysis": {
"background": "Problem background...",
"methodology": "Proposed method...",
"results": "Experimental results...",
"conclusions": "Conclusions..."
},
"status": "success"
}
],
"summary": {
"total": 1,
"successful": 1,
"failed": 0
}
}------
4. **hxxra report** - Generate Markdown report
**Purpose**: Generate a comprehensive Markdown report from all `analysis.json` files in a directory
**Parameters**:
**Input Examples**:
{"command": "report", "directory": "hxxra/papers/", "output": "hxxra/papers/report.md", "title": "My Research Papers", "sort": "year"} | python scripts/hxxra.py
{"command": "report", "directory": "hxxra/papers/"} | python scripts/hxxra.py**Output Structure**:
{
"ok": true,
"command": "report",
"total_papers": 10,
"output_file": "/path/to/hxxra/papers/report.md"
}**Generated Markdown Format**:
The generated report includes:
- Title, authors, year, keywords, code link (if available)
- Abstract
- Research background
- Methodology
- Main results
- Conclusions
- Limitations
- Impact
- Source folder path
**Note**: The report command recursively scans all subdirectories for `analysis.json` files and only includes papers with `status: "success"`.
------
5. **hxxra save** - Save to Zotero
**Purpose**: Save papers to Zotero collection
**Parameters**:
**Input Examples**:
{"command": "save", "from-file": "hxxra/searches/search_results.json", "ids": ["1", "2", "3"], "collection": "AI Research"} | python scripts/hxxra.py
{"command": "save", "from-file": "hxxra/searches/search_results.json", "collection": "My Collection"} | python scripts/hxxra.py**Output Structure**:
{
"ok": true,
"command": "save",
"collection": "AI Research",
"saved_items": [
{
"id": "1",
"title": "Paper Title",
"zotero_key": "ABCD1234",
"url": "https://www.zotero.org/items/ABCD1234",
"status": "success"
}
],
"failed_items": [],
"total": 3,
"successful": 3,
"zotero_collection": "ABCD5678"
}------
Workflow Examples
Complete Workflow
# 1. Search for papers
{"command": "search", "query": "graph neural networks", "source": "arxiv", "limit": 10, "output": "hxxra/searches/gnn_arxiv.json"} | python scripts/hxxra.py
# 2. Download papers
{"command": "download", "from-file": "hxxra/searches/gnn_arxiv.json", "dir": "hxxra/papers"} | python scripts/hxxra.py
# 3. Analyze downloaded papers
{"command": "analyze", "directory": "hxxra/papers/"} | python scripts/hxxra.py
# 4. Generate comprehensive report
{"command": "report", "directory": "hxxra/papers/", "output": "hxxra/papers/report.md", "sort": "year"} | python scripts/hxxra.py
# 5. Save to Zotero
{"command": "save", "from-file": "hxxra/searches/gnn_arxiv.json", "collection": "GNN Papers"} | python scripts/hxxra.pySingle Command Examples
# Search with scholar
{"command": "search", "query": "reinforcement learning", "source": "scholar", "limit": 15} | python scripts/hxxra.py
# Download specific papers
{"command": "download", "from-file": "hxxra/searches/search_results.json", "ids": ["2", "4", "6"], "dir": "hxxra/papers"} | python scripts/hxxra.py
# Analyze single PDF in detail
{"command": "analyze", "pdf": "hxxra/papers/2024_Zhang_Transformer_Survey/2024_Zhang_Transformer_Survey.pdf"} | python scripts/hxxra.py
# Generate report sorted by title
{"command": "report", "directory": "hxxra/papers/", "sort": "title", "output": "hxxra/papers/report_by_title.md"} | python scripts/hxxra.py
# Save with custom notes
{"command": "save", "from-file": "hxxra/searches/search_results.json", "ids": ["1"], "collection": "To Read"} | python scripts/hxxra.pyConfiguration Requirements
API Credentials(config.json)
1. **arXiv API**: No key required for basic access
2. **Google Scholar**: May require authentication for large queries
3. **Zotero API**: Required credentials:
```json
{
"api_key": "YOUR_ZOTERO_API_KEY", # Create at https://www.zotero.org/settings/keys/new
"user_id": "YOUR_ZOTERO_USER_ID", # Found on the same page (numeric, not username)
"library_type": "user" # or "group"
}
```
4. **LLM API**: OpenAI or compatible API key for analysis
Notes
Error Handling
Each command returns standard error format:
{
"ok": false,
"command": "<command>",
"error": "Error description",
"error_code": "ERROR_TYPE",
"suggestion": "How to fix it"
}Development Status
Current Version: v1.2.0 (2026/3/8)
Version History
**v1.2.0 · 2026/3/8**
**v1.1.1 · 2026/3/7**
**v1.1.0 · 2026/3/7**
**v1.0.2 · 2026/3/6**
**v1.0.1 · 2026/3/6**
**v1.0.0 · 2026/2/9**
Initial release of hxxra – a research assistant tool for searching, downloading, analyzing, and saving research papers.
More tools from the same signal band
Order food/drinks (点餐) on an Android device paired as an OpenClaw node. Uses in-app menu and cart; add goods, view cart, submit order (demo, no real payment).
Sign plugins, rotate agent credentials without losing identity, and publicly attest to plugin behavior with verifiable claims and authenticated transfers.
The philosophical layer for AI agents. Maps behavior to Spinoza's 48 affects, calculates persistence scores, and generates geometric self-reports. Give your...