Sandbox
@PigeonDan1/paper_claw

Daily paper digest tool for agents and email

Paper Claw fetches papers, groups them by configurable categories, and writes summaries in your chosen language. It can run locally or on GitHub Actions, and the `skill/` folder lets an agent apply presets and call the same pipeline through a standard tool interface.

36 starsβ€’3 forksβ€’Pythonβ€’Updated 7d ago
Who it's for

Builders who want their agent to collect papers, classify them, and send a digest instead of re-reading arXiv by hand.

What it delivers

You can turn a custom research feed into a daily email digest with summaries and category labels.

What it does

Multi-source paper fetch

Pulls papers from arXiv and supports category selection from `config/arxiv_categories.json`.

LLM-backed summaries

Uses a chosen provider such as DeepSeek, Kimi, OpenAI, Claude, Gemini, or DashScope with fallback handling.

Custom paper classification

Lets you define categories and keywords in `config/default.json` so papers are grouped for your field.

Email digest delivery

Renders HTML and Markdown digests and sends them to configured recipients through SMTP.

Agent skill interface

Provides preset setup, tool schemas, and Python examples in `skill/` for agent workflows.

Language support

Generates digests in multiple languages, including Chinese, English, Japanese, Korean, German, French, and Spanish.

How to get it

  1. 1Local Cron (Linux/Mac)
    # Edit crontab
    crontab -e
    
    # Add line for daily 9 AM run
    0 9 * * * cd /path/to/paper_claw && python scripts/main.py
  2. 2Windows Task Scheduler
    $Action = New-ScheduledTaskAction -Execute "python.exe" -Argument "scripts/main.py"
    $Trigger = New-ScheduledTaskTrigger -Daily -At "09:00"
    Register-ScheduledTask -TaskName "PaperClaw" -Action $Action -Trigger $Trigger
  3. 3Supported: πŸ‡¨πŸ‡³ δΈ­ζ–‡ Β· πŸ‡ΊπŸ‡Έ English Β· πŸ‡―πŸ‡΅ ζ—₯本θͺž Β· πŸ‡°πŸ‡· ν•œκ΅­μ–΄ Β· πŸ‡©πŸ‡ͺ Deutsch Β· πŸ‡«πŸ‡· FranΓ§ais ·…
    # Command line
    python scripts/main.py --language ja  # Japanese
    
    # Or set default in config/default.json
    {"language": {"default": "zh"}}

README

πŸ“° Paper Claw

Intelligent Multi-Source Paper Digest Generator

Python 3.11 License: MIT GitHub Actions Multi-LLM

Fetch, classify, and summarize papers from multiple sources with AI-powered digests

Quick Start Β· Agent Skill Β· ArXiv Categories


πŸ‘₯ Two Paths

Paper Claw serves two types of users:

πŸ§‘β€πŸ’» For Human Users

I want to set up daily paper digests for my research field

β†’ Quick Start Guide

  • Configure your research domain
  • Set up email delivery
  • Choose your LLM provider
  • Run locally or via GitHub Actions

πŸ€– For AI Agents

I want to integrate Paper Claw into my agent workflow

β†’ Agent Skill Guide

  • One-command preset setup for any research field
  • Standardized tool interface
  • One-line Python integration
  • JSON schema definitions
  • Auto-discovery for OpenClaw

System Architecture

Paper Claw System Architecture

Paper Claw fetches from arXiv, classifies with AI, and delivers personalized digests


Example Output

Daily Digest in Your Inbox

Paper Claw Daily Digest Email

Categorized papers with AI summaries, ready to read


πŸ§‘β€πŸ’» For Human Users

Quick Start (5 minutes)

# 1. Clone repository
git clone https://github.com/PigeonDan1/paper_claw.git
cd paper_claw

# 2. Install dependencies
pip install -r requirements.txt

# 3. Configure environment
cp .env.example .env
cp config/recipients.example.json config/recipients.json

# 4. Edit config/default.json to select your research categories
# (See "ArXiv Categories" section below)

# 5. Run
python scripts/main.py --day 2026-03-11

βš™οΈ Configuration Guide

1. Select Your Research Categories

Paper Claw provides 170+ arXiv categories in config/arxiv_categories.json. The default configuration is set for Speech & Audio research, but you can easily customize it for your field.

How to customize:

  1. Open config/arxiv_categories.json to browse available categories
  2. Find your category codes (e.g., cs.CL for NLP, cs.CV for Computer Vision)
  3. Edit config/default.json β†’ sources.arxiv.categories

