Skip to content

HouMinXi/nixnote2-csdn

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

255 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NixNote2 → CSDN 自动发布工具

一条命令将 NixNote2 笔记发布到 CSDN 博客,图片自动上传到 CSDN CDN。

前置要求

  • Python 3.12+
  • NixNote2(数据库路径 ~/.local/share/nixnote2/db-2/nixnote.db
  • Google Chrome
  • xclip(Linux 剪贴板支持)
sudo dnf install xclip   # Fedora
sudo apt install xclip   # Ubuntu/Debian

安装

cd ~/code/nixnote2-csdn
python -m venv .venv
source .venv/bin/activate
pip install -e .

Chrome 配置

工具通过 Chrome 远程调试接口操作浏览器。首次使用需以调试模式启动 Chrome:

google-chrome --remote-debugging-port=9222

然后在 Chrome 中手动登录 CSDN(只需登录一次,Cookie 持久化)。

ChromeDriver 无需手动安装:工具使用 Selenium Manager 自动检测并下载与当前 Chrome 版本匹配的 chromedriver。config.yamlservice_location 留空即可,首次运行时会自动完成。

config.yaml 配置

复制模板并填写:

cp nixnote2_csdn/config.yaml.example nixnote2_csdn/config.yaml

config.yaml 已加入 .gitignore,不会提交到仓库。

浏览器配置

browser:
  mode: attach              # attach = 附加到已运行的 Chrome(推荐)
  debugger_address: "127.0.0.1:9222"
  service_location: ""      # 空 = Selenium Manager 自动检测 chromedriver
  stealth_js_path: ""       # 空 = 跳过 stealth.js 注入
  chrome_profile_dir: "~/.config/nixnote2-csdn-chrome/"  # launch 模式专用

CSDN 元数据

platforms:
  csdn:
    # 文章可见范围:全部可见 | 仅我可见 | 粉丝可见 | VIP可见
    visibility: "全部可见"

    # 文章类型(全局默认):原创 | 转载 | 翻译
    article_type: "原创"

    # 按 Notebook 名覆盖文章类型(精确匹配,可选)
    notebook_article_type:
      转载资料: "转载"
      翻译笔记: "翻译"

    # 摘要(留空则自动从正文前 150 字生成)
    summary: ""

XPath 选择器字段通常不需要修改,除非 CSDN 更新了编辑器 DOM。 如果发布卡住,运行 nixnote2-pub check-selectors 诊断。

Phase 9 专栏匹配选择器

platforms:
  csdn:
    # 专栏复选框枚举 XPath(供 --yes 动态匹配使用,勿修改)
    category_checkbox_all: "//input[@type='checkbox' and contains(@class,'tag__option-chk')]"

category_checkbox_all--yes / -y 动态专栏匹配的必要配置项。工具用它枚举 CSDN 专栏面板中所有已有专栏,再与 NixNote2 Notebook 名做精确匹配。
若此 XPath 失效(CSDN DOM 更新),运行 nixnote2-pub check-selectors 诊断并更新。

用法

# 激活虚拟环境
source .venv/bin/activate

# 搜索笔记(返回 LID)
nixnote2-pub search python

# 列出某个 Notebook 的笔记
nixnote2-pub list AI

# 发布笔记到 CSDN(草稿模式)
nixnote2-pub publish <LID>

# 发布并自动新建不存在的专栏(跳过确认提示)
nixnote2-pub publish <LID> --yes

# 检查 XPath 选择器是否与实时 CSDN DOM 匹配
nixnote2-pub check-selectors

--yes / -y:跳过"是否新建专栏?"的交互确认,自动尝试在 CSDN 创建专栏。适用于脚本或无 人值守场景。等价短标志:nixnote2-pub publish <LID> -y

发布流程

  1. 运行 nixnote2-pub publish <LID>
  2. 工具自动:提取笔记 → 转换 Markdown → 上传图片到 CSDN CDN → 填写标题/标签/专栏/文章类型 → 保存草稿
  3. 终端打印草稿 URL,在浏览器里确认内容后点「发布文章」

首次发布新 Notebook 的专栏

工具根据 NixNote2 的 Notebook 名自动匹配 CSDN 专栏。 若该专栏不存在,会提示:

没有找到与 'AI' 匹配的专栏,是否新建?[y/N]
  • 输入 y:工具尝试自动新建(best-effort,不保证每次成功)
  • 若自动新建失败,草稿仍会保存,终端打印手动建专栏的步骤

手动建专栏(一次性操作): CSDN → 内容管理 → 我的专栏 → 新建,名称填 Notebook 名。 之后该 Notebook 的所有笔记发布时将自动匹配。

已知限制

  • 专栏自动新建:CSDN 编辑器 Vue 交互限制,自动新建偶尔失败;首次手动建专栏后无此问题
  • 仅支持 CSDN:掘金、知乎暂未实现(v2 计划)
  • 草稿模式:工具只保存草稿,不直接发布,需在 CSDN 页面手动点「发布文章」

排错

问题 解决方法
NotLoggedInError Chrome 中重新登录 CSDN,重试
SelectorError: xxx 运行 check-selectors 确认哪个 XPath 失效,对照 CSDN DOM 更新 config.yaml
标签全部粘在一起 CSDN 响应慢,代码已有 2s 延时;如仍失败可减少笔记标签数量(建议 ≤5 个)
内容为空 检查 xclip 是否安装:echo test | xclip -selection clipboard && xclip -selection clipboard -o
草稿 URL 提取失败 非错误,草稿已保存,在 CSDN 草稿箱确认

Claude Code 技能:/nixnote2-export

在 Claude Code 中输入 /nixnote2-export 可启动交互式发布向导,无需手动查找笔记 LID。

前置条件

与 CLI 相同:Chrome 以 --remote-debugging-port=9222 运行,已登录 CSDN,虚拟环境已激活。

调用方式

在 Claude Code 对话框输入:

/nixnote2-export

交互提示流程

技能按以下顺序提示,所有步骤均可跳过(直接按 Enter):

步骤 提示内容 说明
1 请问您想查找最近几天更新的笔记? 输入天数,例如 2730
2 请选择 Stack(或直接回车跳过) 按编号选择笔记本堆栈,0 跳过
3 请选择笔记本(或直接回车跳过) 按编号选择具体笔记本,0 搜索整个 Stack
4 请输入搜索关键词(可选) 关键词过滤,直接回车跳过
5 找到 N 篇笔记(显示最新 10 篇)… 展示编号列表,含标题、笔记本、更新日期
6 请输入编号选择要发布的笔记 输入编号;0 退出
7 发布《标题》到 CSDN 草稿?[y/N] 确认后调用 nixnote2-pub publish <LID>

预期输出

成功时终端打印:

草稿已保存:https://editor.csdn.net/md/?articleId=XXXXXXXXX

在浏览器中打开该 URL,确认内容无误后点击「发布文章」完成发布。

错误处理

错误提示 原因 解决方法
nixnote2-pub not found 未安装或未激活虚拟环境 source .venv/bin/activate,重新运行
config.yaml not found 未复制配置模板 cp nixnote2_csdn/config.yaml.example nixnote2_csdn/config.yaml
CSDN 登录已过期 Chrome 会话失效 在浏览器中重新登录 CSDN,重新运行技能

About

NixNote2 → CSDN/Juejin/Zhihu blog auto-publisher with image CDN upload

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages