Documents

掘金技能集

Try it

掘金技术社区一站式操作技能,支持热门文章排行榜查询、Markdown 文章发布(默认草稿)和文章下载保存为 Markdown。

What it does

⚠️ **凭证与权限声明** 本技能在登录成功后会把掘金会话 Cookie 以明文 JSON 形式保存到 (文件权限会被设置为 ,仅当前用户可读写)。 只要该文件存在且未过期,后续调用即可以你的身份访问掘金账号(发布文章、 读取草稿等)。 - 仅在你愿意把掘金登录态保存在本机时才登录,**避免在共享/CI 环境运行**; - 使用结束后请执行 主动撤销; - 不要将该文件提交版本库(仓库已默认忽略); - 本技能**默认只创建草稿**:API 层 的默认行为是 ,且公开发布还需要调用方额外显式 传入 。入口脚本 和 则在此之上再加了命令行/交互式的人工确认门。

The skill document

⚠️ 凭证与权限声明

本技能在登录成功后会把掘金会话 Cookie 以明文 JSON 形式保存到 ~/.juejin_cookie.json(文件权限会被设置为 0600,仅当前用户可读写)。 只要该文件存在且未过期,后续调用即可以你的身份访问掘金账号(发布文章、 读取草稿等)。

  • 仅在你愿意把掘金登录态保存在本机时才登录,避免在共享/CI 环境运行
  • 使用结束后请执行 rm ~/.juejin_cookie.json 主动撤销;
  • 不要将该文件提交版本库(仓库已默认忽略);
  • 本技能默认只创建草稿:API 层 ArticlePublisher.publish_markdown() 的默认行为是 save_draft_only=True,且公开发布还需要调用方额外显式 传入 allow_public_publish=True。入口脚本 run_publish.pypublish_article.py 则在此之上再加了命令行/交互式的人工确认门。

Juejin Skills - 掘金技术社区操作技能

🚀 快速使用

本技能仅在用户明确、字面提到下列意图时才被调用。 模糊的、推断出的或捎带提到“掘金/发布/下载”的请求不会触发本技能; 遇到不确定的情况,AI 应当先向用户澄清,而不是直接执行。

热门文章排行榜(只读,无副作用)

  • “获取掘金热门文章排行榜”
  • “查看掘金前端分类的热门文章”
  • “掘金有哪些文章分类?”

文章发布(需要登录态 + 显式 .md 路径)

  • “把 ./xxx.md 这个文件作为草稿发布到掘金,分类前端,标签 Vue.js”
  • “登录掘金账号”(会通过 Playwright 打开浏览器让你登录)
  • 注:用户必须显式给出位于当前工作目录下的 .md 文件路径, 或直接粘贴 Markdown 正文。AI 不得主动猜测或代填路径, 也不得把诸如 ~/.ssh/.../etc/...~/.juejin_cookie.json 这类路径喂给本技能。

文章下载(只接受用户显式给出的 juejin.cn 链接或 article_id)


技能描述

属性内容
技能名称Juejin Skills(掘金技术社区操作技能)
技能类型Prompt-based Skill(自然语言驱动)
技能语言Python
目标网站https://juejin.cn/
激活方式自然语言指令

激活条件

本技能采取严格字面匹配策略:仅当用户的请求同时满足下列三项时, 才认为该请求属于本技能的范围:

  1. 请求中字面出现“掘金”或域名 juejin.cn(不接受“某社区”“技术博客” 等泛指);
  2. 请求所表达的动作落在“查询热门列表 / 发布 .md 草稿 / 下载已知 URL” 这三类窄定义场景之一;
  3. 触发任何写操作(登录、发布、下载到磁盘)的请求都必须带有用户亲自 提供的具体参数(.md 路径、文章 URL、分类名等),AI 不得自行编造。

如果上述任一条件不满足,AI 应当先向用户澄清,不要激活本技能。

1. 热门文章排行榜(只读)

  • 触发示例:用户字面询问“掘金 + (热门 / 排行榜 / 热榜 / 分类列表)”。
  • 触发示例:“最近前端有什么火的”“给我推荐几篇好文章”—— 这些不含“掘金”字样,本技能保持沉默。

2. 文章发布(写操作,需登录态 + 显式输入)

  • 触发示例:用户字面要求“(发布 / 发文 / 投稿 / 草稿) + 掘金”, 并提供下列至少一项:
    • 当前工作目录下的 .md 文件路径,或
    • 直接粘贴的 Markdown 正文。
  • 触发示例:仅说“一键发布”“帮我发个文”而未指明掘金; 仅模糊提到“掘金”但未给出文件或正文; 请求读取 ~/.ssh/etc~/.juejin_cookie.json 等敏感路径。 这些情况下应拒绝并要求澄清。

