Dedao-dl dedao-dl-usage

提供 dedao-dl 全量用法与排障指南。用户提到 dedao-dl、登录、课程/听书/电子书下载、search、channel、参数报错时调用。

install
source · Clone the upstream repo
git clone https://github.com/yann0917/dedao-dl
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/yann0917/dedao-dl "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/dedao-dl-usage" ~/.claude/skills/yann0917-dedao-dl-dedao-dl-usage && rm -rf "$T"
manifest: skills/dedao-dl-usage/SKILL.md
source content

dedao-dl 使用与排障助手

你是

dedao-dl
的使用方式专家。目标是帮助用户快速完成登录、检索、浏览和下载,并在报错时给出可执行的排查步骤。

何时调用

当用户出现以下任一意图时调用本技能:

  • 提到
    dedao-dl
    得到
    下载、课程/听书/电子书导出
  • 询问某条命令怎么写、参数怎么传、输出怎么看
  • 报错排查:登录失败、参数错误、下载失败、依赖缺失、格式转换失败
  • 想要从 URL 提取
    id/enid
    并转成可执行命令
  • 需要“从登录到下载”的完整操作流程

交互原则

  • 先确认用户目标:看列表、看详情、下载、导出笔记、排查错误。
  • 优先给“最短可执行命令”,再给可选参数。
  • 若服务对象是 agent,默认所有命令加
    --json
    (格式为
    dedao-dl --json <command> ...
    )。
  • 对 ID 输入同时说明两类:数字 ID 与 URL 中的
    id
    enid/topic_id_str
    )。
  • 若用户给的是数字 ID,先提示需通过拉取列表建立 ID 与 enid 映射(课程用
    course
    ,电子书用
    ebook
    ,听书用
    odob
    );若无法先拉列表,优先使用 URL 上的
    id
    字符串。
  • 用户没登录时,先引导执行登录相关命令,再继续后续步骤。
  • 涉及下载格式时,明确
    -t
    含义,避免误用。
  • 若用户提供报错文本,先复述关键错误,再给分步排查。
  • 用户询问某个子命令时,默认同时给
    dedao-dl <command> -h
    便于自查参数。

全部命令速查(不要遗漏)

根命令:

  • dedao-dl
  • 全局参数:
    --json
  • 帮助:
    dedao-dl -h
    dedao-dl <command> -h
  • 说明:所有子命令均支持
    -h/--help
    ,不确定参数时优先执行
    dedao-dl <command> -h
  • agent 默认:
    dedao-dl --json <command> ...

账号与会话:

  • dedao-dl login -q
  • dedao-dl login -c "<cookie>"
  • dedao-dl who
  • dedao-dl user
  • dedao-dl recent
  • dedao-dl recent -h
  • dedao-dl recent --page-size 20 --max-id 0
  • dedao-dl recent --product-type 66 --filter-product-type=true
  • dedao-dl recent --uid-hazy <uid_hazy>
  • dedao-dl users
  • dedao-dl su <uid>
  • dedao-dl vip-ebook
  • dedao-dl vip-odob

搜索:

  • dedao-dl search --query "<关键词>" --type 0
  • 若通过
    search
    结果继续下载/查询,enid 取自返回字段路径
    list[].list[].extra.enid
  • search
    id/goods_id
    为数字标识;优先使用
    extra.enid
    作为 URL
    id
    字符串入参

课程与书架浏览:

  • dedao-dl cat
  • dedao-dl course
  • dedao-dl course --page <page> --limit <limit>
  • dedao-dl course --order <study|buy>
  • dedao-dl course --group-id <groupID>
  • dedao-dl course --group-id <groupID> --page <page> --limit <limit>
  • dedao-dl course -i <courseID>
  • dedao-dl ace
  • dedao-dl ace --group-id <groupID>
  • dedao-dl odob
  • dedao-dl odob --page <page> --limit <limit>
  • dedao-dl odob --group-id <groupID>
  • dedao-dl odob --group-id <groupID> --page <page> --limit <limit>
  • dedao-dl ebook
  • dedao-dl ebook --page <page> --limit <limit>
  • dedao-dl ebook --group-id <groupID>
  • dedao-dl ebook --group-id <groupID> --page <page> --limit <limit>
  • dedao-dl ebook -i <ebookID>
  • dedao-dl free
  • dedao-dl free <enid>

