news 2026/9/6 7:45:04

Zotero+Obsidian+Codex 文献阅读自动化:从 PDF 到结构化笔记的完整工作流

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Zotero+Obsidian+Codex 文献阅读自动化:从 PDF 到结构化笔记的完整工作流

论文读多了,真正的痛点往往不是“看不懂”,而是“整理不过来”。PDF下载了一堆,标题改了又改,读完的结论散落在各个文件夹里,写综述时又得重新翻一遍原文。这次我们来看一套能把这些工作串起来的组合方案:Zotero 负责文献管理和元数据抓取,Obsidian 负责知识库沉淀,Codex 负责自动阅读、总结和字段抽取。三者打通之后,新增一篇 PDF,理论上的工作流可以是:条目自动进入 Zotero,正文文本自动提取,Codex 自动生成摘要、研究问题、方法和结论,最后以结构化笔记的形式落到 Obsidian 里。

本文不吹概念,直接讲能落地的部分。先看这套组合能做什么、门槛在哪里,再给环境准备、安装部署、脚本示例、API 批量调用和排错清单。整套方案不需要显卡,不需要高配置服务器,一台普通开发机能跑 Codex CLI 就能用。如果你是研究生、科研助理,或者需要大批量读文献的研发人员,这篇文章可以直接收藏。

先说清楚,这不是一个现成的“一键安装包”,而是一条可以自建的工作流。Zotero、Obsidian 本体都是免费工具,Codex CLI 需要 Node.js 环境,调用 API 则按官方计费。整套流程的重点在于自动化程度和可复现性:论文元数据用 Zotero 管,笔记模板用 Obsidian 管,AI 总结和结构化抽取用 Codex 管,最后用一个小脚本把三者黏起来。

1. 核心能力速览

能力项说明
项目类型文献阅读自动化工作流:Zotero + Obsidian + Codex
文献管理Zotero 抓取网页文献元数据、附件管理、PDF 存储
知识库管理Obsidian 本地 Markdown 笔记,支持双链、Dataview、模板
AI 阅读辅助Codex CLI / API 对 PDF 文本进行摘要、关键信息抽取、问答
自动化连接Python 脚本监听 Zotero 新增条目,生成 Markdown 笔记
硬件要求普通开发机即可,CPU 足够;无需独立显卡
运行环境Windows / macOS / Linux,需要 Node.js、Python 3、Git(部分操作)
启动方式命令启动 / 脚本监听 / 手动触发
是否支持 API支持,Codex 有 API 接口,Zotero 有本地 Web API
是否支持批量任务支持,可批量补全已有条目的 AI 笔记
适合场景论文阅读、文献综述、知识库积累、字段批量提取

从能力上看,这套流程解决的不是“AI 能不能读论文”,而是“读完的结果去哪里、怎么组织、怎么复用”。Zotero 负责权威的引文数据,Obsidian 负责让笔记成为可检索的知识网络,Codex 负责把 PDF 变成结构化信息。三者互补,比单独使用任何一个工具都完整。

2. 适用场景与使用边界

这套方案适合以下用户:

  • 需要长期阅读大量英文论文,并希望把每篇论文的核心观点沉淀成结构化笔记。
  • 正在写文献综述,需要快速回顾“某一篇论文用了什么方法、结论是什么”。
  • 希望用 AI 辅助翻译、摘要、提取表格、公式或参考文献,但不想把 PDF 内容粘贴到网页工具里。
  • 不满足于只做“PDF 收藏”,而是想建立自己的知识库,并在笔记之间建立引用关系。

需要明确边界:

  • Zotero 抓取文献时,部分数据库或出版社页面可能因为协议变化导致抓取失败,通常需要更新翻译器。
  • Codex 总结的质量严重依赖 PDF 文本提取质量。扫描版 PDF 必须先做 OCR,否则 AI 只会看到乱码。
  • AI 生成内容不代表原文立场,重要结论必须回到原文核对,尤其是数据、数值和实验设置。
  • 使用 Codex API 会产生费用,批量处理前建议先小范围测试 token 消耗。
  • 文献 PDF 的获取和 AI 处理,必须确保你有合法访问和使用权限。不要对未授权文献进行全文处理,也不要将内部未公开稿件发送到外部 API。

3. 环境准备与前置条件

