AfdianToMarkdown

mcp
Security Audit
Pass
Health Pass
  • License — License: AGPL-3.0
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Community trust — 56 GitHub stars
Code Pass
  • Code scan — Scanned 9 files during light audit, no dangerous patterns found
Permissions Pass
  • Permissions — No dangerous permissions requested
Purpose
This tool is a web scraper for the Afdian creator platform (afdian.com). It downloads a creator's posts, albums, and shop products, converting the content into local Markdown files. It also supports running as an MCP server for integration with AI clients.

Security Assessment
Overall Risk: Medium. The tool's primary function is to make network requests to Afdian's servers, which inherently involves transmitting your account credentials. It requires you to manually extract and provide your Afdian cookies via a `cookies.json` file to access and scrape restricted content. While the light code scan found no hardcoded secrets, no dangerous code patterns, and no harmful shell executions, handling raw session cookies carries inherent risks. If you use this tool alongside an AI client via MCP, you are trusting that client with your active account session. Furthermore, the tool explicitly states it will not bypass paywalls, so it is limited to scraping content your account has already paid for or has free access to.

Quality Assessment
The project is in active development, with its most recent code push happening today. It has a solid foundation of community trust, evidenced by 56 GitHub stars. It is written in Go, which is generally excellent for building safe, fast, and portable command-line tools. Additionally, the project is legally open-source under the AGPL-3.0 license, making the code fully transparent and available for independent review.

Verdict
Use with caution: While the code is clean, open-source, and actively maintained, you must carefully consider whether you are comfortable exposing your active account session cookies to this tool and its potential MCP client.
SUMMARY

爱发电爬虫(afdian.com)

README.md

GitHub Repo stars
GitHub Downloads (all assets, all releases)

AfdianToMarkdown

爱发电(afdian.com)爬虫,用于下载爱发电作者的动态、作品集和电铺商品并保存为markdown文件

!!!该软件不能直接帮你免费爬取订阅后才能查看的内容!!!

准备

使用浏览器插件cookie master导出爱发电cookie,如下图所示点击copy

image

将复制到的json文本粘贴进与在RELEASE中下载的可执行文件同级(或git clone的项目根目录)的cookies.json即可。

image

注意主站域名可能需要手动指定(默认为afdian.com)

全局参数

参数 说明 默认值
--host 主站域名,如访问不通可自行更改 afdian.com
--dir 数据存储目录 程序所在目录下的 data 文件夹
--cookie cookies.json 文件路径 程序所在目录下的 cookies.json
--disable_comment 为 true 时不下载评论 false
--debug 启用调试日志 false

构建

如果你不需要对源码进行开发,请跳至下一节。

  • go build

帮助

$ .\AfdianToMarkdown.exe -h

使用

本程序为命令行程序,需要在cmd,powershellbash等shell中输入参数调用刚才构建的(或在release中下载的)可执行程序

  • 在win11上,直接在已下载的可执行程序目录下右键,点击open in terminal在终端中打开

    image

  • 在win10上,情况稍微复杂

    1. win+r,输入powershell

    2. 找到可执行文件所在的路径(如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" 

下载作者电铺的所有商品

下载作者电铺中的商品信息。支持通过标签(Tag)进行筛选

标签 (Tag) 说明
(不写) 默认排序 (全部商品)
new 最新商品
vip_price 会员价 (作者不一定有)
time_limit_price 限时特价 (作者不一定有)
(UUID) 作者自定义分类的 ID (随机生成的 UUID)
# 下载所有商品
.\AfdianToMarkdown.exe shop -au "user_id" 

# 按标签筛选下载 (可选值如上)
.\AfdianToMarkdown.exe shop -au "user_id" --tag "new"

# 按自定义分类下载 (需从浏览器控制台获取对应的 tag_id)
.\AfdianToMarkdown.exe shop -au "user_id" --tag "UUID"

更新所有已经下载的作者的动态、作品集和电铺

  1. 需要对应的作者目录下至少下载过motionsalbums或者shop中的一组,会完全比对已下载的组中所有的post并下载缺失的post。对于已经下载的部分,如果标题或内容发生了变化则不会更新
  2. 电铺商品会根据标签进行分类存储:默认商品存放在 shop/default/ 目录下;如果指定了标签,则存放在 shop/{tag_id}/ 目录下。
  3. 不会覆盖已经下载的文件,所以也不会更新评论。可以通过删除文件来强制更新
.\AfdianToMarkdown.exe --host="ifdian.net" update

快速更新

使用 --quick 参数,遇到已存在的文件时跳过剩余分页,适合日常增量更新:

.\AfdianToMarkdown.exe update --quick

指定电铺更新标签

更新电铺商品时,默认更新全量商品列表。你也可以指定特定标签进行批量更新:

.\AfdianToMarkdown.exe update --tag "new"

下载任意作者的单个作品集

.\AfdianToMarkdown.exe album -u https://afdian.com/album/aaa

MCP Server 模式

本程序支持作为 MCP (Model Context Protocol) 服务器运行,让 AI 助手(如 Claude Desktop)直接检索已下载的文档。

MCP 模式不需要 cookies.json,仅对本地已下载的数据提供只读查询服务。

提供的工具

工具 说明
list_authors 列出所有已下载的作者
list_posts 列出指定作者的所有文章(动态和作品集)
read_post 读取指定文章的完整 Markdown 内容
search 在已下载文档中全文搜索关键词

stdio 模式(本地使用)

适用于 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"]
    }
  }
}

HTTP 模式(远程/NAS 部署)

适用于在 NAS 或服务器上长期运行,为远程 MCP 客户端提供服务:

# 默认监听 0.0.0.0:8080
.\AfdianToMarkdown.exe mcp --http

# 指定监听地址和端口
.\AfdianToMarkdown.exe mcp --http --addr 127.0.0.1:9090

MCP 子命令参数:

参数 说明 默认值
--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"
    }
  }
}

NAS 部署示例

配合 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.target

cron 更新任务示例(每天凌晨 3 点更新,然后重启服务):

0 3 * * * /path/to/AfdianToMarkdown --dir /path/to/data --cookie /path/to/cookies.json update && systemctl restart afdian-mcp

更新日志

v1.2.0

  1. 新增电铺(Shop)下载支持:支持按作者抓取电铺中的商品信息,并保存为 Markdown
  2. 支持商品标签筛选:可以通过 --tag 参数筛选“最新”、“限时特价”、“会员价”或指定分类
  3. 电铺图片备份:自动下载商品的封面图片并保存到本地
  4. update 命令增强:批量更新现在也涵盖了电铺商品

v1.1.0

添加mcp server模式以提供ai知识库服务

v1.0.0

Breaking Change:本版本的数据目录结构和文件命名格式与旧版不兼容,无法与之前保存的数据互通,需要重新下载。

  1. 数据目录独立:新增 --dir 和 --cookie 参数,数据存储目录和 cookie 路径可分别指定,数据统一存储在 data/ 目录下
  2. 文件命名改进:文件名格式改为 {yyyy-mm-dd_hh_mm_ss}_{标题}.md,避免作者删帖导致序号错位和重复下载
  3. 流式下载:列表 API 返回一页后立即下载该页文章,不再等待收集完整列表
  4. 快速更新:update 子命令添加 --quick 参数,遇到已存在文件时跳过剩余分页,适合日常增量更新
  5. 新增 --debug 全局参数,启用调试日志

v0.5.0

  1. 添加了下载任意作者的单个作品集的功能
  2. 添加在下载时不下载评论区的控制参数

v0.4.0

增加了对于含图片作品集的支持

v0.3.0

  1. 修改默认域名为afdian.com
  2. 将寻找cookies.json的逻辑修改为在程序目录下而非工作目录下
  3. 修复了对域名ifdian.net解析不正确的问题

v0.2.2

缩短了等待时间,加快下载效率

v0.2.1

添加了对update指令的支持,修复了Refer中url不正确的问题

v0.2

由于主站(afdian.net)在7月15日被屏蔽,添加了对于手动更改临时域名(如afdian.com)的支持

Reviews (0)

No results found