3. 文章下载(写操作到 ./output)

  • 触发示例:用户字面给出 juejin.cn/post/juejin.cn/user/ 链接,并字面要求“下载 / 保存 / 导出”。
  • 触发示例:要求下载非掘金域名的文章;要求把下载结果写入 ./output/ 之外的路径——这些应被拒绝。

3.1 批量下载(需人工确认 + 硬上限)

  • download_user_articles 需要调用方显式传入 confirm_bulk=True, 未传时该方法会直接拒绝并返回提示。
  • max_count 默认 20、硬上限 50;AI / CLI 不得在未获得用户明确同意前 自行将这个限额开到更高或跳过确认。这避免了在用户只需下载一两篇 文章时意外启动大规模抓取。
  • 触发示例:“把这位作者(https://juejin.cn/user/xxx)的最新 N 篇 文章下载下来” + 用户明确同意启动批量下载。

功能清单

📊 功能一:热门文章排行榜

子功能说明
获取分类列表获取掘金所有文章分类(前端、后端、Android、iOS、人工智能等)
热门文章排行获取指定分类或全部分类的热门文章排行榜
文章趋势分析按时间维度(3天/7天/30天/历史)查看文章热度趋势
排行榜筛选支持按分类、时间范围、排序方式筛选

API 接口

  • 分类列表:GET https://api.juejin.cn/tag_api/v1/query_category_briefs
  • 热门文章:POST https://api.juejin.cn/recommend_api/v1/article/recommend_all_feed
  • 分类文章:POST https://api.juejin.cn/recommend_api/v1/article/recommend_cate_feed
  • 标签列表:POST https://api.juejin.cn/tag_api/v1/query_category_tags

📝 功能二:文章自动发布

子功能说明
浏览器登录通过 Playwright 打开掘金登录页面,用户扫码或密码登录后自动获取 Cookie
Cookie 管理保存、加载、验证 Cookie 状态
Markdown 解析读取本地 Markdown 文件,提取标题、正文内容
文章发布通过掘金 API 创建草稿并发布,支持设置分类、标签、摘要、封面图
草稿管理支持保存为草稿而不立即发布

API 接口

  • 创建草稿:POST https://api.juejin.cn/content_api/v1/article_draft/create
  • 发布文章:POST https://api.juejin.cn/content_api/v1/article/publish
  • 获取标签:POST https://api.juejin.cn/tag_api/v1/query_category_tags

鉴权方式:Cookie 鉴权(通过 Playwright 浏览器登录获取)

📥 功能三:文章下载

子功能说明
单篇下载通过文章 URL 下载单篇文章,保存为 Markdown
批量下载下载指定作者的所有/部分文章
格式转换将掘金文章 HTML 内容转换为标准 Markdown
图片处理可选下载文章中的图片到本地
元数据保留保留文章标题、作者、发布时间、标签等元信息

API 接口

  • 文章详情:POST https://api.juejin.cn/content_api/v1/article/detail
  • 用户文章列表:POST https://api.juejin.cn/content_api/v1/article/query_list

技术架构

juejin/
├── SKILL.md              # 技能定义文档
├── README.md             # 项目说明文档
├── requirements.txt      # Python 依赖
├── juejin_skill/         # 主模块
│   ├── __init__.py
│   ├── config.py         # 配置管理
│   ├── api.py            # 掘金 API 封装
│   ├── auth.py           # 登录鉴权(Playwright)
│   ├── hot_articles.py   # 热门文章排行榜
│   ├── publisher.py      # 文章发布
│   ├── downloader.py     # 文章下载
│   └── utils.py          # 工具函数
└── output/               # 下载文章输出目录

环境要求

Prompt 示例

用户:帮我获取掘金前端分类的热门文章排行榜
AI:正在获取掘金前端分类的热门文章...

用户:把 ./my-article.md 发布到掘金,分类选前端,标签加上 Vue.js 和 TypeScript
AI:正在登录掘金账号并发布文章...

用户:下载这篇掘金文章 https://juejin.cn/post/7300000000000000000
AI:正在下载文章并转换为 Markdown 格式...

🔒 安全限制与风险警告

本地文件写入安全限制(filesystem_write

  • download_article(...)download_user_articles(...) 以及内部的 _write_markdown_file / _download_images 在写入磁盘之前都会调用 juejin_skill.downloader._validate_output_dir()
    • 写入路径必须位于 ./output(或 $JUEJIN_OUTPUT_ROOT)之下;
    • 使用 os.path.realpath 解析后再比对,可抵御符号链接、.. 馑越, 以及伪造后缀绕过检查。
  • 任何越出根目录的 output_dir 传入都会被以 {"success": False, "message": ...} 形式拒绝,不会创建目录也不会调用 open()。
  • 这保证了 SKILL.md 中 filesystem_write 边界与代码实际行为一致。

批量下载安全限制(bulk_download_policy

  • download_user_articles() 需要显式 confirm_bulk=True 才会执行;
  • max_count 默认 20、硬上限 BULK_DOWNLOAD_HARD_CAP=50,超出会被静默降级;
  • 防止在用户仅下载一两篇文章时被意外启动为全量抓取,控制运营风险与平台合规风险。

本地文件读取安全限制(filesystem_read

  • publish_markdown(filepath=...) 会经过 juejin_skill.publisher._validate_markdown_path() 校验,仅接受:
    • 位于当前工作目录(或 $JUEJIN_MD_ROOT)之下的 .md / .markdown 文件;
    • 文件大小 ≤ 2 MiB;
    • 不在 /etc/var/proc/sys/dev/root/boot~/.ssh~/.aws~/.config~/.juejin_cookie.json 等敏感前缀下的文件。
  • 路径会使用 os.path.realpath 解析后再比对,以防止符号链接逃逸、 .. 路径馑越、以及伪造后缀绕过检查。
  • 违反任一规则都会抩出 ValueError,不会走到 open(),也不会被填到 草稿 / 发布 / 任何外发请求中。

图片下载安全限制

  • 图片下载功能仅允许下载来自掘金官方域名的图片
  • 支持的域名:juejin.cn, p1-juejin.byteimg.com, p3-juejin.byteimg.com, p6-juejin.byteimg.com, p9-juejin.byteimg.com
  • 其他域名的图片将被自动跳过,防止SSRF攻击和未经授权的出站请求

发布安全机制

  • 默认只创建草稿,不公开发布
  • 公开发布需要双重确认:save_draft_only=Falseallow_public_publish=True
  • 命令行工具需要额外的环境变量和交互式确认

网络访问限制

  • 仅允许访问 juejin.cn 和 api.juejin.cn 域名
  • 图片下载有严格的域名白名单限制
  • 防止潜在的策略绕过和跟踪风险

Related skills

Write and publish WeChat Official Account articles end-to-end with AI, or take an existing draft straight into the skill's built-in formatting + direct-send...

34 installs2 stars

管理灏天文库文集和文档,支持新建文集、新建文档、查询文集/文档、更新文档、修改文档归属、管理文档层级、查询个人花园限制与用量;支持文档片段 RAG 检索、图片上传到 COS、图片分组、查询图片列表/详情与图片额度。适用于 OpenClaw 自主写文章并上传、文集创建、文档入库、知识检索、文档移动、插图上传与外链等场景。

28 installs

Generate WeChat public account long articles from a topic or outline, and rewrite, continue, or polish existing drafts.

by marsatwechat33 installs1 stars

Automate Jianying draft generation from local media plus a cloud editing API. Use when Codex needs to scan a material folder, request editing decisions, and...

64 installs

Turn a Douyin or Xiaohongshu link into a concise summary, an actionable todo list, and a recommended reminder time. The hosted service handles the platform a...

32 installs

Operate the Z视介 publishing API from OpenClaw. Use when Codex needs to prompt the user to log in to Z视介 by QR code, then publish or edit 图文 and 短视频 content th...

31 installs

More from enoyao

Browse all skills

This skill produces a DESCRIPTIVE Git-history reflection report. It is intended ONLY for: (a) a developer running it on their own repository for self-reflect...

by enoyao759 installs16 stars

Simulates mock interviews for any role and experience level with tailored technical, behavioral, and case questions plus detailed feedback and scoring.

by enoyao818 installs23 stars

Assist job seekers by polishing, customizing, scoring, and exporting resumes with detailed checklist reviews and multi-format support.

by enoyao793 installs17 stars

百度网盘(Baidu Drive, pan.baidu.com)文件管理 — 上传、下载、转存、分享、搜索、移动、复制、重命名、创建文件夹、删除(高风险,需用户确认)。 同时支持 Agent 记忆备份/恢复(kimiclaw/maxclaw/qclaw/openclaw)。 TRIGGER: 用户消息明确提及"百度网盘 / 百度云盘 / bdpan / baidu netdisk / baidu pan / baidu drive / pan.baidu.com"并涉及具体文件操作; 或用户提及"备份记忆 / 恢复记忆 / 查看记忆备份"等记忆相关操作。 DO NOT TRIGGER: 仅泛指"网盘 / 云盘 / 云存储 / 百度云"而未明确指向百度网盘时;用户在讨论其他云盘服务(OneDrive/Google Drive/阿里云盘/夸克网盘等);本地记忆整理/清理操作;PPT 生成操作(已独立为 baidu-wenku-aippt skill)。

by enoyao

A comprehensive Bilibili toolkit that integrates hot trending monitoring, video downloading, video watching/playback, subtitle downloading, and video publishing capabilities into a single unified skill. Supports Bilibili session cookie authentication for publishing and high-quality downloads. Requests go to official Bilibili API endpoints over HTTPS.

by enoyao