3.1 基础软件清单

软件作用获取方式
Zotero 7文献管理、PDF 存储、生成引文官网下载安装包
Zotero 浏览器插件从网页抓取文献条目Chrome / Edge / Firefox 应用商店
Obsidian笔记知识库,支持 Markdown 和双链Obsidian 官网下载安装包
Obsidian 插件:Zotero Integration在 Obsidian 中导入 Zotero 条目Obsidian 社区插件市场
Python 3.9+运行自动化脚本python.org 或包管理器
Node.js 18+安装并运行 Codex CLInodejs.org
Git拉取脚本或管理配置文件git-scm.com

3.2 Zotero 前置设置

Zotero 除了桌面端,还会在本地启动一个 Web 服务,默认端口通常是23119。自动化脚本需要读取这个服务来查询条目和附件。首次使用前,在 Zotero 的“编辑 -> 设置 -> 高级”里确认“允许其他应用程序通过 HTTP 与 Zotero 通信”是开启状态。同时把“数据目录”位置记住,后面访问 PDF 文件时需要用到。

3.3 Codex CLI 配置

Codex CLI 是 OpenAI 提供的命令行 AI 编程工具,也可以用来处理文件内容。安装前需要:

  • Node.js 18 以上版本。
  • 一个可用的 API Key,或者一个兼容 Codex 接口的本地/远程模型服务地址。
  • 终端代理网络环境请根据实际情况配置,本文不展开网络设置。

安装命令:

npm install -g @openai/codex

安装完成后检查版本:

codex --version

首次运行需要进行登录或 Key 配置。Codex CLI 支持通过环境变量或配置文件设置 API Key。配置示例:

# 临时设置 export OPENAI_API_KEY="your-api-key" # 如果想指定自定义模型或兼容接口,可以设置 base URL export CODEX_API_BASE="https://your-api-endpoint"

3.4 Python 依赖

自动化脚本使用requestspypdf,安装即可:

pip install requests pypdf

如果后续要处理扫描版 PDF,还需要pytesseract或 OCR 工具,这里先不做强制要求。

4. 安装部署与启动方式

4.1 Zotero 安装与浏览器插件

Zotero 安装后,建议先在浏览器应用商店安装官方连接插件。搜索 “Zotero Connector”,安装成功后浏览器地址栏会出现 Zotero 图标。

抓取文献的操作很直接:

  1. 打开论文页面(如 arXiv、PubMed、期刊官网)。
  2. 点击浏览器工具栏的 Zotero 插件图标。
  3. 确认条目信息,保存。

保存后,Zotero 会自动抓取标题、作者、期刊、年份、DOI、摘要等信息。第一次使用时如果遇到“保存此条目时发生错误”,多半是翻译器版本过旧。解决办法是在 Zotero 的“编辑 -> 设置 -> 高级 -> 文件与文件夹”中点击“Reset Translators”来更新翻译器,或者在 Zotero 翻译器仓库下载最新版本。

4.2 Obsidian 安装与 Zotero Integration 插件

Obsidian 安装后,创建一个新的 Vault 目录,这个目录就是你的笔记库。

启用 Zotero Integration 插件的步骤:

  1. 打开 Obsidian 设置。
  2. 进入“第三方插件 -> 关闭安全模式”。
  3. 点击“浏览”,搜索 “Zotero Integration”。
  4. 安装并启用。

Zotero Integration 插件的作用是在 Obsidian 里通过模板将 Zotero 条目一键导入为笔记。但为了做到“自动生成笔记”,后面我们选择直接用 Python 写笔记文件,原因是可以更灵活地集成 Codex 的输出。

4.3 Codex CLI 启动方式

Codex CLI 在终端中的启动方式:

# 进入当前目录,让 Codex 读取文件 codex "请总结当前文件夹中的 research.pdf 的摘要、方法和结论"

Codex 会解析当前上下文中的文件内容,但 PDF 是二进制格式,直接让 Codex 读 PDF 不一定稳定。更可靠的做法是先用 Python 提取 PDF 文本成 txt,再让 Codex 处理。后面我们会把这个过程自动化。

4.4 自动化连接脚本的结构

要串联三个工具,核心流程是:

Zotero 新增条目 -> 脚本查询本地 Zotero Web API -> 获取 PDF 附件路径 -> 提取文本 -> 调用 Codex API 生成结构化笔记 -> 写入 Obsidian Vault 对应目录下的 Markdown 文件

这一步用 Python 实现。先给出读取 Zotero 最新条目的示例:

import requests import urllib.parse zotero_api = "http://127.0.0.1:23119/api/users/0/items/top" # 获取最新的 10 个条目 params = { "limit": 10, "sort": "dateAdded", "direction": "desc", "format": "json" } resp = requests.get(zotero_api, params=params, timeout=5) items = resp.json() for item in items: title = item.get("data", {}).get("title", "") key = item.get("key", "") print(key, title)

运行后,如果能看到 Zotero 中的文献标题,说明本地通信已经打通。

4.5 获取 PDF 附件路径

Zotero 的条目中,PDF 文件存储在 Zotero 数据目录的storage文件夹下。通过 API 可以拿到附件的 key,再拼出文件路径。

import requests base = "http://127.0.0.1:23119/api/users/0/items" parent_key = "XXXXXXXX" # 替换为你的条目 key children = requests.get(f"{base}/{parent_key}/children", timeout=5).json() pdf_path = None for child in children: data = child.get("data", {}) if data.get("contentType") == "application/pdf": pdf_path = data.get("path", "") break print("PDF 相对路径:", pdf_path)

拿到相对路径后,和 Zotero 数据目录拼接即可:

import os zotero_data_dir = "C:/Users/your_name/Zotero/storage" full_path = os.path.join(zotero_data_dir, pdf_path.lstrip("/")) print(full_path)

不同操作系统的路径分隔符需要根据实际环境调整,建议用pathlib.Path做跨平台处理。

4.6 批量监听或手动触发

自动化有两种触发方式:

  • 手动触发:写一个scan.py,每次运行扫描 Zotero 中有哪些条目还没有对应笔记。
  • 定时监听:用watchdog监控 Zotero 数据目录变化,或者用schedule定时轮询。

对于大多数场景,手动触发或定时触发已经足够。监听新增 PDF 并不是刚需,因为通常你会一次性导入一批文献,然后统一生成笔记。

5. 功能测试与效果验证

5.1 验证 Zotero 网页抓取

测试目标:确认浏览器插件能够正确抓取文献信息。

操作:

  • 打开一个 arXiv 论文页面。
  • 点击 Zotero Connector 图标。
  • 选择保存到某个分类。

预期结果:Zotero 中出现条目,标题、作者、摘要、DOI 都已填好。

常见失败:点击图标后没有反应,或提示“Failed to save item”。此时检查浏览器插件是否已连接,Zotero 桌面端是否启动,尝试重置翻译器。

5.2 验证 PDF 文本提取

先提取一本 PDF 的文本,确认 Codex 能有有效输入。

from pypdf import PdfReader reader = PdfReader("example.pdf") text = "" for page in reader.pages: text += page.extract_text() print(text[:2000])

如果提取结果为空或乱码,说明 PDF 是扫描版,需要先 OCR。只有文本层正常,后续 AI 总结才有意义。

5.3 验证 Codex 单篇总结

先用一个最短链路验证:将 PDF 提取的文本保存成paper.txt,然后通过 Codex CLI 提问:

codex "请阅读 paper.txt,输出以下字段:标题、作者、研究问题、方法、数据集、实验结果、局限性、我的看法。每个字段控制在 200 字以内,使用 Markdown 格式。"

预期结果:终端输出一段结构化 Markdown。判断成功标准是字段完整、内容与论文一致、没有明显幻觉。如果输出结果过于笼统,可以补充指令,比如“必须引用原文中的具体数值”。

5.4 验证自动写入 Obsidian

将 Codex 输出保存到 Obsidian Vault 中,建议目录结构:

Vault/ papers/ 2025-DeepSeek-R1.md 2024-Llama3.md

写入脚本示例:

import pathlib vault_papers = pathlib.Path("/path/to/Vault/papers") vault_papers.mkdir(exist_ok=True, parents=True) note_title = "2025-DeepSeek-R1.md" note_content = """# DeepSeek-R1 ## 摘要 AI 生成的摘要内容 ## 研究问题 AI 生成的内容 ## 方法 AI 生成的内容 ## 结论 AI 生成的内容 """ (vault_papers / note_title).write_text(note_content, encoding="utf-8")

