diff --git a/CHANGELOG.md b/CHANGELOG.md
index abd414d..e4b08c1 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,26 @@
# Changelog
+## 0.5.3
+
+### Features
+
+- **`--filter-title-block-id` 精确过滤**:新增 CLI 选项与 `ConvertOptions.filterTitleBlockId`,按 heading 块 id 严格匹配目标章节,彻底规避同名标题歧义;与 `--filter-title` 互斥
+- **`get-titles` 子命令**:一键列出 docx/wiki 文档全部标题(1~9 级),支持 `yaml` / `yaml-tree` / `json` / `tree` / `text` 五种输出格式与 `--max-level` 限级;不支持 sheets
+- **`--filter-title` / `--filter-title-block-id` 注入父级标题**:命中深层标题时,自动把所有更高层级的祖先标题(仅 heading 块本身)按文档顺序一并输出,保留章节层级上下文;顶级命中不注入,跳级不伪造中间层,旁支兄弟自动排除
+- **标题元信息结构化**:导出 `HeadingInfo`(`blockId` / `level` / `text`),`--filter-title` 未命中时错误信息改为与 `get-titles` 同形的 yaml 清单,AI/脚本可直接据此重选 blockId,形成错误恢复闭环
+
+### Fixed
+
+- **表格 `row_span` / `col_span` 容错**:飞书接口可能返回 `undefined`,解析时兜底为 1,避免崩溃
+
+### Changed
+
+- **docx 表格输出改为 Markdown 管道格式**:原 `
` HTML 输出(包含 `rowspan` / `colspan`)改为标准 GFM 管道表格;合并单元格按「复制顶格值」策略展开,单元格内容自动转义 `|` 与换行;`Table` 与电子表格 `Sheet` 现使用同一 `renderMarkdownTable` 实现
+- **`--agent` 取值规范化**:CLI `--agent` 与环境变量 `LARK_DOCX2MD_AGENT` 显式接受 `stdout` 或 `local`;不带值的 `--agent` 仍等价于 `stdout`,但环境变量原 `true` 形式已不再支持,需改写为 `LARK_DOCX2MD_AGENT=stdout`
+- **请求限速放宽**:`getDocxBlocks` 分页间隔 100 → 50ms、图片下载间隔 600 → 300ms,大文档转换更快
+- **代码组织拆分**:将 `getTitles` / `buildTitleTree` 从 `converter.ts` 抽离至独立模块 `src/get-titles.ts`,URL 解析逻辑迁移至 `src/url.ts`
+- **SKILL 工作流升级**:`skills/lark-docx2md/SKILL.md` 指定标题场景改为「`get-titles` → 匹配 blockId → `dl --filter-title-block-id`」三步式,支持单标题、多级路径、同名同路径等多种消歧场景
+
## 0.5.2
### Fixed
diff --git a/README.md b/README.md
index afc49d6..f92dd82 100644
--- a/README.md
+++ b/README.md
@@ -42,9 +42,10 @@ npx -y lark-docx2md@latest download
| `--app-id ` | 飞书应用 App ID | `LARK_DOCX2MD_APP_ID` | — |
| `--app-secret ` | 飞书应用 App Secret | `LARK_DOCX2MD_APP_SECRET` | — |
| `-o, --output ` | 输出目录 | `LARK_DOCX2MD_OUTPUT` | `./larkDocx2mdOutput` |
-| `--agent [mode]` | Agent 模式:日志 ERROR。不传值(或 `=true`)为在线模式,Markdown 输出到 stdout;传 `local` 则落盘后输出引导 AI 读取的提示词 | `LARK_DOCX2MD_AGENT=true\|local` | `false` |
+| `--agent [mode]` | Agent 模式:日志 ERROR。不传值(或 `=stdout`)为在线模式,Markdown 输出到 stdout;传 `local` 则落盘后输出引导 AI 读取的提示词 | `LARK_DOCX2MD_AGENT=stdout\|local` | `false` |
| `--image-mode ` | 图片处理模式:`local`(下载到本地)或 `online`(24h 临时链接) | `LARK_DOCX2MD_IMAGE_MODE` | `local` |
| `--filter-title ` | 按标题过滤:仅转换匹配标题及其下级内容(匹配到同级或更高级标题时截止) | — | — |
+| `--filter-title-block-id ` | 按 heading 块 id 精确过滤(无同名歧义),通常配合 `get-titles` 子命令获取;与 `--filter-title` 互斥 | — | — |
| `--wb-format ` | 画板输出格式:`base64`、`inline-svg`、`svg`、`yaml` | `LARK_DOCX2MD_WB_FORMAT` | `svg`(agent 下默认 `yaml`) |
| `--wb-bg