book-crawler-mcp
by LiZhuBin
README.md
# Book Crawler MCP
一个自动化的 PDF 书籍爬取和 Gumroad 发布工具,使用 AI 生成商品描述。
## 功能
| 工具 | 描述 |
|------|------|
| `fetch_arxiv_papers` | 从 arXiv 获取学术论文 |
| `fetch_github_repos` | 从 GitHub 获取热门仓库 |
| `download_pdf` | 下载 PDF 文件 |
| `extract_pdf_content` | 提取 PDF 内容和元数据 |
| `generate_gumroad_listing` | 使用 AI 生成 Gumroad 商品描述 |
| `publish_to_gumroad` | 发布商品到 Gumroad |
| `auto_crawl_and_publish` | 一键全自动爬取并发布 |
| `list_gumroad_products` | 查看已发布的商品 |
## 安装
### 1. 克隆并安装依赖
```bash
git clone https://github.com/LiZhuBin/book-crawler-mcp.git
cd book-crawler-mcp
npm install
npm run build
```
### 2. 配置环境变量
复制 `.env.example` 为 `.env` 并填入你的密钥:
```bash
cp .env.example .env
```
```env
# Gumroad API Token
# 获取方式:https://gumroad.com/settings -> Advanced
GUMROAD_ACCESS_TOKEN=your_token_here
# Anthropic API Key (用于 AI 生成商品描述)
# 获取方式:https://console.anthropic.com/settings/keys
ANTHROPIC_API_KEY=your_key_here
```
## 使用
### MCP 配置
在 Claude 的 MCP 配置文件中添加:
```json
{
"mcpServers": {
"book-crawler": {
"command": "npx",
"args": ["book-crawler-mcp"],
"env": {
"GUMROAD_ACCESS_TOKEN": "your_token",
"ANTHROPIC_API_KEY": "your_key"
}
}
}
}
```
### 使用示例
#### 1. 从 arXiv 获取论文
```json
{
"categories": ["cs.AI", "cs.LG", "cs.CL"],
"limit": 10
}
```
#### 2. 下载并提取 PDF 内容
```json
{
"url": "https://arxiv.org/pdf/2301.00001.pdf"
}
```
#### 3. 生成 Gumroad 商品描述
```json
{
"pdfContent": "提取的 PDF 内容...",
"title": "论文标题",
"author": "作者名"
}
```
#### 4. 发布到 Gumroad
```json
{
"name": "商品名称",
"description": "商品描述 (Markdown)",
"price": 1999,
"currency": "USD"
}
```
#### 5. 全自动模式
```json
{
"source": "arxiv",
"categories": ["cs.AI", "cs.LG"],
"autoPublish": true,
"priceRange": {
"min": 999,
"max": 4999
}
}
```
## 工作流程
```
┌─────────────────────────────────────────────────────────────┐
│ 1. fetch_arxiv_papers / fetch_github_repos │
│ → 获取热门资源列表 │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 2. download_pdf │
│ → 下载 PDF 文件到本地 │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 3. extract_pdf_content │
│ → 提取文本内容和元数据 │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 4. generate_gumroad_listing │
│ → AI 生成商品标题、描述、定价 │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 5. publish_to_gumroad │
│ → 上传文件并发布商品 │
└─────────────────────────────────────────────────────────────┘
```
## 开发
```bash
# 安装依赖
npm install
# 开发模式
npm run dev
# 构建
npm run build
# 运行
npm start
```
## 注意事项
1. **版权**: 确保你有权分发爬取的内容
2. **API 限制**: 遵守各平台的 API 调用频率限制
3. **定价责任**: AI 生成的价格仅供参考,请自行判断
## License
MIT
## Links
- [Gumroad API](https://gumroad.com/api)
- [arXiv API](https://arxiv.org/help/api)
- [GitHub API](https://docs.github.com/en/rest)
- [Anthropic API](https://docs.anthropic.com/claude/reference)
TDQS
B3.2/5.0
Scored across 1 tool
Disambiguation5/5
With only one tool, there is no possibility of overlap or confusion between tools. The agent will always select the correct tool.
Naming Consistency5/5
A single tool follows a clear verb_noun pattern (fetch_github_repos), and there are no other tools to introduce inconsistency.
Tool Count2/5
The server has only one tool, which feels insufficient and misaligned with the server name 'book-crawler-mcp'. The tool appears unrelated to book crawling, suggesting poor scoping.
Completeness1/5
The single tool covers only fetching GitHub repos, leaving any book-crawling domain completely uncovered. The surface is severely incomplete.
Maintenance
ActivityInactive
ResponsivenessNo issues