| version | 1.0.8 |
| name | juejin-skills |
| license | MIT |
| description | 掘金技术社区一站式操作技能,支持热门文章排行榜查询、Markdown 文章发布(默认草稿)和文章下载保存为 Markdown。 |
| source | https://github.com/wscats/juejin |
| homepage | https://github.com/wscats/juejin |
| repository | {"type":"git","url":"https://github.com/wscats/juejin.git"} |
| author | wscats |
| credentials | [{"name":"juejin_session_cookie","description":"通过 Playwright 浏览器登录后获得的掘金登录态 Cookie。","storage_path":"~/.juejin_cookie.json","storage_format":"plain-text JSON","file_permissions":"0600 (owner-only read/write, enforced by auth._save_cookies)","scope":"对用户登录的掘金账号具有读写权限(可发文章、读取私有草稿等)。","rotation":"用户可随时通过删除 ~/.juejin_cookie.json 撤销访问;Cookie 过期后需要重新登录。","hardening":["不要在多人共享的机器或 CI 容器中使用(Cookie 即账号登录态)。","使用完毕立即执行 `rm ~/.juejin_cookie.json` 撤销。","不要将该文件提交到版本库;本仓库已在 `.clawhubignore` / `.gitignore` 中排除。"]}] |
| permissions | [{"network":"仅访问 https://juejin.cn/ 与 https://api.juejin.cn/。\n下载文章中的图片时,仅允许从掘金官方图床域名拉取\n(juejin.cn / *.byteimg.com,详见 juejin_skill/config.py 中的\nALLOWED_IMAGE_DOMAINS 白名单);其他域名一律跳过。\n"},{"filesystem_read":"仅读取用户显式提供的 .md / .markdown 文件,且必须满足:\n(1) 路径位于当前工作目录之下,或位于环境变量 $JUEJIN_MD_ROOT 指向的目录之下;\n(2) 文件大小 ≤ 2 MiB;\n(3) 不在 /etc, /var, /proc, /sys, /dev, /root, /boot,\n ~/.ssh, ~/.aws, ~/.config, ~/.juejin_cookie.json 等敏感前缀下。\n违反任一规则时,juejin_skill.publisher._validate_markdown_path() 会直接\n拒绝读取。本技能不会主动遍历目录、不会读取无关后缀的文件、不会跟随\n指向上述受限位置的符号链接。\n"},{"filesystem_write":"仅允许写入下列位置:\n(1) ~/.juejin_cookie.json(会话凭证,权限 0600);\n(2) ./output/ 及其子目录(下载的文章 .md 与图片)。\n允许用户通过环境变量 $JUEJIN_OUTPUT_ROOT 重定位上述\n./output 根目录,但任何 download_article / download_user_articles 写入的\n路径都会经过 juejin_skill.downloader._validate_output_dir() 校验:\n路径会用 os.path.realpath 解析,有效抵御符号链接、`..` 馑越、\n以及伪造后缀绕过。任何解析后越出该根目录的写请求都会被拒绝。\n"},{"browser_automation":"启动本地 Chromium 仅用于在 https://juejin.cn 完成登录获取 Cookie。"}] |
| publish_policy | draft-only-by-default |
| bulk_download_policy | opt-in-with-hard-cap |
| publish_policy_enforcement | {"api_layer":"juejin_skill.publisher.ArticlePublisher.publish_markdown() 的默认参数为\nsave_draft_only=True, allow_public_publish=False。两个标志都需要被显式\n改为 False / True 时才会触发公开发布;任何一侧缺失都会直接拒绝并返回\ndraft 结果。\n","cli_layer":"run_publish.py 默认 draft-only;公开发布需要同时满足:\n(1) --publish 命令行开关, (2) 环境变量 JUEJIN_CONFIRM_PUBLISH=1,\n(3) 交互式输入 'yes'。publish_article.py 的交互流程同样默认走草稿分支,\n选择公开发布后需要再次键入 'yes' 确认。\n"} |
| bulk_download_policy_enforcement | {"api_layer":"juejin_skill.downloader.ArticleDownloader.download_user_articles() 需要\n显式传入 confirm_bulk=True 才会执行,否则只返回拒绝响应。\nmax_count 默认为 BULK_DOWNLOAD_DEFAULT (20),并被 BULK_DOWNLOAD_HARD_CAP\n(50) 强制夹住;调用方传入更大的值会被静默降级。\ndownload_article() / download_user_articles() 的 output_dir 参数都会经过\n_validate_output_dir() 校验,任何越出 ./output (或 $JUEJIN_OUTPUT_ROOT) 的\n写请求都会被拒绝。\n","cli_layer":"上层 CLI / Agent 调用方负责在打开 confirm_bulk 之前跳出人工确认门\n(例如要求用户输入 yes / 点击确认按钮)。\n"} |