بنقرة واحدة
webnovel-publish
将小说章节自动发布到国内主流小说平台(番茄等)。触发条件:"发布小说"、"发布章节"、"上传到番茄"、"自动发布"、"清理草稿"、"发布草稿"。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
将小说章节自动发布到国内主流小说平台(番茄等)。触发条件:"发布小说"、"发布章节"、"上传到番茄"、"自动发布"、"清理草稿"、"发布草稿"。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
番茄写作技巧、番茄风章节、番茄留存约束;Use ONLY when writing or revising Fanqie chapters. Supplements webnovel-write with opener, pacing, dialogue, hook, and retention rules.
七猫写作技巧、七猫风章节、七猫留存与签约约束;Use ONLY when writing or revising Qimao chapters. Supplements webnovel-write with opener, pacing, hook, expectation, character, and content-audit rules.
使用审查 Agent 评估章节质量,生成报告并写回审查指标。
产出可发布章节,完整执行上下文→起草→审查→润色→提交→备份。
深度初始化网文项目。通过分阶段交互收集完整创作信息,生成可直接进入规划与写作的项目骨架与约束文件。
基于总纲生成卷纲、时间线和章纲,并把新增设定增量写回现有设定集。
| name | webnovel-publish |
| description | 将小说章节自动发布到国内主流小说平台(番茄等)。触发条件:"发布小说"、"发布章节"、"上传到番茄"、"自动发布"、"清理草稿"、"发布草稿"。 |
| compatibility | opencode |
将已完成小说章节自动发布到目标平台。首次需手动扫码登录,后续全自动运行。
| 平台 | 标识 | 认证方式 | 状态 |
|---|---|---|---|
| 番茄小说 | fanqie | 扫码登录(一次) | 可用 |
| 七猫小说 | qimao | 扫码登录(一次) | 实验性 |
export SCRIPTS_DIR="${PWD}/.opencode/scripts"
test -d "${SCRIPTS_DIR}" || { echo "错误: 未找到 ${SCRIPTS_DIR},请确保当前目录是 webnovel-writer 仓库根目录"; exit 1; }
export PROJECT_ROOT="$(python -X utf8 "${SCRIPTS_DIR}/webnovel.py" --project-root "${PWD}" where)"
test -n "$PROJECT_ROOT" && test -f "${PROJECT_ROOT}/.webnovel/state.json" || { echo "错误: PROJECT_ROOT 解析失败,请用 --project-root 显式指定"; exit 1; }
echo "项目路径: ${PROJECT_ROOT}"
python -c "import playwright" 2>/dev/null || { echo "请先安装: pip install playwright && playwright install chromium"; exit 1; }
若用户指令模糊,按优先级询问:
| 优先级 | 参数 | 何时必须询问 | 选项 |
|---|---|---|---|
| 1 | 平台 | 未指定平台 | fanqie / qimao |
| 2 | 操作 | 未指定操作 | 首次配置 / 创建新书 / 上传章节 |
| 3 | book_id | 上传时未绑定书籍 | 输入 ID 或书名 |
| 4 | 范围 | 未指定章节范围 | 全部 / 指定范围 |
| 5 | 模式 | 未指定 | 当前仅支持草稿(draft) |
可直接执行:
python -X utf8 "${SCRIPTS_DIR}/webnovel.py" publish setup-auth --platform fanqie
弹出浏览器窗口,扫码登录后自动保存认证状态。后续无需重复。
认证存储在 ~/.webnovel-publish/browser_data/{platform}/。
python -X utf8 "${SCRIPTS_DIR}/webnovel.py" publish list-books --platform fanqie
确认目标书籍是否存在,获取 book_id。
# 交互式(会询问书名、简介)
python -X utf8 "${SCRIPTS_DIR}/webnovel.py" publish create-book \
--platform fanqie \
--project-root "${PROJECT_ROOT}"
# 非交互式(跳过确认)
python -X utf8 "${SCRIPTS_DIR}/webnovel.py" publish create-book \
--platform fanqie \
--project-root "${PROJECT_ROOT}" \
--yes \
--abstract "自定义简介"
自动从 state.json 读取:书名、题材、简介、主角名。
创建成功后自动绑定 book_id 到项目(写入 .webnovel/publish_config.json)。
# 上传全部(使用项目绑定的 book_id)
python -X utf8 "${SCRIPTS_DIR}/webnovel.py" publish upload \
--platform fanqie \
--project-root "${PROJECT_ROOT}"
# 指定 book_id 或书名(首次上传自动绑定)
python -X utf8 "${SCRIPTS_DIR}/webnovel.py" publish upload \
--platform fanqie \
--book 7631548393474493502 \
--project-root "${PROJECT_ROOT}"
# 指定范围
python -X utf8 "${SCRIPTS_DIR}/webnovel.py" publish upload \
--platform fanqie \
--range 90-95 \
--project-root "${PROJECT_ROOT}"
# 跳过交互确认(脚本/CI 环境)
python -X utf8 "${SCRIPTS_DIR}/webnovel.py" publish upload \
--platform fanqie \
--yes \
--project-root "${PROJECT_ROOT}"
已上传章节自动跳过,支持断点续传。
上传日志存储在 ~/.webnovel-publish/upload_log/{project_name}/{platform}_{book_id}.json。
# 预览模式(不实际删除,查看哪些章节有重复)
python -X utf8 "${SCRIPTS_DIR}/webnovel.py" publish clean-drafts \
--platform fanqie \
--project-root "${PROJECT_ROOT}" \
--dry-run
# 清理重复草稿(同章节号保留最新修改时间的,删除旧版本)
python -X utf8 "${SCRIPTS_DIR}/webnovel.py" publish clean-drafts \
--platform fanqie \
--project-root "${PROJECT_ROOT}"
# 跳过确认
python -X utf8 "${SCRIPTS_DIR}/webnovel.py" publish clean-drafts \
--platform fanqie \
--project-root "${PROJECT_ROOT}" \
-y
适用场景:多次上传同一章导致草稿箱有重复,想保留最新版本删除旧版本。
# 清空草稿箱所有章节(跳过已发布的)
python -X utf8 "${SCRIPTS_DIR}/webnovel.py" publish clear-drafts \
--platform fanqie \
--project-root "${PROJECT_ROOT}"
适用场景:想清空草稿箱重新开始,但不删除已正式发布的章节。
# 删除草稿箱全部章节(包括已发布的,需二次确认 yes)
python -X utf8 "${SCRIPTS_DIR}/webnovel.py" publish delete-drafts \
--platform fanqie \
--project-root "${PROJECT_ROOT}"
# 跳过确认(危险操作)
python -X utf8 "${SCRIPTS_DIR}/webnovel.py" publish delete-drafts \
--platform fanqie \
--project-root "${PROJECT_ROOT}" \
-y
危险操作:会删除所有草稿,包括已发布状态的章节,并清除上传记录。
# 发布草稿箱中的章节(将草稿改为已发布状态)
python -X utf8 "${SCRIPTS_DIR}/webnovel.py" publish publish-drafts \
--platform fanqie \
--range 1-10 \
--project-root "${PROJECT_ROOT}"
# 发布全部草稿
python -X utf8 "${SCRIPTS_DIR}/webnovel.py" publish publish-drafts \
--platform fanqie \
--project-root "${PROJECT_ROOT}"
适用场景:章节已在草稿箱,想批量发布到正式站。
注意:发布时会用草稿箱现有的 item_id,标题和内容从本地文件读取。
| 参数 | 说明 | 默认值 |
|---|---|---|
--platform | 平台标识 | fanqie |
--book | 书籍 ID 或书名 | 从项目绑定读取 |
--range | 章节范围(1-50 / 1,3,5 / all) | all |
--mode | 发布模式(当前仅 draft) | draft |
--yes / -y | 跳过交互确认 | — |
--dry-run | 预览模式(仅 clean-drafts 支持) | — |
--abstract | 书籍简介(create-book) | 自动生成 |
--project-root | 书项目根目录 | 自动探测 |
| 命令 | 功能 | 典型用法 |
|---|---|---|
setup-auth | 扫码登录平台 | 首次使用 |
list-books | 列出已有书籍 | 查询 book_id |
create-book | 创建新书 | 自动从项目元数据生成 |
upload | 上传章节到草稿箱 | 日常更新 |
clean-drafts | 清理重复草稿 | 多次上传同章后去重 |
clear-drafts | 清空草稿箱(跳过已发布) | 重新开始前清理 |
delete-drafts | 删除全部草稿(危险) | 完全清空草稿箱 |
publish-drafts | 发布草稿到正式站 | 批量上架 |
create-book 成功后自动绑定 book_id 到 .webnovel/publish_config.jsonupload --book <id> 成功后自动持久化绑定upload 无需传 --book,自动从绑定读取--book 指定目标即可# 清除认证状态
rm -rf ~/.webnovel-publish/browser_data/
# 清除上传日志
rm -rf ~/.webnovel-publish/upload_log/
# 清除项目绑定
rm "${PROJECT_ROOT}/.webnovel/publish_config.json"
| 问题 | 解决 |
|---|---|
| 登录超时 | 重新运行 setup-auth,3 分钟内扫码 |
| 认证过期 | 重新运行 setup-auth(认证目录存在不代表有效) |
| 浏览器不弹 | 检查显示器配置,确保非 headless |
| Playwright 未安装 | pip install playwright && playwright install chromium |
| 项目未绑定 | 传 --book <id> 或先 create-book |
| book_id 不匹配 | 检查是否误用了其他书的 ID |
| 非交互环境报错 | 添加 --yes 跳过确认 |
| 草稿箱有重复章节 | 运行 clean-drafts --dry-run 预览,再去掉 --dry-run 执行 |
| 想重新上传所有章节 | 先 delete-drafts 删除草稿和上传记录,再重新 upload |
| 草稿上传了但想发布 | 运行 publish-drafts --range <范围> |