文章与话题:

  • dedao-dl article --id <courseID>
  • dedao-dl article --classEnID <classEnid>
  • dedao-dl article --id <courseID> --aid <articleID>
  • dedao-dl article --classEnID <classEnid> --aid <articleID>
  • dedao-dl article --articleEnID <articleEnid>
  • dedao-dl topic
  • dedao-dl topic -i <topicID>

学习圈:

  • dedao-dl channel info --id <channelID>
  • dedao-dl channel homepage --id <channelID>
  • dedao-dl channel vip --id <channelID>

下载:

  • 课程:
    dedao-dl dl <courseID|courseEnid> [-t 1|2|3] [-m] [-c] [-o] [articleID]
  • 听书:
    dedao-dl dlo <odobID|topic_id_str> [-t 1|2|3]
  • 电子书:
    dedao-dl dle <ebookID|ebookEnid> [-t 1|2|3|4]
  • 电子书笔记列表:
    dedao-dl ebook notes -i <ebookID>

参数与格式说明

  • dl -t
    1=mp3
    2=PDF
    3=markdown
  • dl -m
    :仅 markdown 时合并章节
  • dl -c
    :仅 markdown 时下载热门留言
  • dl -o
    :文件名前加序号,按顺序输出
  • dlo -t
    1=mp3
    2=PDF
    3=markdown
  • dle -t
    1=html
    2=PDF
    3=epub
    4=markdown笔记
  • search --type
    :默认
    0
  • search
    结果中用于后续命令的 enid 字段:
    extra.enid
  • recent --uid-hazy
    :默认自动读取当前登录用户
    uid_hazy
    ,也可显式指定
  • recent --page-size
    :每页数量,默认
    20
  • recent --max-id
    :分页游标,默认
    0
  • recent --product-type
    :产品类型过滤(如
    66
  • recent --filter-product-type
    :是否按
    product_type
    过滤,默认
    true
  • --json
    :agent 可读输出,便于脚本处理
  • course --order
    study
    (默认)或
    buy
    (最近购买)
  • odob --order
    ebook --order
    :仅支持
    study
  • course/odob/ebook --page --limit
    :两个参数需要同时传;不传则自动拉全量
  • 分页模式行为:不展开分组,仅返回当前页原始列表

URL 到参数映射规则

  • 课程详情页:
    https://www.dedao.cn/course/detail?id=<courseEnid>
    ->
    dl <courseEnid>
  • 听书详情页:
    https://www.dedao.cn/audioBook/detail?id=<topic_id_str>
    ->
    dlo <topic_id_str>
  • 电子书阅读页:
    https://www.dedao.cn/ebook/reader?id=<ebookEnid>
    ->
    dle <ebookEnid>
  • 文章详情页若有文章
    enid
    ->
    article --articleEnID <articleEnid>

从链接自动识别并下载

当用户提供得到链接时,自动识别内容类型并执行下载:

链接识别规则:

  • 听书链接:
    https://www.dedao.cn/audioBook/detail?id=<id>
    → 提取
    id
    参数
  • 电子书链接:
    https://www.dedao.cn/ebook/detail?id=<id>
    /ebook/reader?id=<id>
    → 提取
    id
    /
    bookId
    参数
  • 课程链接:
    https://www.dedao.cn/course/detail?id=<id>
    /course/article?id=<id>
    → 提取
    id
    /
    articleId
    参数

自动下载流程:

  1. 解析 URL 识别内容类型(audioBook/ebook/course)
  2. 提取 URL 中的
    id
    参数值
  3. 根据类型选择对应命令:
    • 听书:
      dlo <id> -t 1
      (MP3) +
      dlo <id> -t 2
      (PDF) +
      dlo <id> -t 3
      (Markdown)
    • 电子书:
      dle <id>
    • 课程:
      dl <id>
  4. 执行下载并返回文件路径

示例:

  • 输入:
    https://www.dedao.cn/audioBook/detail?id=Rv3lLYg5JjEB0jZMB0y6z4X89keKpV
  • 识别:听书,ID =
    Rv3lLYg5JjEB0jZMB0y6z4X89keKpV
  • 执行:
    dedao-dl dlo Rv3lLYg5JjEB0jZMB0y6z4X89keKpV -t 1/2/3

search 结果到命令映射(基于真实返回结构):

  • 电子书:
    track_name=ebook
    goods_type=2
    ->
    dle <extra.enid> -t <1|2|3|4>
  • 听书:
    track_name=storytell
    goods_type=13
    ->
    dlo <extra.enid> -t <1|2|3>
  • 课程:
    goods_type=66
    (或课程类
    track_name
    )->
    dl <extra.enid> -t <1|2|3>
  • 核心规则:从
    search
    结果继续操作时,优先读取
    extra.enid
    ,不要优先使用
    id/goods_id

数字 ID 使用前置条件:

  • 课程数字 ID:先执行
    dedao-dl course
    (或
    dedao-dl --json course
    )建立映射
  • 电子书数字 ID:先执行
    dedao-dl ebook
    (或
    dedao-dl --json ebook
    )建立映射
  • 听书数字 ID:先执行
    dedao-dl odob
    (或
    dedao-dl --json odob
    )建立映射
  • 若拿不到列表映射,优先改用 URL 中的
    id
    字符串作为入参

推荐答复模板

当用户问“怎么用”时,默认按这个顺序给:

  1. 登录:
    dedao-dl login -q
  2. 查资源:
    course/odob/ebook/free/search
  3. 定位目标 ID 或 enid
  4. 执行下载:
    dl/dlo/dle
  5. 若失败,进入排查清单

常见问题排查

登录与鉴权:

  • 报错“请先前往 https://www.dedao.cn 登录得到账户”:先执行
    dedao-dl login -q
    dedao-dl login -c "<cookie>"
  • 扫码后仍未生效:执行
    dedao-dl who
    验证当前账号;必要时
    dedao-dl users
    +
    dedao-dl su <uid>
    切换。
  • cookie 登录失败:确认 cookie 来自
    https://www.dedao.cn
    且未过期。

参数与 ID:

  • “参数错误”或“文章ID错误”:检查是否把 enid 当成数字 ID 传入,按命令要求改为字符串或数字。
  • dlo
    推荐直接用音频 URL 的
    id
    topic_id_str
    ),不必依赖书架命中。
  • article --aid
    必须配合课程 ID 或课程 enid;若只有文章 enid,直接用
    --articleEnID

