用开发者工具链打造小说创作工作流:从Markdown到自动化发布
最近在追更一部校园到职场的甜宠小说发现很多读者对其中细腻的情感描写和职场线的发展特别感兴趣。作为技术博主虽然不擅长文学分析但我们可以从另一个角度来聊聊如何用技术手段高效地创作、管理和连载一部类似的小说。无论是个人作者记录灵感还是小型创作团队协作一套合适的工具和工作流都能让“甜蜜不断更”这件事变得轻松不少。本文将围绕小说创作的技术支撑展开分享一套从灵感收集、大纲管理、正文撰写到多平台发布的完整数字化方案。如果你是一位有创作欲望的开发者或者对内容管理流程优化感兴趣这篇文章或许能给你带来一些实用的思路。1. 创作流程的数字化拆解在开始选择工具之前我们先把一部小说的创作过程抽象成一个技术项目来看待。这能帮助我们更清晰地识别需求。1.1 核心阶段与痛点一部小说的诞生通常经历以下几个阶段每个阶段都有其技术需求灵感与设定阶段记录零散的人物设定、场景灵感、关键对话。痛点灵感稍纵即逝缺乏统一归档容易丢失。大纲与章纲阶段构建故事主线、分卷、分章情节。痛点结构频繁调整人物关系和时间线容易混乱。正文撰写阶段逐章完成内容。痛点需要沉浸式写作环境方便查找前后文设定保持行文连贯。修订与批注阶段自我修改或接受编辑、读者的反馈。痛点需要清晰的版本对比和批注系统。发布与运营阶段在多平台如CSDN专栏、博客、其他文学网站发布并与读者互动如“催更点合集”。痛点手动复制粘贴效率低格式易错乱数据统计分散。1.2 技术选型思路针对以上痛点我们的技术方案需要满足跨平台与同步支持在电脑、手机、平板间无缝切换和同步随时随地记录灵感。结构化与关联性能够轻松建立人物、地点、情节卡片之间的关联形成知识网络。专注与沉浸提供无干扰的写作模式并支持快速检索相关设定。版本管理像管理代码一样管理文稿的不同版本。自动化发布能通过脚本或工具将文稿自动格式化并发布到目标平台。2. 环境与工具准备我们将选择一套以Markdown为核心搭配版本控制和自动化脚本的工具链。Markdown 语法简单纯文本格式易于被各种工具处理是理想的选择。2.1 核心工具清单写作与知识管理工具Obsidian / Typora / VS Code 相关插件Obsidian强于双向链接和知识图谱非常适合管理复杂的小说设定和脉络。本文将以 Obsidian 为主要示例。Typora极致简洁的实时渲染 Markdown 编辑器适合专注写作。VS Code配合 Markdown 插件适合习惯开发环境的作者。版本控制工具Git用于管理整个创作仓库的所有文件变更历史实现版本回溯和分支管理例如可以开一个experimental-ending分支尝试不同结局。同步工具Obsidian Sync付费官方同步服务体验最佳。Git GitHub/Gitee通过私有仓库进行同步技术门槛稍高但免费且可控。第三方网盘同步文件夹如 iCloud、OneDrive、Dropbox简单直接。自动化脚本语言Python / Node.js用于编写处理 Markdown 文件、生成统计信息、自动发布等脚本。2.2 项目目录结构初始化一个清晰的项目结构是高效管理的基础。在你的工作区创建一个小说项目文件夹例如my-novel并初始化如下结构my-novel/ ├── .git/ # Git版本控制目录初始化后自动生成 ├── .obsidian/ # Obsidian配置目录使用Obsidian时生成 ├── 0-设定集/ # 存放所有设定文档 │ ├── 人物设定.md │ ├── 世界观.md │ ├── 时间线.md │ ├── 地点索引.md │ └── 灵感碎片.md ├── 1-大纲/ # 存放结构文档 │ ├── 故事总纲.md │ ├── 分卷大纲/ │ │ ├── 第一卷-校园初遇.md │ │ └── 第二卷-职场重逢.md │ └── 章纲模板.md ├── 2-正文/ # 存放每一章的正文 │ ├── 第一卷/ │ │ ├── 第01章-雨天初遇.md │ │ ├── 第02章-上下铺.md │ │ └── ... │ └── 第二卷/ │ ├── 第58章-雨天私语.md # 对应输入标题的章节 │ └── ... ├── 3-素材/ # 存放图片、参考资料等 │ └── images/ ├── 4-脚本工具/ # 存放自动化脚本 │ ├── publish.py # 发布脚本 │ └── word_count.py # 字数统计脚本 └── README.md # 项目说明文档使用命令行或直接在资源管理器中创建上述文件夹。然后在该目录下初始化 Git 仓库cd /path/to/your/my-novel git init git add . git commit -m 初始提交创建小说项目结构3. 核心工作流实现接下来我们深入每个阶段看看如何用工具高效地工作。3.1 阶段一用 Obsidian 构建“小说宇宙”知识库Obsidian 的核心是“双向链接”和“图谱视图”这恰好对应了小说中复杂的人物关系网和情节线。1. 创建人物卡片在0-设定集/人物设定.md中不要写成一大段而是为每个角色创建独立的 Markdown 文件并通过链接和标签关联。--- tags: [人物, 主角] status: 登场 --- # 萧野 **基本信息** - 年龄出场22岁职场篇 - 职业某互联网大厂高级算法工程师 - 性格外表清冷内心温柔行动派 **人物关系** - [[沈晏]]大学上下铺暗恋对象现同事。 - [[林总监]]职场上的直属上级亦敌亦友。 **关键情节** - [[第01章-雨天初遇]]与沈晏初次相遇。 - [[第58章-雨天私语]]职场重逢后感情升温的关键事件。 - “满心满眼偏爱彼此”其核心行为动机。 **外貌特征** 身高腿长穿白衬衫尤其好看。眼神深邃专注时习惯微抿嘴唇。2. 建立情节与设定的链接在正文2-正文/第二卷/第58章-雨天私语.md中可以轻松引用设定# 第五十八章 雨天私语 缱绻温柔 窗外雨声淅沥会议室里只剩下他们两人。[[萧野]] 看着 [[沈晏]] 被屏幕微光照亮的侧脸忽然想起大学时他也是这样在无数个夜晚偷偷望着上铺床板听着对方均匀的呼吸声。 **六年心动分离三年日夜牵挂**。所有的情绪似乎都在这个加班的雨夜找到了出口。在 Obsidian 中[[萧野]]会自动链接到“萧野”的人物卡片。点击即可查看详细设定确保写作时不“人设崩塌”。3. 利用图谱总览全局在 Obsidian 中打开“图谱视图”你会看到所有人物、章节、地点之间的连接线如同一张清晰的“故事地图”非常适合梳理复杂剧情和检查遗漏的伏笔。3.2 阶段二大纲管理与敏捷开发我们可以借鉴软件开发中的“敏捷开发”思路来管理大纲。1. 使用看板管理章节状态在 Obsidian 中可以使用“看板”插件或简单的 Markdown 列表来管理写作进度。创建一个写作看板.md文件## 写作进度看板 ### 待写作 - [ ] 第59章年会风波待细化 - [ ] 第60章并肩作战待细化 ### 写作中 - [ ] **第58章雨天私语**进行中已完成80% ### 已完成已发布 - [x] 第57章项目危机 - [x] 第56章电梯偶遇2. 章纲模板化在1-大纲/章纲模板.md中制定一个模板每次新建章节时复制使用保持结构统一。--- 标题: 预计字数: 3000 关键词: [] POV视角人物: 时间线: 地点: --- ## 核心情节 1. 2. 3. ## 情感发展 - ## 伏笔与回收 - ## 本章金句可空 ## 备注这样能确保每一章都目标明确要素齐全。3.3 阶段三专注写作与上下文检索写作时打开 Typora 或 Obsidian 的“专注模式”屏蔽一切干扰。快速检索技巧 在 Obsidian 中按下CtrlO可以快速搜索并跳转到任何笔记。例如忘记“沈晏”的眼睛颜色直接搜索“沈晏 眼睛”就能立刻定位到人物卡中的描述。字数统计 可以编写一个简单的 Python 脚本4-脚本工具/word_count.py定期统计字数。#!/usr/bin/env python3 import os import re def count_words_in_md(file_path): 统计单个Markdown文件的中文字符和总字数近似 with open(file_path, r, encodingutf-8) as f: content f.read() # 去除Markdown语法、代码块、HTML标签简单处理 content re.sub(r.*?, , content, flagsre.DOTALL) content re.sub(r.*?, , content) content re.sub(r!--.*?--, , content, flagsre.DOTALL) content re.sub(r[#*\-\[\]()!], , content) content re.sub(r\s, , content).strip() # 中文字符数近似 chinese_chars len(re.findall(r[\u4e00-\u9fff], content)) # 总单词数按空格分割非常粗略 total_words_approx len(content.split()) return chinese_chars, total_words_approx def count_novel_words(root_dir): total_chars 0 total_words_approx 0 for root, dirs, files in os.walk(root_dir): # 只统计正文目录下的.md文件 if 2-正文 in root: for file in files: if file.endswith(.md): file_path os.path.join(root, file) chars, words count_words_in_md(file_path) total_chars chars total_words_approx words print(f{file_path}: 中文字符 {chars} 总词数约 {words}) print(f\n 统计结果 ) print(f正文总中文字符数{total_chars}) print(f正文总词数约{total_words_approx}) print(f按中文字符估算篇幅{total_chars / 10000:.1f} 万字) if __name__ __main__: novel_root . # 脚本放在项目根目录运行或修改为你的路径 count_novel_words(novel_root)运行脚本python word_count.py即可获得详细的字数统计报告。3.4 阶段四版本控制与协作使用 Git 管理你的小说项目其好处远超普通备份。1. 日常提交将每次写完一章或修改一个重要设定视为一次“提交”。# 添加当前所有更改 git add . # 提交并附上描述信息 git commit -m “feat: 完成第58章初稿新增雨天场景描写” # 如果使用远程仓库如GitHub私有库可以推送到云端 git push origin main2. 查看历史与回溯如果你对某一章的修改不满意可以轻松查看历史版本或回退。# 查看提交历史 git log --oneline --graph # 回退到某个特定版本谨慎操作 git checkout commit-hash -- 2-正文/第二卷/第58章-雨天私语.md3. 分支管理实验性内容想尝试写一个不同的结局创建一个新分支完全不影响主线。# 创建并切换到“悲剧结局”实验分支 git checkout -b experimental-tragic-ending # 在此分支上大胆修改 # 如果决定放弃切换回主分支即可 git checkout main3.5 阶段五自动化发布与读者互动这是实现“甜蜜不断更”和运营“催更点合集”的关键一步。我们可以编写一个发布脚本将 Markdown 自动转换为目标平台如 CSDN 博客的格式并发布。1. 脚本思路 (publish.py)假设 CSDN 提供了 OpenAPI此处为示例请以官方最新文档为准脚本需要完成读取指定章节的 Markdown 文件。进行格式转换如处理本地图片上传、代码高亮适配。调用 CSDN API 发布文章。更新本地“已发布”记录。2. 示例脚本结构#!/usr/bin/env python3 import requests import json import markdown from pathlib import Path class CSDNPublisher: def __init__(self, config_pathconfig.json): with open(config_path, r) as f: config json.load(f) self.access_token config[access_token] self.blog_id config[blog_id] self.api_url https://blog.csdn.net/api/v3/article/create self.headers { Content-Type: application/json, Cookie: fUserName...; access_token{self.access_token} # 具体认证方式需参考最新API } def read_and_convert_md(self, md_file_path): 读取Markdown文件并转换为HTMLCSDN富文本编辑器可能接受HTML或Markdown content Path(md_file_path).read_text(encodingutf-8) # 简单转换可根据CSDN API要求调整 html_content markdown.markdown(content, extensions[extra, codehilite]) return html_content def publish(self, title, md_file_path, categories[小说连载]): 发布文章到CSDN content self.read_and_convert_md(md_file_path) # 注意实际API参数请严格参考CSDN官方文档 data { title: title, content: content, content_type: 1, # 1: markdown, 2: html 根据API调整 categories: categories, tags: 甜宠, 职场, 校园到都市, # 根据章节内容动态生成更好 description: f《小说名》{title}更新啦, # 摘要 status: 0, # 0: 发布 1: 草稿 } response requests.post(self.api_url, headersself.headers, jsondata) if response.status_code 200: result response.json() print(f发布成功文章ID{result.get(data, {}).get(articleId)}) return result else: print(f发布失败状态码{response.status_code}, 响应{response.text}) return None if __name__ __main__: publisher CSDNPublisher(csdn_config.json) # 发布第58章 publisher.publish( title第五十八章 雨天私语 缱绻温柔, md_file_path./2-正文/第二卷/第58章-雨天私语.md )3. 管理“催更点合集”可以在项目根目录创建一个CURIE.md文件或用简单的 JSON 文件记录读者的催更评论、建议或投票。// readers_feedback.json [ { chapter: 58, comment: 雨夜告白太甜了求更多职场并肩作战的剧情, source: CSDN评论区, date: 2023-10-27, handled: false }, { chapter: 57, comment: 林总监这个反派有点脸谱化可以更复杂些吗, source: 读者群, date: 2023-10-26, handled: true } ]然后在写作新章节时可以优先处理那些handled: false的高质量建议让读者感受到互动提升粘性。4. 常见问题与排查思路在搭建和使用这套工作流时你可能会遇到以下问题问题现象可能原因解决思路Obsidian 中链接不生效文件名包含空格或特殊字符未使用双方括号[[]]确保文件名规范使用[[文件名]]格式。检查目标文件是否存在。Git 提交冲突在多设备上修改了同一文件且未及时同步先执行git pull拉取远程更改手动解决冲突后再提交。建议写作前先拉取最新版本。Python 脚本执行报错缺少依赖库文件路径错误编码问题1. 安装所需库pip install markdown requests。 2. 使用绝对路径或检查相对路径。 3. 在 Python 文件开头添加# -*- coding: utf-8 -*-。CSDN API 发布失败API 变更认证信息过期请求频率超限1. 查阅 CSDN 官方最新 API 文档。 2. 检查access_token等配置是否有效。 3. 在脚本中添加延时避免频繁请求。字数统计不准脚本过滤规则过于简单将部分内容误删调整word_count.py中的正则表达式更精确地剥离 Markdown 语法。或使用专门的库如markdown2进行转换后再统计。手机端同步不便使用的同步方案对移动端支持不佳考虑使用 Obsidian Mobile App付费同步或 iCloud 等。或将仓库托管在 Gitee使用 MGit 等 App 进行拉取。5. 最佳实践与进阶建议掌握了基本流程后下面这些实践能让你的创作和管理更上一层楼。5.1 写作规范与习惯命名规范文件、文件夹使用清晰的英文或拼音命名避免特殊字符。例如di-58-zhang-yu-tian-si-yu.md。定期备份除了 Git定期将整个my-novel文件夹压缩备份到其他硬盘或云存储。增量提交养成“写到一个里程碑就git commit”的习惯提交信息清晰如docs(第58章): 增加雨夜对话心理描写。分离内容与样式坚持用 Markdown 写作不要在意发布平台的样式。发布时通过脚本统一转换。5.2 效率提升技巧使用代码片段在 VS Code 或 Obsidian 中设置常用片段。例如输入char自动展开为人物卡模板。利用 Dataview 插件在 Obsidian 中安装 Dataview 插件可以动态生成表格。例如自动列出所有未完成的章节或统计每个人物出场的次数。dataview TABLE status, POV, 预计字数 FROM “2-正文” WHERE status ! “已完成” SORT file.name自动化日常任务使用系统定时任务如 crontab 或 Windows 任务计划程序每天自动运行字数统计脚本并将结果发送到你的邮箱或笔记中。5.3 安全与权限管理私有仓库如果使用 GitHub/Gitee务必创建私有仓库避免作品在未完成时公开。敏感信息隔离API 密钥、令牌等敏感信息不要硬编码在脚本里应存储在config.json文件中并将该文件加入.gitignore。# .gitignore 文件内容示例 config.json csdn_config.json *.bak谨慎处理删除操作在脚本中执行任何删除或覆盖文件的操作前务必先备份或进行确认提示。6. 扩展从个人创作到团队协作如果未来需要与编辑、校对或合著者协作这套基于 Git 的方案可以平滑扩展。GitHub/Gitee Issues 作为需求池读者催更或编辑意见可以创建为 Issue分配给不同的成员。Pull Request 作为审稿流程合著者完成一章后不是直接合并到主分支而是发起一个 Pull Request。主创或编辑可以在线 Review 修改提出意见讨论通过后再合并。使用项目看板利用 GitHub Projects 或 Gitee 的看板功能可视化管理“待写”、“写作中”、“审校中”、“已发布”等状态。通过将现代软件开发中的高效协作模式引入文学创作不仅能保证作品质量还能让整个“不断更”的过程变得井然有序让作者有更多精力专注于构思那些“缱绻温柔”的动人情节。工具终究是工具最重要的永远是创作者心中的故事和情感。希望这套数字化的创作工作流能像一副牢固的脚手架帮你更稳、更快地构建起那个独一无二的“小说宇宙”让你和你的读者都能更沉浸地享受那段关于“萧野”和“沈晏”的甜蜜旅程。

