
Media Crawler
- 1 installs
- 6 repo stars
- Updated March 11, 2026
- excalibur9527/mediacrawler-skill
Collects public content from Chinese social platforms (Xiaohongshu, Douyin, Kuaishou, Bilibili, Weibo, Tieba, Zhihu) via the MediaCrawler CLI or WebUI.
About
Installs and runs MediaCrawler to scrape public posts, comments, and creator pages by keyword or ID across seven platforms, with login caching and multiple storage backends. A developer uses it to gather public social-media data for analysis or research.
- Keyword, post-ID, and creator collection with comment scraping
- Multiple storage formats (CSV, JSON, Excel, SQLite, MySQL, MongoDB) and a WebUI
Media Crawler by the numbers
- 1 all-time installs (skills.sh)
- Ranked #1,983 of 2,715 Automation & Workflows skills by installs in the Skillselion catalog
- Data as of Aug 4, 2026 (Skillselion catalog sync)
npx skills add https://github.com/excalibur9527/mediacrawler-skill --skill media-crawlerAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 1 |
|---|---|
| repo stars | ★ 6 |
| Last updated | March 11, 2026 |
| Repository | excalibur9527/mediacrawler-skill ↗ |
What it does
Collects public content from Chinese social platforms (Xiaohongshu, Douyin, Kuaishou, Bilibili, Weibo, Tieba, Zhihu) via the MediaCrawler CLI or WebUI.
Files
MediaCrawler
基于 MediaCrawler 的多平台公开信息采集工具。
支持平台
- 小红书(xhs)
- 抖音(dy)
- 快手(ks)
- B站(bili)
- 微博(wb)
- 贴吧(tieba)
- 知乎(zhihu)
功能特性
- 自动安装依赖
- 关键词搜索采集
- 指定帖子/内容 ID 采集
- 创作者主页采集
- 评论/二级评论抓取
- 登录态缓存
- WebUI 可视化操作
- 多种数据存储(CSV, JSON, JSONL, Excel, SQLite, MySQL, MongoDB)
- 结果文件快速定位
Usage
安装环境
bash scripts/setup.sh查看帮助
cd "$PROJECT_PATH"
uv run main.py --help运行采集
小红书 - 关键词搜索
uv run main.py --platform xhs --lt qrcode --type search --keywords "护肤" --headless false抖音 - 关键词搜索
uv run main.py --platform dy --lt qrcode --type search --keywords "护肤" --headless false指定帖子详情抓取
uv run main.py --platform xhs --lt qrcode --type detail --specified_id "帖子ID1,帖子ID2"创作者主页抓取
uv run main.py --platform xhs --lt qrcode --type creator --creator_id "创作者ID1"启动 WebUI
uv run uvicorn api.main:app --port 8080 --reload启动后访问:
http://127.0.0.1:8080数据存储
根据 config/base_config.py 中:
SAVE_DATA_OPTION = "jsonl"
SAVE_DATA_PATH = ""默认结果保存到:
data/{平台}/{存储格式}/例如抖音 JSONL:
data/douyin/jsonl/search_contents_YYYY-MM-DD.jsonl
data/douyin/jsonl/search_comments_YYYY-MM-DD.jsonl
data/douyin/jsonl/search_creators_YYYY-MM-DD.jsonl例如小红书 JSONL:
data/xiaohongshu/jsonl/search_contents_YYYY-MM-DD.jsonl
data/xiaohongshu/jsonl/search_comments_YYYY-MM-DD.jsonl如果你设置了:
--save_data_path "/your/custom/path"则结果会写入你指定的目录。
快速查看结果
bash scripts/show_results.sh该脚本会列出当前项目下 data/ 目录中的结果文件。
前置依赖
- Git
- uv(脚本可自动安装)
- Playwright 浏览器驱动(脚本自动安装 Chromium)
注意事项
- 仅供学习和研究使用
- 禁止用于非法用途或侵犯他人合法权益
- 禁止用于商业化违规爬取
- 执行前应确认目标行为合法合规
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
<component name="InspectionProjectProfileManager">
<settings>
<option name="USE_PROJECT_PROFILE" value="false" />
<version value="1.0" />
</settings>
</component><?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="jdk" jdkName="Python 3.9" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module><?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Black">
<option name="sdkName" value="Python 3.9" />
</component>
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.9" project-jdk-type="Python SDK" />
</project><?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/mediacrawler-skill.iml" filepath="$PROJECT_DIR$/.idea/mediacrawler-skill.iml" />
</modules>
</component>
</project><?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>{
"id": "mediacrawler-automation",
"name": "MediaCrawler Automation",
"version": "0.1.4",
"description": "基于 MediaCrawler 的多平台公开信息采集工具,支持自动检测环境、拉取仓库、安装 uv 依赖、Playwright、WebUI 与结果定位。",
"author": "ZhouGuang",
"repository": "https://github.com/NanmiCoder/MediaCrawler.git",
"type": "terminal",
"category": "Data Collection",
"entrypoint": "scripts/setup.sh",
"commands": {
"crawler-init": "bash scripts/setup.sh",
"crawler-help": "uv run main.py --help",
"crawler-run": "uv run main.py",
"crawler-web": "uv run uvicorn api.main:app --port 8080 --reload",
"crawler-dy-search": "uv run main.py --platform dy --lt qrcode --type search --headless false",
"crawler-xhs-search": "uv run main.py --platform xhs --lt qrcode --type search --headless false",
"crawler-results": "bash scripts/show_results.sh"
},
"env": {
"PROJECT_PATH": "$HOME/MediaCrawler"
}
}
MediaCrawler Automation
基于 MediaCrawler 的多平台公开信息采集 skill,支持自动安装、命令行运行、WebUI、常用任务模板和结果定位。
这个 skill 做什么
- 自动检测
git - 自动检测并安装
uv - 从 GitHub 拉取或更新 MediaCrawler 项目
- 执行
uv sync - 安装 Playwright Chromium
- 执行一次健康检查,确认主程序可以启动
- 提供常用搜索命令模板
- 提供 WebUI 启动命令
- 提供结果文件定位命令
默认项目目录
默认安装到:
$HOME/MediaCrawler也可以通过环境变量覆盖:
PROJECT_PATH=/your/path/to/MediaCrawler
bash scripts/setup.sh安装
bash scripts/setup.sh安装脚本行为
脚本会依次执行:
1. 检查 git 2. 检查 uv,若缺失则尝试自动安装 3. 克隆项目;若目录已存在且是正确仓库,则执行 git pull --ff-only 4. 执行 uv sync(失败时自动重试一次) 5. 安装 Playwright Chromium 6. 执行 uv run main.py --help 做健康检查
使用方法
查看帮助
cd "$PROJECT_PATH"
uv run main.py --help运行主程序
cd "$PROJECT_PATH"
uv run main.py启动 WebUI
cd "$PROJECT_PATH"
uv run uvicorn api.main:app --port 8080 --reload启动后访问:
http://127.0.0.1:8080抖音关键词搜索示例
cd "$PROJECT_PATH"
uv run main.py --platform dy --lt qrcode --type search --keywords "护肤" --headless false小红书关键词搜索示例
cd "$PROJECT_PATH"
uv run main.py --platform xhs --lt qrcode --type search --keywords "护肤" --headless false结果文件位置
当 SAVE_DATA_OPTION = "jsonl" 且 SAVE_DATA_PATH = "" 时,结果默认保存到:
data/{平台}/{存储格式}/例如抖音:
data/douyin/jsonl/search_contents_YYYY-MM-DD.jsonl
data/douyin/jsonl/search_comments_YYYY-MM-DD.jsonl
data/douyin/jsonl/search_creators_YYYY-MM-DD.jsonl例如小红书:
data/xiaohongshu/jsonl/search_contents_YYYY-MM-DD.jsonl
data/xiaohongshu/jsonl/search_comments_YYYY-MM-DD.jsonl也可以通过:
--save_data_path "/your/custom/path"指定自定义输出目录。
预定义命令
| 命令 | 说明 |
|---|---|
crawler-init | 初始化环境(检查环境、拉取仓库、安装依赖、安装浏览器) |
crawler-help | 查看主程序帮助 |
crawler-run | 运行主程序 |
crawler-web | 启动 WebUI(默认端口 8080) |
crawler-dy-search | 抖音关键词搜索模板(二维码登录,有头模式) |
crawler-xhs-search | 小红书关键词搜索模板(二维码登录,有头模式) |
crawler-results | 查看当前结果文件列表 |
合规声明
- 仅供学习和研究使用
- 禁止用于非法用途或侵犯他人合法权益
- 执行前请确认目标行为合法合规
#!/usr/bin/env bash
set -euo pipefail
REPO_URL="https://github.com/NanmiCoder/MediaCrawler.git"
PROJECT_DIR="${PROJECT_PATH:-$HOME/MediaCrawler}"
PROJECT_DIR="${PROJECT_DIR/#\~/$HOME}"
export UV_HTTP_TIMEOUT="${UV_HTTP_TIMEOUT:-120}"
log() {
echo "[MediaCrawler Skill] $*"
}
fail() {
echo "[MediaCrawler Skill] ERROR: $*" >&2
exit 1
}
log "[1/6] 检查 git ..."
command -v git >/dev/null 2>&1 || fail "未检测到 git,请先安装 git。"
log "[2/6] 检查 uv ..."
if ! command -v uv >/dev/null 2>&1; then
log "未检测到 uv,开始自动安装..."
command -v curl >/dev/null 2>&1 || fail "安装 uv 需要 curl,请先安装 curl。"
curl -LsSf https://astral.sh/uv/install.sh | sh
export PATH="$HOME/.local/bin:$PATH"
command -v uv >/dev/null 2>&1 || fail "uv 安装完成,但当前 shell 仍无法找到 uv。"
fi
log "[3/6] 准备项目目录: $PROJECT_DIR"
if [ -d "$PROJECT_DIR" ]; then
if [ -d "$PROJECT_DIR/.git" ]; then
REMOTE_URL="$(git -C "$PROJECT_DIR" remote get-url origin 2>/dev/null || true)"
echo "$REMOTE_URL" | grep -q "NanmiCoder/MediaCrawler" || fail "目录已存在,但不是目标仓库: $PROJECT_DIR"
log "检测到已有 MediaCrawler 仓库,尝试更新..."
git -C "$PROJECT_DIR" pull --ff-only || fail "git pull 失败,请检查本地改动或网络。"
else
fail "目录已存在但不是 git 仓库: $PROJECT_DIR"
fi
else
log "开始克隆项目..."
git clone "$REPO_URL" "$PROJECT_DIR" || fail "git clone 失败,请检查网络或仓库地址。"
fi
cd "$PROJECT_DIR"
[ -f "pyproject.toml" ] || fail "未找到 pyproject.toml,项目结构异常。"
[ -f "main.py" ] || fail "未找到 main.py,项目结构异常。"
log "[4/6] 使用 uv 同步依赖 ..."
if ! uv sync; then
log "首次 uv sync 失败,重试一次..."
uv sync || fail "uv sync 执行失败。"
fi
log "[5/6] 安装 Playwright Chromium ..."
uv run playwright install chromium || fail "Playwright Chromium 安装失败。"
log "[6/6] 执行健康检查 ..."
uv run main.py --help >/dev/null || fail "健康检查失败:无法执行 'uv run main.py --help'。"
log "安装完成。"
log "项目目录: $PROJECT_DIR"
log "帮助命令: cd \"$PROJECT_DIR\" && uv run main.py --help"
log "默认结果目录: $PROJECT_DIR/data"
log "例如抖音 JSONL 结果通常位于: $PROJECT_DIR/data/douyin/jsonl"
#!/usr/bin/env bash
set -euo pipefail
PROJECT_DIR="${PROJECT_PATH:-$HOME/MediaCrawler}"
PROJECT_DIR="${PROJECT_DIR/#\~/$HOME}"
DATA_DIR="$PROJECT_DIR/data"
if [ ! -d "$DATA_DIR" ]; then
echo "未找到结果目录: $DATA_DIR"
echo "请先运行爬取任务。"
exit 1
fi
echo "MediaCrawler 结果文件:"
find "$DATA_DIR" -maxdepth 3 -type f | sort | sed -n '1,200p'