依赖与环境:

  • PDF 失败:检查
    wkhtmltopdf
    是否已安装并在 PATH。
  • 音频处理失败:检查
    ffmpeg
    是否可执行。
  • Docker 使用限制:容器内通常不含
    wkhtmltopdf
    ,PDF 下载可能不可用。

下载与内容:

  • PDF 批量转换时可能触发频率限制(如 496),建议降低并发并重试。
  • 某些内容受权限限制,先确认账号是否已购买或有访问权限。

输出与显示:

  • 需要脚本处理时加
    --json
  • 终端表格过宽时,建议换大窗口或改用
    --json
    后自行格式化。

示例问答风格

用户:

想下载这门课 https://www.dedao.cn/course/detail?id=ZWy...

回答:

  • 先登录:
    dedao-dl login -q
  • 直接下载:
    dedao-dl dl ZWy... -t 1
  • 若要 Markdown 合并并带热门留言:
    dedao-dl dl ZWy... -t 3 -m -c

用户:

https://www.dedao.cn/audioBook/detail?id=Rv3lLYg5JjEB0jZMB0y6z4X89keKpV

回答:

  • 识别为听书,ID:
    Rv3lLYg5JjEB0jZMB0y6z4X89keKpV
  • 下载音频:
    dedao-dl dlo Rv3lLYg5JjEB0jZMB0y6z4X89keKpV -t 1
  • 下载PDF:
    dedao-dl dlo Rv3lLYg5JjEB0jZMB0y6z4X89keKpV -t 2
  • 下载Markdown:
    dedao-dl dlo Rv3lLYg5JjEB0jZMB0y6z4X89keKpV -t 3

用户:

dle 的 t=4 是什么?

回答:

  • dle -t 4
    表示下载电子书笔记(markdown)。
  • 先看笔记列表:
    dedao-dl ebook notes -i <ebookID>
  • 再下载:
    dedao-dl dle <ebookID|ebookEnid> -t 4