验证方式:打开 Obsidian,在papers目录下能看到新生成的 Markdown 文件,且没有乱码。

5.5 批量生成测试

如果 Zotero 中已有几十篇论文,推荐按“先同步元数据,再分批 AI 总结”的方式。

python scan_zotero.py --only-missing --output ./notes

脚本会检查notes下是否已有同名笔记,跳过已生成的条目,只对缺失条目调用 Codex。这样即使中途 API 报错,重新运行也不会重复消费。

6. 接口 API 与批量任务

6.1 Zotero 本地 API

Zotero 本地 API 是简单的 HTTP 接口,不需要鉴权,只能本机访问。几个常用接口:

接口用途
/api/users/0/items/top获取顶层条目
/api/users/0/items/{key}/children获取某个条目的附件
/api/users/0/collections获取分类列表

Python 调用直接用requests即可。注意端口默认是23119,如果被占用,Zotero 会在设置中显示新的端口。

6.2 Codex API 调用示例

Codex API 是 OpenAI 兼容接口。Python 调用示例:

import requests api_key = "your-api-key" endpoint = "https://api.openai.com/v1/responses" # 以官方文档为准 headers = { "Authorization": f"Bearer {api_key}", "Content-Type": "application/json" } payload = { "model": "gpt-5.6-sol", # 需要替换为你实际可用的模型名 "input": "请总结以下论文内容:..." } resp = requests.post(endpoint, headers=headers, json=payload, timeout=120) print(resp.json())

这里需要特别说明:不同时期 Codex 默认模型名称不同,并且如果你的 Key 没有对应模型权限,接口会返回模型不支持的错误。批量任务前,先用命令行或最小脚本确认当前可用的模型名,再写入配置。

6.3 批量任务设计

批量任务建议采用“队列 + 日志 + 断点续跑”结构。

  • 队列:扫描所有 Zotero 条目,生成待处理列表。
  • 日志:记录每个条目的处理状态、API 请求时间、token 消耗。
  • 断点:每次处理前检查目标笔记是否存在;处理失败记录原因,下次重试。

伪代码结构:

import time import json import requests def process_item(item): # 1. 获取 PDF # 2. 提取文本 # 3. 调用 Codex # 4. 写入笔记 return True with open("batch_log.jsonl", "a", encoding="utf-8") as log: for item in items: try: ok = process_item(item) log.write(json.dumps({"key": item["key"], "ok": ok, "time": time.time()}) + "\n") except Exception as e: log.write(json.dumps({"key": item["key"], "error": str(e)}) + "\n")

批量任务一定要控制并发。Codex API 有速率限制,并发过高会直接 429 报错。稳妥的做法是单线程或限制最多 2 个并发。每一篇论文的 token 消耗需要实测,建议先处理 5 篇,看日志估算平均成本,再决定是否全量处理。

6.4 失败重试与中断恢复

API 调用常见失败:

  • 超时:增加 timeout 到 180 秒以上。
  • 模型不支持:更换模型名。
  • 速率限制:等待后重试,建议time.sleep(5)或使用退避策略。
  • 文本过长:截断正文到模型上下文限制内,优先保留摘要、引言、结论和图表标题。

重试代码示例:

for attempt in range(3): try: resp = requests.post(endpoint, json=payload, timeout=180) resp.raise_for_status() break except Exception as e: print(f"attempt {attempt} failed: {e}") time.sleep(10 * (attempt + 1))

7. 资源占用与性能观察

这套方案不是 GPU 密集型任务,重点观察的是 CPU、内存、磁盘和网络。

7.1 内存占用

Zotero 桌面端常驻内存一般在几百 MB 到 1GB 之间。Obsidian 打开大型 Vault 后会占用 500MB 左右。Codex CLI 每次运行会启动 Node.js 进程,内存占用约 200MB-500MB。如果同时开浏览器、Zotero、Obsidian 和 Codex,16GB 内存完全够用,8GB 内存则需要关闭不必要的页面。

7.2 PDF 文本提取耗时

纯文本 PDF 提取速度很快,常见论文 5MB 以内,pypdf提取耗时在 1-3 秒。扫描版 PDF 如果没有 OCR,几秒钟后只会得到空白文本。OCR 会显著增加 CPU 使用,一张页面需要数秒到十几秒不等,建议只在确有必要时开启。