Example configurations:

// For NLP Research
{
  "sources": {
    "arxiv": {
      "enabled": true,
      "categories": [
        {"id": "cs.CL", "name": "Computation and Language", "url": "https://arxiv.org/list/cs.CL/recent"},
        {"id": "cs.LG", "name": "Machine Learning", "url": "https://arxiv.org/list/cs.LG/recent"}
      ]
    }
  }
}

// For Computer Vision
{
  "sources": {
    "arxiv": {
      "enabled": true,
      "categories": [
        {"id": "cs.CV", "name": "Computer Vision", "url": "https://arxiv.org/list/cs.CV/recent"},
        {"id": "cs.MM", "name": "Multimedia", "url": "https://arxiv.org/list/cs.MM/recent"}
      ]
    }
  }
}

Popular combinations:

FieldCategories
Speech & Audio (Default)cs.SD, eess.AS
AI/MLcs.AI, cs.LG, cs.CL, cs.CV
NLPcs.CL, cs.LG
Computer Visioncs.CV, cs.MM
Computational Biologyq-bio.BM, q-bio.GN, q-bio.NC

2. Set Up Email (SMTP)

Edit .env:

# QQ Mail Example
SMTP_HOST=smtp.qq.com
SMTP_PORT=465
SMTP_USER=your@qq.com
SMTP_PASS=your-auth-code  # Not your password!

# Gmail Example
# SMTP_HOST=smtp.gmail.com
# SMTP_PORT=465
# SMTP_USER=your@gmail.com
# SMTP_PASS=your-app-password

Edit config/recipients.json:

{
  "recipients": [
    {"email": "you@example.com", "name": "Your Name", "enabled": true},
    {"email": "colleague@lab.edu", "name": "Colleague", "enabled": true}
  ]
}

Personalized Greeting: Each recipient will see a personalized greeting in their email:

πŸ‘‹ Your Name, hello! This is PJ's paper assistant bringing you today's academic digest~

The name field is used for this greeting and is displayed in the email header.

3. Configure LLM Provider

Edit .env with at least one API key:

# Option 1: DeepSeek (Recommended for Chinese)
DEEPSEEK_API_KEY=sk-xxx
DEEPSEEK_API_BASE=https://models.sjtu.edu.cn/api/v1  # Optional: custom endpoint

# Option 2: Kimi (Moonshot)
MOONSHOT_API_KEY=sk-xxx

# Option 3: OpenAI
OPENAI_API_KEY=sk-xxx

# Option 4: Claude
ANTHROPIC_API_KEY=sk-xxx

# Option 5: Gemini
GOOGLE_API_KEY=xxx

# Option 6: DashScope (Aliyun)
DASHSCOPE_API_KEY=sk-xxx

Auto-fallback chain: DeepSeek β†’ Kimi β†’ OpenAI β†’ Claude β†’ Gemini β†’ Rule-based

Edit config/default.json to set default:

{
  "llm": {
    "default_provider": "deepseek",
    "providers": {
      "deepseek": {
        "model": "deepseek-v3"
      }
    }
  }
}

4. Customize Paper Classification

Define how papers are categorized in your digest. The default is set for Speech & Audio research:

{
  "classification": {
    "categories": [
      {
        "name": "ASR",
        "labels": {"zh": "θ―­ιŸ³θ―†εˆ«", "en": "Speech Recognition"},
        "keywords": ["asr", "speech recognition", "automatic speech"]
      },
      {
        "name": "TTS",
        "labels": {"zh": "语音合成", "en": "Speech Synthesis"},
        "keywords": ["tts", "text-to-speech", "speech synthesis"]
      }
    ]
  }
}

Structure explained:

  • name: Category ID (used internally)
  • labels: Display names in different languages (zh, en, ja, ko, etc.)
  • keywords: Keywords for automatic classification (case-insensitive matching)

Example for NLP research:

{
  "classification": {
    "categories": [
      {
        "name": "LLM",
        "labels": {"zh": "ε€§θ―­θ¨€ζ¨‘εž‹", "en": "Large Language Models"},
        "keywords": ["llm", "large language model", "gpt", "transformer"]
      },
      {
        "name": "RAG",
        "labels": {"zh": "ζ£€η΄’ε’žεΌΊ", "en": "Retrieval-Augmented Generation"},
        "keywords": ["rag", "retrieval", "knowledge base", "embedding"]
      }
    ]
  }
}

