爱发电(afdian.com)爬虫,用于下载爱发电作者的动态和作品集并保存为markdown文件。
!!!该软件不能直接帮你免费爬取订阅后才能查看的内容!!!
使用浏览器插件cookie master导出爱发电cookie,如下图所示点击copy
将复制到的json文本粘贴进与在RELEASE中下载的可执行文件同级(或git clone的项目根目录)的cookies.json即可。
注意主站域名可能需要手动指定(默认为afdian.com)
| 参数 | 说明 | 默认值 |
|---|---|---|
--host |
主站域名,如访问不通可自行更改 | afdian.com |
--dir |
数据存储目录 | 程序所在目录下的 data 文件夹 |
--cookie |
cookies.json 文件路径 | 程序所在目录下的 cookies.json |
--disable_comment |
为 true 时不下载评论 | false |
--debug |
启用调试日志 | false |
如果你不需要对源码进行开发,请跳至下一节。
- go build
$ .\AfdianToMarkdown.exe -h
本程序为命令行程序,需要在cmd,powershell或bash等shell中输入参数调用刚才构建的(或在release中下载的)可执行程序
-
在win11上,直接在已下载的可执行程序目录下右键,点击
open in terminal或在终端中打开 -
在win10上,情况稍微复杂
-
win+r,输入
powershell -
找到可执行文件所在的路径(如
D:\MyProject\Golang\AfdianToMarkdown\AfdianToMarkdown.exe)输入
cd D:\MyProject\Golang\AfdianToMarkdown
-
后续所有的指令都将在命令行中执行。在windows平台上进行调用时,有如下示例(即AfdianToMarkdown.exe -h):
注:下文提到的user_id为作者主页url的最后一部分,如https://afdian.com/a/user_id/
.\AfdianToMarkdown.exe motions --host="ifdian.net" -au "user_id" .\AfdianToMarkdown.exe albums -au "user_id" - 需要对应的作者目录下具有
motions目录,会完全比对所有已发布的动态和作品集,下载缺失的部分。对于已经下载的部分,如果标题或内容发生了变化则不会更新。 - 不会覆盖已经下载的文件,所以也不会更新评论。可以通过删除文件来强制更新
.\AfdianToMarkdown.exe --host="ifdian.net" update快速更新
使用 --quick 参数,遇到已存在的文件时跳过剩余分页,适合日常增量更新:
.\AfdianToMarkdown.exe update --quick.\AfdianToMarkdown.exe album -u https://afdian.com/album/aaa本程序支持作为 MCP (Model Context Protocol) 服务器运行,让 AI 助手(如 Claude Desktop)直接检索已下载的文档。
MCP 模式不需要 cookies.json,仅对本地已下载的数据提供只读查询服务。
| 工具 | 说明 |
|---|---|
list_authors |
列出所有已下载的作者 |
list_posts |
列出指定作者的所有文章(动态和作品集) |
read_post |
读取指定文章的完整 Markdown 内容 |
search |
在已下载文档中全文搜索关键词 |
适用于 Claude Desktop 等本地 MCP 客户端:
.\AfdianToMarkdown.exe mcp使用 Claude Code 添加:
claude mcp add --transport stdio afdian -- /path/to/AfdianToMarkdown --dir /path/to/data mcp或在 Claude Desktop 的 claude_desktop_config.json 中手动配置:
{
"mcpServers": {
"afdian": {
"command": "/path/to/AfdianToMarkdown",
"args": ["--dir", "/path/to/data", "mcp"]
}
}
}适用于在 NAS 或服务器上长期运行,为远程 MCP 客户端提供服务:
# 默认监听 0.0.0.0:8080
.\AfdianToMarkdown.exe mcp --http
# 指定监听地址和端口
.\AfdianToMarkdown.exe mcp --http --addr 127.0.0.1:9090MCP 子命令参数:
| 参数 | 说明 | 默认值 |
|---|---|---|
--http |
以 HTTP Streamable 模式启动 | false(默认 stdio) |
--addr |
HTTP 监听地址(格式: host:port) |
0.0.0.0:8080 |
使用 Claude Code 添加远程服务器:
claude mcp add --transport http afdian http://<server-ip>:8080/mcp或在 MCP 客户端配置文件中手动配置:
{
"mcpServers": {
"afdian": {
"url": "http://<server-ip>:8080/mcp"
}
}
}配合 cron 定时更新内容,并通过 systemd 管理 MCP 服务:
# /etc/systemd/system/afdian-mcp.service
[Unit]
Description=AfdianToMarkdown MCP Server
After=network.target
[Service]
ExecStart=/path/to/AfdianToMarkdown --dir /path/to/data mcp --http
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.targetcron 更新任务示例(每天凌晨 3 点更新,然后重启服务):
0 3 * * * /path/to/AfdianToMarkdown --dir /path/to/data --cookie /path/to/cookies.json update && systemctl restart afdian-mcp
Breaking Change:本版本的数据目录结构和文件命名格式与旧版不兼容,无法与之前保存的数据互通,需要重新下载。
- 数据目录独立:新增 --dir 和 --cookie 参数,数据存储目录和 cookie 路径可分别指定,数据统一存储在 data/ 目录下
- 文件命名改进:文件名格式改为 {yyyy-mm-dd_hh_mm_ss}_{标题}.md,避免作者删帖导致序号错位和重复下载
- 流式下载:列表 API 返回一页后立即下载该页文章,不再等待收集完整列表
- 快速更新:update 子命令添加 --quick 参数,遇到已存在文件时跳过剩余分页,适合日常增量更新
- 新增 --debug 全局参数,启用调试日志
- 添加了下载任意作者的单个作品集的功能
- 添加在下载时不下载评论区的控制参数
增加了对于含图片作品集的支持
- 修改默认域名为
afdian.com - 将寻找
cookies.json的逻辑修改为在程序目录下而非工作目录下 - 修复了对域名
ifdian.net解析不正确的问题
缩短了等待时间,加快下载效率
添加了对update指令的支持,修复了Refer中url不正确的问题
由于主站(afdian.net)在7月15日被屏蔽,添加了对于手动更改临时域名(如afdian.com)的支持


