修复知乎vscode(Markdown)文章发布
重启:一个在 VS Code 中一键将当前 Markdown 发布到知乎文章的扩展,专注于最小必要功能与稳定性。
和类似项目的区别(由于zhihu升级,类似项目大多已经无法使用)
- 0帧起手,没有任何配置项
- 内置浏览器核心,不依赖Chrome/Chromium
- 打包大小不到 5MB
- 只专注于知乎文章发布,没有多余功能
- 积极维护,修复各种登录与风控问题(类似项目大多已经荒废)
功能特性
- 自动获取当前活动 Markdown 内容(无需保存到临时文件)
- 持久化登录(使用
globalStorage 下的浏览器用户数据目录)免重复扫码,失败时自动清理目录重试
- 浏览器 headless 优先:后台静默完成导入流程;需要扫码或风控验证时自动切换到可视模式
- 风控验证增强:检测风险页、按钮高亮提示、轮询头像出现后继续流程
- 模态框导入 Markdown,自动填写标题(移除扩展名与前后多余分隔)
- 状态栏实时显示流程阶段(就绪/启动/登录/风控/导入/完成/失败),仅在 Markdown 编辑器活动时可见
- 系统默认浏览器中打开知乎编辑页或复制文章链接到剪贴板(可选)
- 单实例浏览器管理:发布前关闭旧的 Puppeteer 实例,避免资源泄漏
- User-Agent 通过 CDP
Network.setUserAgentOverride 设置,兼容新版 API
快速开始
- 安装依赖:
npm install
- 构建:
npm run compile
- 打开任意 Markdown (
.md/.markdown/...) 文件(扩展通过 activationEvents: onLanguage:markdown 自动激活,状态栏出现 Zhihu: 就绪)
- 命令面板执行:
发布当前 Markdown 到知乎
使用流程(概览)
- 检测并关闭旧浏览器实例(如果存在)
- 以 headless 模式启动 Puppeteer → 快速头像检测判断是否已登录
- 未登录则切换到可视模式重新 launch(扫码 / 微信登录 / 风控验证)
- 登录与验证通过后再重新 headless launch 进入专栏写作页
- 打开导入模态框 → 上传当前 Markdown → 自动填标题 → 等待页面完成渲染
- 提示是否打开系统浏览器/复制链接 → 完成并保持状态栏
完成
浏览器模式切换策略
由于运行时无法直接从有头切换为 headless,流程采用“按需重启”:
- 初次尝试 headless(速度快) → 需要交互则关闭并重启为可视
- 登录/风控完成后关闭可视浏览器 → 再次以 headless 启动执行导入与填写标题
- 每次
launch 都会更新全局 activeBrowser,命令结束或开始下次命令前统一关闭旧实例
登录与风控细节
- 快速登录检测:访问主页并查找头像元素/相关选择器
- 扫码:如果出现二维码区域,等待用户操作直到检测到头像
- 风控验证:
- 识别页面中文案(如“风险”相关关键词)
- 高亮验证按钮(通过注入样式)
- 定时刷新或轮询是否通过(检测用户信息元素出现)
- 超时后给出交互提示,可选择重试/放弃
状态栏状态说明
| 状态 |
文案 |
说明 |
| idle |
Zhihu: 就绪 |
扩展已激活且 Markdown 文件处于活动 |
| launching |
启动浏览器… |
正在创建 Puppeteer 实例 |
| loggingIn |
登录中… |
等待扫码或登录完成 |
| risk |
风控验证… |
用户需在浏览器中手动完成验证 |
| importing |
导入中… |
正在上传并填写标题 |
| done |
导入完成 |
成功,可能显示链接操作提示 |
| error |
失败 |
发生异常,可再次点击重试 |
后续增强想法
- 可配置始终显示状态栏(即使非 Markdown)
- 命令:手动关闭浏览器实例 / 清理登录缓存目录
- 发布进度通知(弹窗或 OutputChannel 日志)
- 自动截图或保存导入前后 HTML 片段用于排错
- 图片与资源上传支持
许可
MIT
| |