相关新闻

轨道交通联锁系统:从故障安全到计算机联锁的核心原理与工程实践

轨道交通联锁系统:从故障安全到计算机联锁的核心原理与工程实践

1. 从“信号灯”到“安全网”:联锁系统的核心价值如果你坐过地铁,或者对铁路系统有过一些了解,你大概率听过“联锁”这个词。它听起来有点专业,甚至有点“硬核”,仿佛是一套深藏在车站控制室里的复杂逻辑。但它的本质&…

2026/10/19 19:27:02 阅读更多 →
从科幻到代码:解析“第七旋臂执政官光码协议”的技术实现与部署指南

从科幻到代码:解析“第七旋臂执政官光码协议”的技术实现与部署指南

这次我们来看一个名字非常独特的项目——“第七旋臂执政官光码协议”。这个名字听起来充满了科幻色彩,但它本质上是一个技术项目。从项目名称和有限的描述来看,它似乎涉及到一个以“天琴座777赫兹蓝光基准频率”为锚定核心的协议或系统,可能与…

2026/10/18 5:40:21 阅读更多 →
图纸比较:从手动对比到流程化管理的实战指南

图纸比较:从手动对比到流程化管理的实战指南

你打开一份新图纸,准备开始今天的修改工作。但很快,你发现一个熟悉又棘手的问题:这份图纸和上周的版本到底哪里不一样?是某个尺寸被微调了,还是某个零件被替换了?你只能凭记忆,在两个窗口间来回…

