从Markdown到公众号,自动发布新体验 — 文颜 MCP Server 接入 TaoToken 统一 Key 通道
1. 文颜 MCP Server 是什么为什么要把 LLM 调用切到统一 Key 通道如果你平时用 Markdown 写公众号大概率经历过这套流程本地写完.md打开排版工具选主题复制粘贴图片一张张传格式来回调最后再进公众号后台存草稿。文颜这个工具本身就是冲着这个痛点去的它能把 Markdown 直接转成公众号能吃的格式主题、图片、草稿箱一条龙。而文颜 MCP Server 的出现把这件事又往前推了一步。它基于 Model Context ProtocolMCP实现对外暴露两个核心工具list_themes和publish_article。前者让模型知道当前支持哪些公众号主题后者让模型具备把文章发布到公众号草稿箱的能力。也就是说你不再需要手动打开排版工具而是在和 LLM 的对话里说一句“用某个主题把这篇文章发到公众号草稿”模型自己就会去调这两个工具完成动作。这里的关键点在于文颜 MCP Server 本身不产生内容它负责的是“排版 上传 发布”这条执行链而真正驱动这条链的是背后那个 LLM 的模型调用。模型要能稳定地理解你的意图、正确地调用工具、把 Markdown 内容传进去前提是它的 API 通道得通、Key 得有效、endpoint 得对。问题就出在这。很多创作者手里可能同时有好几个模型的 Key写作用一个、翻译用一个、发布流程里又接一个管理起来很碎。更麻烦的是MCP Server 在本地跑的时候模型调用的 endpoint 和 Key 是写在配置里的一旦你想换模型或者换通道就得改配置、重启、重新验证来回折腾。所以这篇要解决的就是这件事把文颜 MCP Server 的模型调用统一接到 TaoToken 的 Key 通道上用一个 endpoint、一个 Key把 Markdown 到公众号草稿这条链路跑通。TaoToken 在这里扮演的是统一模型调用入口的角色你不需要在多个平台之间来回切换 Key配置一次后面换模型只需要改一个 Model ID。适合谁看三类人一是已经用 Markdown 写作、想把发布流程自动化的公众号创作者二是本地已经部署了文颜 MCP Server、但模型调用配置还没理顺的技术型作者三是想用 MCP 协议把 LLM 能力接进自己内容工作流、但不确定 endpoint 和 Key 该怎么填的人。下面我会从环境准备开始一步步给出可复制的配置片段再演示一次完整的验证动作最后把常见的报错对照着排一遍。2. 接入前的准备TaoToken Key、endpoint 与文颜 MCP Server 环境在动配置之前先把三样东西备齐TaoToken 的 API Key、统一的 Base URL以及本地能跑起来的文颜 MCP Server。这三样缺一个后面的验证都会卡住。先说 TaoToken 这边。你需要拿到一个可用的 API Key这个 Key 是后面所有模型调用的凭证。获取入口在控制台的 API Keys 页面登录后新建一个就行。拿到之后先别急着往配置里塞建议先单独验证一下这个 Key 能不能正常发起对话请求避免后面把问题混在一起排查。验证模型是否可用的入口是模型对话页面你可以直接在那里发一条测试消息确认通道是通的。Base URL 这块要记清楚TaoToken 的 API 地址是https://taotoken.net/api。注意这个地址后面不要带多余的路径MCP Server 配置里填的就是这个根地址具体的模型路由由 Model ID 决定。很多人第一次配的时候会把/v1之类的后缀手动加上去结果请求 404这个坑后面排障部分会细说。然后是文颜 MCP Server 本身。它目前还在公测阶段需要你从 GitHub 仓库克隆代码到本地部署。部署方式通常是 Node 环境克隆下来之后按仓库里的说明装依赖、构建、启动。启动之后它会以 MCP Server 的形式对外提供list_themes和publish_article两个工具。你要做的是让这个 Server 在调用 LLM 时走 TaoToken 的通道而不是走默认的某个模型服务。这里有个概念要理清文颜 MCP Server 是“被调用方”它把工具暴露给 LLM而 LLM 是“调用方”它通过 API 去请求模型服务。所以配置分两层一层是 MCP Server 怎么被你的客户端比如 Claude Code、Cline 这类支持 MCP 的工具挂载另一层是 LLM 调用模型时用的 endpoint 和 Key。我们要改的是第二层也就是模型调用的通道。如果你用的是 Claude Code 这类客户端来挂载 MCP Server那么模型调用的配置通常落在客户端的 settings 或者环境变量里。如果你用的是 Cline 这类带 MCP 面板的工具配置会写在 MCP 的 JSON 配置里。不管哪种核心就三件套Base URL、API Key、Model ID。这三件套填对了链路就通了一半。还有一点要提前说公众号发布这条链路涉及图片上传和草稿箱写入所以文颜 MCP Server 那边还需要配置公众号的 appid 和 secret 之类的凭证。这部分不属于模型调用通道但如果你只配了 TaoToken 而没配公众号凭证publish_article会在最后一步失败。建议先把公众号凭证配好再来调模型通道这样验证的时候能一次跑通全链路。准备阶段的小结TaoToken Key 拿到手、Base URL 记成https://taotoken.net/api、文颜 MCP Server 本地能启动、公众号凭证已配。这四样齐了就可以进配置环节了。3. 可复制配置把 endpoint 与 API Key 改到 TaoToken 统一通道这一节是重点我会给出可直接复制的配置片段。因为不同客户端的配置格式不一样我按最常见的两种场景来写一种是 MCP 客户端的 JSON 配置比如 Cline 这类一种是 Claude Code 的 settings 配置。你按自己用的客户端对号入座。先看 MCP 客户端的 JSON 配置。文颜 MCP Server 在客户端里是以一个 server 条目存在的你要做的是在它的环境变量里把模型调用的 endpoint 和 Key 指向 TaoToken。下面这段是可直接复制的结构注意把sk-你的TaoTokenKey换成你自己的 Key{ mcpServers: { wenyan-mcp: { command: node, args: [/你的路径/wenyan-mcp/dist/index.js], env: { OPENAI_BASE_URL: https://taotoken.net/api, OPENAI_API_KEY: sk-你的TaoTokenKey, OPENAI_MODEL: claude-sonnet-4-20250514, WECHAT_APP_ID: 你的公众号appid, WECHAT_APP_SECRET: 你的公众号secret } } } }这段配置里有几个点要解释。OPENAI_BASE_URL填的是 TaoToken 的 API 根地址注意结尾没有斜杠也没有/v1。OPENAI_API_KEY就是你在控制台拿到的 Key。OPENAI_MODEL是 Model ID这里填的是示例模型你可以换成 TaoToken 支持的任意模型 ID换模型只需要改这一行endpoint 和 Key 都不用动这就是统一通道的好处。后面两个WECHAT_开头的变量是公众号凭证按你自己的填。如果你用的是 Claude Code配置通常落在 settings 文件里。Claude Code 的 MCP 挂载和模型调用配置可以分开写模型调用这块走的是环境变量或者 settings 里的字段。下面是一个 settings 片段示例{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: sk-你的TaoTokenKey, ANTHROPIC_MODEL: claude-sonnet-4-20250514 } }注意 Claude Code 用的是ANTHROPIC_前缀的变量名但值同样指向 TaoToken 的地址和 Key。这里的关键是不管变量名前缀是OPENAI_还是ANTHROPIC_Base URL 和 Key 都统一指向 TaoTokenModel ID 按你要用的模型填。这样你的模型调用通道就统一了不会出现这个工具走一个平台、那个工具走另一个平台的情况。如果你用的是 TOML 格式的配置部分客户端支持结构类似只是写法不同[mcp_servers.wenyan-mcp] command node args [/你的路径/wenyan-mcp/dist/index.js] [mcp_servers.wenyan-mcp.env] OPENAI_BASE_URL https://taotoken.net/api OPENAI_API_KEY sk-你的TaoTokenKey OPENAI_MODEL claude-sonnet-4-20250514 WECHAT_APP_ID 你的公众号appid WECHAT_APP_SECRET 你的公众号secret三件套在这里体现得很清楚Base URL 是https://taotoken.net/apiKey 是sk-开头的那串Model ID 是claude-sonnet-4-20250514示例可替换。这三个值填对模型调用就能走通。配置改完之后记得重启你的 MCP 客户端让新的环境变量生效。很多人改完配置不重启然后发现还是走的老通道白白排查半天。重启之后客户端会重新加载 MCP Server这时候文颜的list_themes和publish_article两个工具应该能被模型识别到。还有一个小细节如果你的客户端支持在 MCP 配置里直接写url而不是command也就是远程 MCP Server 模式那配置会更简单但文颜目前主要是本地部署模式所以还是按commandargs的方式来。等它后续支持远程模式了配置会更省事。配置这一步做完先别急着发文章。下一步我们用一个最小的验证动作确认模型调用链路是通的再去跑完整的发布流程。这样出问题的时候你能快速定位是通道问题还是发布环节的问题。4. 验证请求从 Markdown 到公众号草稿的完整链路演示配置改完现在来跑一次完整的验证。我会把动作拆成两步先验证模型调用通道再验证发布链路。这样即使出错你也能知道是哪一段的问题。第一步验证模型调用通道。打开你挂载了文颜 MCP Server 的客户端在对话里问一句“文颜 MCP Server 支持哪几种公众号主题” 这句话的作用是触发模型去调用list_themes工具。如果通道是通的模型会返回一个主题列表比如默认主题、某个特定风格的主题等等。这个过程看起来简单但它同时验证了三件事模型能连上 TaoToken 的 endpoint、Key 有效、MCP Server 的工具能被正确调用。如果这一步返回了主题列表说明模型调用通道没问题。如果返回的是报错先别往下走去第 5 节对照报错排查。通道不通的情况下后面的发布一定会失败。第二步验证发布链路。准备一个最简单的 Markdown 文件内容不用多几行就行比如# 测试标题 这是一段测试正文用来验证文颜 MCP Server 的发布链路。 ## 小标题 - 列表项一 - 列表项二然后在对话里对模型说“用默认主题把这篇 Markdown 发布到公众号草稿箱。” 模型会做几件事先调用list_themes确认主题可用再调用publish_article把 Markdown 内容、主题参数、公众号凭证一起传进去。文颜 MCP Server 收到之后会执行排版、图片处理如果有图片、调用公众号接口写入草稿箱。如果一切正常你会看到模型返回一个成功的结果同时你的公众号后台草稿箱里会出现一篇新草稿。打开草稿看一下标题、正文、格式应该都是按主题排版好的。到这一步整条链路就算跑通了Markdown 在本地模型通过 TaoToken 通道调用文颜 MCP Server 执行发布草稿进公众号后台。这里有个实测下来的经验第一次跑的时候建议用纯文字、不带图片的 Markdown减少变量。等纯文字链路通了再加图片测试。因为图片上传涉及网络请求和公众号素材接口变量更多混在一起排查会麻烦。我试过先跑纯文字一次就通了然后加图片的时候遇到过一次图片地址的问题单独排查很快。验证成功之后你可以把 Model ID 换成另一个模型再跑一次确认换模型只需要改配置里的一行endpoint 和 Key 都不用动。这就是统一 Key 通道的价值你的发布流程不绑定在某个特定模型上想换就换配置成本极低。如果你想让这条链路更自动化比如每次写完 Markdown 自动触发发布那可以在客户端里配置一些触发规则或者用脚本调用 MCP 工具。但那是下一步的事先把手动验证跑通确认链路稳定再考虑自动化。5. 常见报错排查401、local proxy failed、reading choices、OAuth链路跑不通的时候报错信息通常能直接指向问题。这一节我把最常见的几类报错对照着列出来你按自己遇到的往下查。401 Unauthorized。这个最直接就是 Key 不对或者没生效。先检查配置里的OPENAI_API_KEY或ANTHROPIC_API_KEY是不是你从 TaoToken 控制台拿到的那个有没有多空格、少字符。然后确认配置改完之后客户端重启了没有环境变量有没有真正加载进去。还有一种情况是 Key 本身失效了去控制台重新生成一个再试。401 基本就是凭证问题跟 endpoint 和 Model ID 关系不大。local proxy failed。这个报错通常出现在客户端尝试通过本地代理转发请求的时候。如果你没有配代理但配置里残留了代理相关的环境变量就会报这个。检查一下你的环境变量里有没有HTTP_PROXY、HTTPS_PROXY之类的设置有的话先清掉。另外Base URL 填错也可能导致类似的连接失败确认填的是https://taotoken.net/api没有多余路径。reading choices 相关报错。这类报错一般出现在模型返回结构不符合预期的时候比如返回体里没有choices字段。常见原因是 Model ID 填错了或者 endpoint 指向了一个不兼容的接口。检查OPENAI_MODEL或ANTHROPIC_MODEL是不是 TaoToken 支持的模型 ID别填了一个不存在的名字。还有一种可能是 Base URL 后面多加了/v1导致请求打到了错误的路径上返回了非预期的结构。OAuth 相关报错。如果你用的是 Claude Code 这类带 OAuth 登录的客户端可能会遇到 OAuth 流程和 API Key 冲突的情况。表现是客户端试图走 OAuth 登录而不是用你配的 Key。这时候要确认客户端的认证方式是不是被设成了 API Key 模式而不是 OAuth 模式。有些客户端需要在 settings 里显式关闭 OAuth或者把认证优先级调成 Key 优先。具体字段名看客户端文档但思路是让客户端用你配的 Key而不是走它自己的登录流程。除了这四类还有一个高频问题是 MCP Server 根本没被挂载上。表现是模型完全不知道有list_themes和publish_article这两个工具。这时候检查 MCP 配置里的command和args路径对不对Node 能不能正常执行那个入口文件。可以手动在终端跑一下node /你的路径/wenyan-mcp/dist/index.js看能不能启动有没有报错。手动能启动说明 Server 本身没问题问题在客户端挂载配置上。排查的顺序建议是先确认 MCP Server 能手动启动再确认客户端挂载成功再确认模型调用通道通用list_themes验证最后确认发布链路通用纯文字 Markdown 验证。一层一层来别跳步。跳步排查最容易把问题混在一起最后不知道到底是哪儿的错。6. 把统一 Key 通道用起来模型对话、Coding Plan 与接入文档链路跑通之后你可以把 TaoToken 的统一 Key 通道用在更多地方。文颜 MCP Server 只是其中一个场景核心思路是一样的一个 endpoint、一个 Key通过改 Model ID 来切换模型。如果你只是想验证某个模型在发布流程里的表现可以直接在模型对话页面里试。把 Markdown 内容贴进去让模型帮你调整措辞或者生成摘要确认效果之后再走发布链路。这样你不用每次都跑完整的发布流程验证模型能力更轻量。如果你长期用这套流程做内容或者想把更多 Agent 能力接进来可以看一下 Coding Plan。它适合那种需要持续调用模型、跑自动化任务的场景比单次调用更划算。你的文颜发布链路如果做成定时任务或者批量处理用 Coding Plan 会更合适。配置过程中如果遇到文档里没写清楚的字段去接入文档里查。里面会列出支持的模型 ID、参数格式、以及不同客户端的配置示例。文档更新比文章快遇到新问题先查文档。最后给一个实用建议把你的配置片段存一份到本地笔记里尤其是 Base URL、Key 的存放位置、Model ID 的常用值。下次换机器或者重装客户端的时候直接复制粘贴不用重新回忆每个字段填什么。统一 Key 通道的价值就在于配置一次、到处复用别让配置本身变成新的负担。