πŸš€ Running Paper Claw

Local (One-time)

# Today's papers (default language from config)
python scripts/main.py

# Specific date with language
python scripts/main.py --day 2026-03-11 --language zh

# Date range
python scripts/main.py --start-date 2026-03-01 --end-date 2026-03-11

# Generate digest without sending email
python scripts/main.py --day 2026-03-11 --no-email

# Preview recipients before sending
python scripts/main.py --day 2026-03-11 --preview

Scheduled (Daily)

GitHub Actions (Recommended):

  1. Fork this repository
  2. Go to Settings β†’ Secrets β†’ Actions
  3. Add secrets: SMTP_HOST, SMTP_USER, SMTP_PASS, DEEPSEEK_API_KEY, etc.
  4. Workflow runs daily at 01:00 UTC (09:00 CST)

Local Cron (Linux/Mac):

# Edit crontab
crontab -e

# Add line for daily 9 AM run
0 9 * * * cd /path/to/paper_claw && python scripts/main.py

Windows Task Scheduler:

$Action = New-ScheduledTaskAction -Execute "python.exe" -Argument "scripts/main.py"
$Trigger = New-ScheduledTaskTrigger -Daily -At "09:00"
Register-ScheduledTask -TaskName "PaperClaw" -Action $Action -Trigger $Trigger

πŸ€– For AI Agents

Paper Claw provides a standardized Skill interface for AI agents (OpenClaw, Kimi, etc.)

🎯 One-Command Setup with Presets

No manual configuration needed! Agents can instantly configure Paper Claw for any research field:

from skill.example import list_presets, apply_preset

# Step 1: Browse available presets
presets = list_presets()
# β†’ [{"id": "nlp", "name": "NLP & LLM"}, 
#    {"id": "computer_vision", "name": "Computer Vision"}, ...]

# Step 2: Apply with one line
apply_preset("nlp")  # Automatically configures arXiv + classification

Available Presets:

PresetResearch FieldArXiv CategoriesPaper Categories
πŸŽ™οΈ speech_audioSpeech & Audiocs.SD, eess.ASSpeech LLM, ASR, TTS...
πŸ“ nlpNLP & LLMcs.CL, cs.LG, cs.AILLM, RAG, Agents...
πŸ‘οΈ computer_visionComputer Visioncs.CV, cs.MMImage Gen, Detection...
🧠 general_aiGeneral AI/MLcs.AI, cs.LG...Deep Learning, RL...

πŸ“Έ Preview

Demo: Email Digest Preview

Paper Claw Email Digest

AI-generated summaries with Chinese translation, organized by category

Quick Integration

from skill.example import fetch_papers, get_digest_content

# Fetch and summarize papers
result = fetch_papers(day="2026-03-11", language="zh")
content = get_digest_content("2026-03-11", format="summary")

Available Tools

ToolPurposeParameters
list_presetsList available presets-
apply_presetApply preset configurationpreset_id
preview_presetPreview preset without applyingpreset_id
fetch_papersFetch from configured sourcesday, language
configure_sourcesUpdate arXiv categoriessources
configure_categoriesUpdate classificationcategories
configure_recipientsUpdate email listrecipients
configure_languageSet output languagelanguage
get_digest_contentRetrieve generated digestdate, format
send_digestSend email digestdate

Agent Configuration

{
  "skill": "paper_claw",
  "version": "2.0.0",
  "config": {
    "preset": "nlp",
    "language": "zh",
    "llm": "deepseek"
  }
}

Skill Documentation

πŸ“– skill/SKILL.md β€” Full integration guide
πŸ”§ skill/tools.json β€” Tool schema definitions
πŸ’‘ skill/example.py β€” Python usage examples
πŸ“‹ skill/_meta.json β€” Agent metadata


πŸ“š ArXiv Categories

We provide 170+ arXiv subject categories in config/arxiv_categories.json.

Major Categories

CodeNameDescription
csComputer ScienceAI, ML, NLP, CV, etc.
eessElectrical EngineeringSignal Processing, Audio
physicsPhysicsOptics, etc.
q-bioQuantitative BiologyGenomics, etc.
q-finQuantitative FinanceRisk, Portfolio
statStatisticsML, Methodology
mathMathematicsTheory

Adding Categories

  1. Open config/arxiv_categories.json
  2. Find your category code (e.g., cs.CL)
  3. Add to config/default.json:
{
  "sources": {
    "arxiv": {
      "categories": [
        {"id": "cs.CL", "name": "Computation and Language", "url": "https://arxiv.org/list/cs.CL/recent"}
      ]
    }
  }
}

πŸ—£οΈ Languages

Supported: πŸ‡¨πŸ‡³ δΈ­ζ–‡ Β· πŸ‡ΊπŸ‡Έ English Β· πŸ‡―πŸ‡΅ ζ—₯本θͺž Β· πŸ‡°πŸ‡· ν•œκ΅­μ–΄ Β· πŸ‡©πŸ‡ͺ Deutsch Β· πŸ‡«πŸ‡· FranΓ§ais Β· πŸ‡ͺπŸ‡Έ EspaΓ±ol

# Command line
python scripts/main.py --language ja  # Japanese

# Or set default in config/default.json
{"language": {"default": "zh"}}

πŸ“ Project Structure

paper_claw/
β”œβ”€β”€ config/
β”‚   β”œβ”€β”€ default.json              # Main configuration
β”‚   β”œβ”€β”€ arxiv_categories.json     # 170+ available categories
β”‚   └── recipients.json           # Email recipients (git-ignored)
β”œβ”€β”€ skill/                        # πŸ€– Agent Skill interface
β”‚   β”œβ”€β”€ SKILL.md                  # Agent integration guide
β”‚   β”œβ”€β”€ tools.json                # Tool schema
β”‚   └── example.py                # Usage examples
β”œβ”€β”€ scripts/
β”‚   β”œβ”€β”€ main.py                   # Entry point
β”‚   β”œβ”€β”€ llm_client.py             # Multi-LLM client
β”‚   └── process_papers.py         # Classification & summarization
β”œβ”€β”€ templates/
β”‚   └── email_template.html.j2    # Email HTML template
└── content/posts/                # Generated digests

πŸ“ Changelog

v2.1.0 (2026-03-17)

New Features:

  • --no-email flag: Generate digest locally without sending emails
  • --preview flag: Preview recipient list before sending
  • Personalized email greetings using recipient names

Bug Fixes:

  • Fixed LLM batch processing return value bug that could cause empty results
  • Improved API error handling and logging

πŸ—ΊοΈ Roadmap

  • arXiv integration (170+ categories)
  • Multi-LLM support (DeepSeek, Kimi, OpenAI, Claude, Gemini)
  • Multi-language support (7 languages)
  • Email delivery with HTML + Markdown
  • Agent Skill interface (OpenClaw compatible)
  • CNKI (ηŸ₯网) integration
  • Web UI
  • RSS feed export

πŸ“„ License

MIT License Β© 2026 Paper Claw Contributors


⭐ Star this repo if you find it helpful!

Files in the repo

Repository payloadβ€’19 top-level entries
  • .github
  • assets
  • config
  • content
  • data
  • examples
  • scripts
  • skill
  • templates
  • .env.example
  • .gitattributes
  • .gitignore
  • CHANGELOG.md
  • CODE_OF_CONDUCT.md
  • CONTRIBUTING.md
  • LICENSE
  • README_CN.md
  • README.md
  • requirements.txt

Discussion (0)

Ask about usage, or say what you built with it

Sign in to join the discussion.

No comments yet. Be the first to say what this is good for.

More tools

MemPalace/
mempalace

The best-benchmarked open-source AI memory system. And it's free.

59k

Never stop coding. Free MIT AI gateway: one endpoint, 352 providers (150+ free), 1200+ models Kimi, Claude, GPT, Gemini, GLM, DeepSeek, MiniMax. Works with Claude Code, Codex, Cursor, OpenCode, Cline & Copilot. Quota-aware auto-fallback, RTK+Caveman compression saves 15-95% tokens, MCP/A2A, Desktop/PWA. Built by 550+ contributors

64k
headroomlabs-ai/
headroom

Compress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.

71k
virgiliojr94/
book-to-skill

Turn any technical book PDF into a Claude Code skill β€” ready to study, reference, and use while you work.

30k
sickn33/
agentic-awesome-skills

AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and planning, backed by 2,115+ agentic skills. Includes CLI, local MCP, catalog, plugins, and Workbench.

46k
iOfficeAI/
OfficeCLI

OfficeCLI is the first and best Office suite purpose-built for AI agents to read, edit, and automate Word, Excel, and PowerPoint files. Free, open-source, single binary, no Office installation required.

30k