2026/10/19 15:41:29 阅读更多 →

最新新闻

CEF离屏渲染接入D3D11:共享纹理融合浏览器与原生渲染管线

CEF离屏渲染接入D3D11:共享纹理融合浏览器与原生渲染管线

简介:这是一份基于CEF框架的高性能离屏渲染(OSR)演示项目,面向需要在桌面应用中嵌入Web技术、或对GPU渲染管线有定制需求的C开发者,重点解决使用Chromium内核进行屏幕外绘制时的数据交换与性能优化问题。项目完整展示了…

2026/10/20 9:10:50 阅读更多 →
第234篇 系统日志体系:logd 与 dropbox

第234篇 系统日志体系:logd 与 dropbox

先把结论放在前面:应用能看到的日志,只是 Android 日志体系的一小段。 系统侧的日志由 logd 统一写入环形缓冲区,按 main、system、radio、events、crash 分区存储,每个分区有大小上限,超出后从头覆盖——这决定了日志的第一属性是"最近发生了什么",而不是&quo…

2026/10/20 9:10:50 阅读更多 →
第233篇 OOM 与内存抖动:从分配速率看问题

第233篇 OOM 与内存抖动:从分配速率看问题

先把结论放在前面:OOM 与内存抖动是两类不同的病,但共用同一个根源——分配速率大于回收速率。 OOM 是"某时刻申请超过可用内存"的硬失败,抖动是"内存水位反复升降导致 GC 频繁"的慢性损耗。只盯着 OutOfMemoryError 去排查,会漏掉真正影响体感的抖动。…