相关新闻

这就是我想要的 VSCode 插件!用 TaoToken 统一 Key 打通 Cline MCP 与 Base URL 配置

这就是我想要的 VSCode 插件!用 TaoToken 统一 Key 打通 Cline MCP 与 Base URL 配置

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

2026/10/8 6:36:26 阅读更多 →
Memory、Rules、Skills、MCP如何重塑AI编程:用TaoToken统一Key打通四层上下文

Memory、Rules、Skills、MCP如何重塑AI编程:用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/8 6:36:26 阅读更多 →
Copilot学习使用技巧:把 OAuth refresh 报错改到 TaoToken 的排查清单

Copilot学习使用技巧:把 OAuth refresh 报错改到 TaoToken 的排查清单

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

2026/10/8 6:36:26 阅读更多 →

最新新闻

OPCLink8配置化OPC数据链路:从点位映射到稳定转发

OPCLink8配置化OPC数据链路:从点位映射到稳定转发

简介:OPCLink8是一款面向工业自动化领域的OPC链接软件,用于连接PLC、SCADA、HMI等异构设备,解决多协议环境下数据采集与系统集成难题,支持Modbus、Ethernet/IP、PROFINET及OPC UA等主流标准,适合自动化工程师、系统集成…

2026/10/9 15:18:53 阅读更多 →
AI Agent 智能体架构设计实战:从核心机制到 TaoToken 统一接入的落地路径

AI Agent 智能体架构设计实战:从核心机制到 TaoToken 统一接入的落地路径

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

2026/10/9 15:18:53 阅读更多 →
反编译金蝶SDK解决Newtonsoft.Json版本冲突的完整指南

反编译金蝶SDK解决Newtonsoft.Json版本冲突的完整指南

简介:面对金蝶业务操作平台Web API客户端与广泛使用的JSON序列化组件产生版本冲突的开发者,这份反编译升级工程给出了直接可用的源码和编译结果。在.NET项目中,金蝶的接口调用库经常因依赖的JSON组件版本与项目其他部分不一致,导致…

2026/10/9 15:17:52 阅读更多 →
.NET混淆器实战:dotNET_Reactor汉化版安装配置与避坑指南

.NET混淆器实战:dotNET_Reactor汉化版安装配置与避坑指南

简介:dotNET_Reactor 汉化版是一款面向 .NET 开发者的实用混淆与代码保护工具,主要帮助解决程序被反编译、调试、篡改等风险,适合发布商业软件、插件或对安全性有要求的 .NET 2.0 至 .NET 5 开发者。压缩包共 6 个文件、约 2.58MB&#xff0c…

2026/10/9 15:17:52 阅读更多 →
MySQL 5.7.32 ARM二进制包部署:aarch64环境初始化与避坑指南

MySQL 5.7.32 ARM二进制包部署:aarch64环境初始化与避坑指南

简介:mysql-5.7.32-linux-glibc-2.28-aarch64.tar.gz 是为 ARM64(AArch64)Linux 环境预编译的 MySQL 5.7.32 官方二进制发行包,面向树莓派 4、ARM 云服务器等设备的使用者,可直接部署数据库而无需手动编译。压缩包约 5…

2026/10/9 15:17:52 阅读更多 →
Linux下Ghidra 11.0.2配置与无头模式批量反编译实践

Linux下Ghidra 11.0.2配置与无头模式批量反编译实践

简介:Ghidra 11.0.2 是适用于 Linux 环境的软件逆向工程(SRE)框架,内置反汇编、反编译、脚本执行与插件扩展等完整工具链,适合安全分析、漏洞研究、恶意代码分析及 CTF 逆向等场景。压缩包内共包含 2000 个文件&#x…

2026/10/9 15:17:52 阅读更多 →

日新闻

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API这个话题,隔三差五就会在群里被翻出来讨论一次。上周还有个同事线上处理一个订单超时问题,排查到最后发现是ZonedDateTime序列化后时区丢了,用户在下单当天晚上看到的时间整整差了8个小时。这类问题几乎每个做Java开发的人都遇到过…

2026/10/9 0:00:49 阅读更多 →
EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

前几个月我手头有好几台机器需要互相访问:办公室台式机、家里 NAS、还有一台云主机。如果只是偶尔传个文件倒还好,问题是工作场景经常要在几处环境之间来回切换,每次都先登录跳板机再层层代理,实在折腾。我先后试过端口映射、自建…

2026/10/9 0:00:49 阅读更多 →
AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent 这个词在过去一年里被反复提及,但真正动手搭过一套能跑起来的 Agent 系统的人都知道,从"知道它是什么"到"让它稳定干活"之间隔着一整套工程决策。我前后参与过几个 Agent 项目的落地,从最初用现成框架拼装&…

2026/10/9 0:01:50 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

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

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

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

2026/10/8 15:26:40 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

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

2026/10/9 10:11:06 阅读更多 →

月新闻

我发现了一个新思路:用 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/8 21:13:17 阅读更多 →
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/8 15:26:17 阅读更多 →
黑夜航拍船只数据集训练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/9 6:17:20 阅读更多 →