Skip to main content
Xmind0

interviewer

by Xmind0v1.0.0

Nowcoder Interviewer Skill Plugin

Installation guide →
1 skill GitHub

Documentation

# 面试准备助手 (Interview Prep)

<div align="center">

**Claude Code Skill - 智能搜索和抓取面试经验**

[![NPM version](https://img.shields.io/npm/v/interview-prep.svg)](https://www.npmjs.com/package/interview-prep)
[![License](https://img.shields.io/npm/l/interview-prep.svg)](LICENSE)
[![Python](https://img.shields.io/badge/python-3.7+-blue.svg)](https://www.python.org/downloads/)
[![Claude Code](https://img.shields.io/badge/Claude_Code-Skill-green.svg)](https://claude.com/claude-code)

</div>

## 📖 简介

这是一个强大的 **Claude Code Skill**,能够自动搜索面试经验(面经),并批量抓取详细内容。支持智能分析模式和批量导出模式,是面试准备的好帮手!

### ✨ 核心功能

- 🔍 **智能搜索** - 根据关键词自动搜索面经
- 📥 **批量抓取** - 多线程并发抓取,支持断点续传
- 🎯 **智能模式** - 自动分析高频考点和面试问题
- 💾 **多格式导出** - 支持 Markdown、JSON、CSV 三种格式
- 🔄 **断点续传** - 中断后可继续,不会重复抓取
- 🛡️ **反爬虫增强** - 随机延迟、请求头轮换、自动重试
- 📊 **进度追踪** - 实时显示抓取进度和统计信息

## 🚀 快速开始

### 方式一:通过 npm 安装(推荐)✨

```bash
# 1. 全局安装(自动安装 CLI 命令 + Claude Code Skill)
npm install -g interview-prep

# 2. 安装 Python 依赖(系统级安装)
pip install requests beautifulsoup4 lxml tqdm chardet
```

**安装完成后,你可以:**
- ✅ 在终端使用 `interview-prep` 命令
- ✅ 在 Claude Code 中直接使用 Skill(已自动安装到 `~/.claude/skills/interview-prep/`)

**验证安装:**
```bash
# 查看命令帮助
interview-prep --help

# 检查 Skill 是否已安装
ls ~/.claude/skills/interview-prep/
```

### 方式二:通过 Git 克隆

```bash
# 1. 克隆仓库
git clone https://github.com/Xmind0/interview-prep.git

# 2. 进入项目目录
cd interview-prep

# 3. 复制到 Claude Code skills 目录
cp -r skills/interviewer ~/.claude/skills/interview-prep

# 4. 安装 Python 依赖
pip install -r skills/interviewer/scripts/requirements.txt
```

### 方式三:手动安装

```bash
# 1. 下载 ZIP 并解压
unzip interview-prep.zip
cd interview-prep

# 2. 复制文件夹到 skills 目录
cp -r skills/interviewer ~/.claude/skills/interview-prep

# 3. 安装依赖
pip install -r skills/interviewer/scripts/requirements.txt
```

## 📖 使用方法

### 在 Claude Code 中使用

安装完成后,直接在 Claude Code 对话中使用:

```
帮我搜索 Java 后端面经
```

```
批量抓取 Python 面试经验,保存为 CSV 格式
```

```
分析 Go 语言的高频面试题
```

### 命令行使用(npm 安装方式)

如果你通过 npm 全局安装,可以直接使用 `interview-prep` 命令:

```bash
# 搜索并抓取面经
interview-prep -k "Java 面经" -p 2 -o results.md

# 搜索并导出为 JSON
interview-prep -k "Python" -o results.json --format json

# 搜索并导出为 CSV
interview-prep -k "Go 语言" -o results.csv --format csv

# 不记录日志
interview-prep -k "C++ 面经" -o results.md --no-log
```

**注意**:`interview-prep` 命令集成了搜索和抓取功能,一步完成!

### 命令行使用(Git/手动安装方式)

如果你通过 Git 克隆或手动安装,可以直接运行 Python 脚本:

```bash
# 进入脚本目录
cd ~/.claude/skills/interview-prep/scripts

# 搜索面经
python search.py -k "Java 面经" -p 2 -o results.md

# 抓取内容
python scraper.py -i results.md -o interview_posts.md -t 10

# 导出为 JSON
python search.py -k "Python" -o results.json --format json

# 导出为 CSV
python scraper.py -i results.md -o posts.csv --format csv
```

## 🎯 工作模式

### 智能模式(Smart Mode)

适用于需要快速了解面试重点的场景:

1. 搜索相关面经
2. 筛选 5-10 个最相关的链接
3. 抓取内容并深度分析
4. 总结高频考点、具体问题和难度

**示例**:
```
分析 Java 并发编程的面试重点
```

### 批量模式(Batch Mode)

适用于需要保存大量面经原文的场景:

1. 搜索面经
2. 批量抓取所有结果
3. 直接导出,不进行分析

**示例**:
```
批量抓取 C++ 面经,保存为 markdown
```

## 📦 依赖要求

### Python 环境
- Python >= 3.7
- pip 包管理器

### Python 依赖
```
requests >= 2.31.0
beautifulsoup4 >= 4.12.0
lxml >= 4.9.0
tqdm >= 4.65.0
chardet >= 5.0.0
```

安装命令:
```bash
pip install -r requirements.txt
```

## 🔧 高级配置

### 配置文件

在 `scripts/config.json` 中可以自定义配置:

```json
{
  "search": {
    "default_pages": 2,
    "default_format": "md",
    "delay_min": 2,
    "delay_max": 5,
    "timeout": 15
  },
  "scraper": {
    "default_threads": 10,
    "default_format": "md",
    "default_retry": 3,
    "timeout": 20
  }
}
```

### 命令行参数

#### search.py 参数
- `-k, --keywords`: 搜索关键词(支持多个)
- `-p, --pages`: 搜索页数(默认 1)
- `-o, --output`: 输出文件路径
- `--format`: 输出格式 (md/json/csv)
- `--no-log`: 禁用日志文件

#### scraper.py 参数
- `-i, --input`: 输入文件路径
- `-o, --output`: 输出文件路径
- `-t, --threads`: 并发线程数(默认 10)
- `--format`: 输出格式 (md/json/csv)
- `--retry`: 失败重试次数(默认 3)
- `--clear-cache`: 清空缓存重新开始

## 🛡️ 反爬虫机制

本工具内置了多重反爬虫机制:

- ⏱️ **随机延迟**:每次请求间隔 2-5 秒
- 🎭 **UA 轮换**:5 种不同浏览器 User-Agent 随机切换
- 🔄 **自动重试**:失败自动重试,最多 3 次
- ⏸️ **超时控制**:可配置的超时时间

**注意事项**:
- 避免短时间内频繁请求
- 如果遇到验证码,请等待一段时间后再试
- 不要同时运行多个实例

## 📊 输出示例

### Markdown 格式
```markdown
# 网页内容抓取结果

## Java 并发编程面试经验

*作者: 张三 | 发布时间: 2024-01-15*

**URL**: https://www.nowcoder.com/discuss/123456

(这里是抓取的面经内容...)

---
```

### JSON 格式
```json
{
  "metadata": {
    "scraped_at": "2024-01-15 10:30:00",
    "total_count": 50,
    "success_count": 48
  },
  "results": [...]
}
```

## 🐛 故障排查

### 问题 1: 未找到任何结果
- 检查关键词是否正确
- 尝试减少搜索页数
- 查看日志文件了解详细错误

### 问题 2: 大量请求失败
- 检查网络连接
- 可能遇到反爬验证,等待一段时间后再试
- 减少 `--threads` 参数值

### 问题 3: 依赖安装失败
```bash
# 升级 pip
python -m pip install --upgrade pip

# 使用国内镜像源
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
```

## 📝 更新日志

### v2.3.0 (2025-01-24)
- ✨ **添加 CLI 命令行工具** - `interview-prep` 全局命令
- ✨ **自动安装 Skill** - npm install 后自动安装到 Claude Code 目录
- 🔧 跨平台支持(Windows/macOS/Linux)
- 📝 优化安装文档和说明

### v2.2.0 (2025-01-24)
- ✨ 添加 CLI 命令行工具支持
- 📦 添加 `bin/interview-prep.js` 入口文件
- 🔧 优化包结构和配置

### v2.0.0 (2025-01-24)
- ✨ 添加随机延迟和请求头轮换
- ✨ 完善日志记录系统
- ✨ 添加重试机制和断点续传
- ✨ 支持多种导出格式(MD/JSON/CSV)
- ✨ 添加配置文件支持
- ✨ 优化错误处理和 URL 验证
- 📝 完善文档和注释

### v1.0.0 (2024-12-01)
- 🎉 初始版本发布
- ✨ 基础搜索和抓取功能
- ✨ 支持 Markdown 导出

## 🤝 贡献指南

欢迎提交 Issue 和 Pull Request!

1. Fork 本仓库
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 开启 Pull Request

## 📄 开源协议

本项目采用 [MIT License](LICENSE) 开源协议。

## 🙏 致谢

- 感谢各大面试交流平台提供的优质内容
- 感谢 [Claude Code](https://claude.com/claude-code) 提供强大的 AI 辅助工具
- 感谢所有贡献者的支持

## 📮 联系方式

- 作者: buAIqiuzhao
- 邮箱: [email protected]
- GitHub: [https://github.com/Xmind0/interview-prep](https://github.com/Xmind0/interview-prep)

## ⭐ Star History

如果这个项目对你有帮助,请给个 Star 支持一下!

---

<div align="center">

**Made with ❤️ by Claude Code**

[⬆ 返回顶部](#面试准备助手-interview-prep)

</div>