2026/10/20 9:10:50 阅读更多 →
Linux 0.11终端设备控制实验:从内核态裁剪到用户态重写

Linux 0.11终端设备控制实验:从内核态裁剪到用户态重写

先说明一下,这个实验在我当年做的时候,就和“哈工大的操作系统实验”深度绑定,核心是基于Linux 0.11内核源码去改终端设备的读写流程。实验七的标题叫“终端设备控制”,但我更愿意把它理解成“把终端这层原来由内核干的活&#xf…

2026/10/20 9:10:50 阅读更多 →
AI辅助开题报告写作:从构思到初稿的实操全攻略

AI辅助开题报告写作:从构思到初稿的实操全攻略

深夜十一点多,某高校的硕士生A同学盯着空白的文档,光标停在“选题背景及意义”这一行已经整整二十分钟。导师白天刚丢下一句“这周把开题报告初稿给我”,而他现在连研究现状都理不清楚。这种场景在每年毕业季都会上演——开题报告不算严格意义…

2026/10/20 9:10:50 阅读更多 →
编辑看IThenticate查重报告:不只看总相似率,这5点才是关键

编辑看IThenticate查重报告:不只看总相似率,这5点才是关键

投过SCI的都知道,IThenticate查重报告出来那一瞬间的心情。总相似率低,心头大石落地;相似率一高,立刻开始逐句对照,琢磨怎么降重。但有一个问题很多人没想明白:编辑看这份报告,和你自己看这份报…

2026/10/20 9:09:49 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →