Community코딩 & 개발github.com

pnedfff/dedao-course-to-getnote

Sync authorized Dedao course article URLs to GetNote with deduplication and resumable state

dedao-course-to-getnote란 무엇인가요?

dedao-course-to-getnote is a Codex agent skill that sync authorized Dedao course article URLs to GetNote with deduplication and resumable state.

지원 대상~Claude CodeCodex CLI~Cursor
npx skills add pnedfff/dedao-course-to-getnote

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

得到课程同步到 Get 笔记

把浏览器登录态只用于发现用户有权访问的课程文章网址,把全文提取交给 Get笔记。不要复制课程正文、Cookie、令牌或请求签名到本地文件或对话中。

前提与输出

  • 使用 Codex 浏览器插件连接用户已经登录的 dedao.cn 页面;不要导出 Cookie。
  • 确认 getnote auth status 显示已授权。
  • 输出一份课程清单 JSON、一份同步状态 JSON,以及最终数量汇总。
  • 默认同步当前已发布内容;课程规划中尚未发布的讲次只报告,不伪造网址。

工作流

1. 建立课程清单

  1. 从用户给出的任一课程文章进入课程页或目录。
  2. 读取 浏览器提取说明,再使用当前安装的浏览器控制技能。
  3. 从课程目录数据或浏览器网络响应中只提取安全字段:order_numtitleenid、发布状态和发布时间。
  4. 生成规范网址:https://www.dedao.cn/course/article?id=<enid>
  5. enid 和规范网址去重;排除未发布、非正文、推荐内容、评论和其他课程文章。
  6. 把清单保存为 JSON 文件。默认放在当前任务输出目录;不要放进技能目录。

清单格式:

[
  {
    "order": 1,
    "title": "发刊词:现代精英的思维武器库",
    "enid": "qzk8vQM4oYjrXm1Ao9Xw6bEOLl5GPx",
    "url": "https://www.dedao.cn/course/article?id=qzk8vQM4oYjrXm1Ao9Xw6bEOLl5GPx"
  }
]

先抽查首篇、中段和末篇网址,确认三者都能在当前登录态下打开正确正文。记录课程规划总数与当前已发布数;两者不一致通常表示课程仍在更新。

2. 先预检,不直接写入

运行:

python3 scripts/sync_getnote.py /absolute/path/course-articles.json --dry-run

预检会:

  • 校验网址确属得到课程正文;
  • 合并清单中的重复文章;
  • 用 Get笔记标题搜索,并进一步核对候选笔记的来源网址;
  • 把同网址或标准化后同标题的内容判为已存在。

如果课程在创建本技能前已经同步过、没有同步状态文件,首次迁移使用完整网址扫描:

python3 scripts/sync_getnote.py /absolute/path/course-articles.json --dry-run --url-scan-pages 0

0 会检查全部 Get笔记链接笔记,可能较慢;平时默认只扫描最近 10 页,并用语义候选网址和本地状态共同查重。

向用户报告“已发布、已存在、待新增”三个数字。如果用户只要求计划或数量盘点,到此停止。

3. 批量同步

确认用户要求执行后运行:

python3 scripts/sync_getnote.py /absolute/path/course-articles.json

脚本默认最多三条并发,每个失败项重试一次,并在清单旁写入 <清单名>.sync-state.json。使用同一清单重跑时,会跳过状态文件中已成功或已判重的网址,实现断点续传。

不要把并发调得高于 3。Get笔记的网页提取队列可能较慢;命令仍运行时继续轮询,但每 60 秒内给用户一次简短进度。

4. 核验与收尾

不得把“命令退出码为 0”直接当作全文生成成功。以脚本最终状态为准:它会核对任务状态、笔记 ID、来源网址和已生成内容,并在必要时按标题反查实际落库结果。

完成后对照课程清单汇总:

  • 课程规划总数;
  • 当前已发布数;
  • 已有重复数;
  • 本次新增数;
  • 最终失败数及对应标题;
  • 尚未发布数。

若登录失效,停止并请用户在浏览器中重新登录;不要索要或读取 Cookie 内容。若得到页面结构变化,保留清单与同步状态,从浏览器提取阶段恢复,不要重复写入已成功笔记。

安全边界

  • 只处理用户已购买或本来有权访问的内容。
  • 不绕过付费墙、登录、设备验证或访问控制。
  • 不持久化 CookieAuthorizationdd_article_token、签名参数或完整网络响应。
  • 不把课程全文写入本地中间文件;Get笔记只接收准确网址并自行提取。
  • 不删除或覆盖已有 Get笔记;疑似重复时宁可跳过并报告。

관련 스킬