7.3 Codex API 耗时

单篇论文摘要的耗时取决于输入长度、输出长度和模型响应速度。一般来说,一篇 10 页论文完整总结可能需要几十秒。批量任务建议在夜间跑,避免占用工作时段。

7.4 如何降低 token 消耗

  • 不处理全文,只提取前几页(包含标题、摘要、引言开头)和结论部分。
  • 限定输出字段,要求“每个字段不超过 100 字”。
  • 使用抽取式摘要而非生成式摘要,减少输出 token。
  • 对重复处理的论文,缓存中间结果到本地cache/文件夹。

代码中可以通过切片控制文本长度:

max_chars = 12000 if len(text) > max_chars: text = text[:max_chars]

7.5 端口冲突与进程残留

Zotero 本地服务如果启动失败,通常是端口23119被占用。排查方法:

netstat -ano | findstr 23119

找到占用进程后,可以关闭该进程,或者修改 Zotero 设置中的端口号,同时更新脚本中的 URL。

Codex CLI 如果卡住,可以用Ctrl+C中断。批量脚本要做好超时处理,避免某个请求卡死导致整个队列停止。

8. 常见问题与排查方法

问题现象可能原因排查方式解决方案
Zotero 浏览器插件抓取失败翻译器过期,或网页结构变更查看 Zotero 控制台错误信息更新翻译器或手动复制 DOI 添加
保存条目时提示“保存此条目时发生错误”翻译器故障在 Zotero 设置中点击 Reset Translators重置翻译器,或安装 Zotero 翻译器最新版本
Obsidian 下载太慢网络问题检查网络连接使用可访问的下载源,或稍后重试
Codex CLI 安装不上Node.js 版本过低或 npm 源问题执行node -v升级 Node.js,必要时切换 npm 镜像
Codex 报模型不支持API 模型名配置错误查看官方文档确认可用模型替换配置中的模型名
Codex 接口连接失败网络或代理配置问题查看错误日志不配置代理,或正确设置环境变量
Python 请求 Zotero 失败Zotero 未启动或端口错误浏览器访问http://127.0.0.1:23119/api/users/0/items/top启动 Zotero,检查设置中的端口
PDF 提取不到文本扫描版 PDF查看提取结果使用 OCR 工具,或仅处理有文本层的 PDF
生成的笔记乱码编码问题检查文件保存编码使用 UTF-8 编码写入文件
API 批量任务突然报 429触发速率限制检查日志中的响应码降低并发,增加退避等待
批量任务跑到一半中断网络不稳定或超时查看批处理日志设计断点续跑逻辑,重新运行跳过已处理条目
Obsidian 中笔记不显示Vault 路径错误检查脚本输出的文件路径确保写入路径位于 Vault 目录内
Zotero 附件保存位置无法访问数据目录变更查看 Zotero 设置中的数据目录更新脚本中的zotero_data_dir

排查通用思路:先看日志,再确认服务是否启动,最后检查路径和权限。不要上来就重装软件。

9. 最佳实践与使用建议

9.1 第一次先小范围验证

不要一开始就写全自动脚本。建议先用浏览器插件保存 3-5 篇论文,手动跑一次 PDF 提取,再调用一次 Codex,确认每步输出都正常。即使后面脚本化,也保留这个最小流程作为调试入口。

9.2 设计笔记模板时要考虑查询效率

Obsidian 的强项是双链和 Dataview。建议每篇 AI 生成的笔记都包含统一格式的 YAML frontmatter:

--- title: 论文标题 authors: 作者列表 year: 2025 doi: 10.xxxx/xxxx tags: [论文阅读, 领域标签] status: 待精读 ---

这样在 Obsidian 中可以直接用 Dataview 查询全部论文,按年份、标签、阅读状态筛选,比手动管理文件夹高效得多。

9.3 把 Codex 输出作为“第一遍草稿”

AI 总结不一定完全准确,尤其是实验数字和结论。建议将 Codex 生成的笔记标记为“AI 初稿”,后续精读时手动修改状态。这比完全相信 AI 输出要稳妥。

9.4 自动化脚本保持简单

脚本的核心就是“读取 PDF -> 提取文本 -> 调用 API -> 写 Markdown”。不要为了自动化而引入复杂的消息队列、数据库。除非你有大量并发需求,否则一个 Python 脚本加上日志文件已经足够。

9.5 注意隐私和版权

论文 PDF 的获取必须来自合法渠道。如果是内部未发表稿件、受限数据集,或者包含敏感信息,不要将其发送到外部 API。可以在本地部署兼容 Codex 接口的模型,但那样对硬件和配置要求会更高。日常处理公开论文时,也要注意不要批量上传整本图书或明显侵权的文件。

9.6 版本管理和备份

Obsidian Vault 目录本质上是一堆 Markdown 文件,非常适合用 Git 管理。建议为 Vault 建立仓库,每天提交一次。Zotero 的数据目录也可以定期备份。自动化脚本则单独放在一个目录,和笔记库分离。

cd /path/to/Vault git init git add . git commit -m "daily update"

10. 总结与下一步

这套方案最值得尝试的点是:把“论文读完就忘”变成“论文读完自动留下结构化笔记”。你要做的不是手动复制摘要,而是把 PDF 交给 Codex,让它在统一模板下输出摘要、方法、结论和你的备注,再落到 Obsidian 里随时检索。最先应该验证的是三个最关键环节:Zotero 浏览器抓取是否顺畅、PDF 文本提取是否有效、Codex API 调用是否成功。这三个环节跑通,后面的自动化只是把它们连起来而已。

最容易踩的坑有三个:第一,扫描版 PDF 没有文本层,AI 无法阅读;第二,Codex 可用模型名和 API 配置会因为环境不同而变化;第三,批量任务没有日志和断点续跑,中断后又要从头开始。建议在正式批量处理前,先用 5 篇论文跑通全流程,再根据 token 消耗决定是否扩大范围。

后续可以继续扩展的方向包括:给每篇论文自动生成一句话速览并发送到摘要页面;用 Obsidian Dataview 做文献统计面板;把 Zotero 的文献分类自动映射到 Obsidian 文件夹;或者接入本地知识库模型,把 Codex API 换成私有化部署,进一步保护数据隐私。

这套组合不要求你成为脚本专家,但它能帮你把论文阅读从“手动整理”变成“自动归档”。建议收藏备用,下回整理文献时,按这个流程试一遍就知道了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/6 7:41:22

2026年9月实测生成引擎优化公司排名榜单TOP5:技术·交付·ROI全维度对比

2026年9月,全球数字营销领域正经历一场前所未有的范式转移。调研显示,超过68%的中大型企业已将生成引擎优化公司排名作为选型参考,并正式将GEO纳入年度核心战略预算。随着DeepSeek、豆包、文心一言及Kimi等AI搜索平台用户渗透率突破60%&#…

作者头像 李华
网站建设 2026/9/6 7:41:19

自助设备分散管理难?支付盒子一站破解

运营百台以上自助设备的负责人常面临同一困境:设备分布跨区甚至跨市,日常监控、收益分账、故障响应均需投入大量人力,稍有疏漏便直接影响营收。 传统方案中,运营商需派专人现场巡检投币箱、手工对账,与场地方及合伙人分…

作者头像 李华
网站建设 2026/9/6 7:38:59

智能温室环境监测系统实战:从传感器选型到数据上云完整指南

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

作者头像 李华
网站建设 2026/9/6 7:37:42

现在热门的AI论文写作工具有哪些品牌?学生党亲测反馈

每到期末、毕业答辩、课题申报阶段,很多学生都会陷入论文写作的困境:选题毫无头绪、大纲逻辑混乱、正文撰写耗时长、参考文献格式出错、查重重复率偏高、AIGC检测告警、本校排版标准复杂。纯人工从零开始撰写、反复修改格式和降重,不仅耗费数…

作者头像 李华
网站建设 2026/9/6 7:37:15

2026随身WiFi避坑指南:选购技巧与热销机型横评,别交智商税

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

作者头像 李华
网站建设 2026/9/6 7:35:45

日本游 - D2 - 大阪环球影城

偷偷吐槽一下,后来发现yao做的攻略很多靠AI直接生成,很多路线没有经过Google Map验证,导致有些攻略跟实际会有出入,特别是路线行程上,昨日的大阪地铁站迷路就是其中一例。但yao还是坚持她攻略的正确性,很坚…

作者头像 李华