- ads_metadata_search: 移除 ads 库依赖,改用 requests 直连 ADS REST API; 移除硬编码 API Key,改为 .env 文件/环境变量加载 - 新增 ads_html_to_obsidian skill:将下载的 HTML 文献批量转换为 Obsidian Markdown 笔记(BS4 提取正文 + Pandoc 转换 + 清洗后处理) - 两个 SKILL.md 中的 Windows 绝对路径改为相对路径
90 lines
3.4 KiB
Markdown
90 lines
3.4 KiB
Markdown
---
|
||
name: ads_html_to_obsidian
|
||
description: "将 ADS 下载的 HTML/PDF 天体物理文献批量转换为 Obsidian Markdown 笔记格式。当用户要求将下载的论文转为 Obsidian 笔记、将 HTML 文献转为 Markdown、或者在使用 ads_literature_downloader 之后需要整理文献到 Obsidian 知识库时,务必触发并使用本技能。当用户提到 '转换文献'、'导入 Obsidian'、'整理论文'、'放到笔记库' 等关键词时也应触发。"
|
||
---
|
||
|
||
# ADS HTML to Obsidian (ADS 文献转 Obsidian 笔记)
|
||
|
||
本技能将 `ads_literature_downloader` 下载的 HTML 文献批量转换为 Obsidian Markdown 格式的笔记文件。它会:
|
||
|
||
1. 从 HTML 中提取论文正文(使用 BeautifulSoup)
|
||
2. 通过 Pandoc 将 HTML 转为干净的 Markdown
|
||
3. 清理转换残留标记(CSS class、div、脚注等)
|
||
4. 生成带有 YAML frontmatter 的 Obsidian 笔记文件
|
||
5. 对于无法获取全文的文献,自动回退为仅保存摘要
|
||
|
||
## 依赖
|
||
|
||
- Python 虚拟环境中需安装 `beautifulsoup4`(`uv pip install beautifulsoup4`)
|
||
- 系统需安装 `pandoc`(`sudo apt install pandoc`)
|
||
|
||
## 运行方式
|
||
|
||
本技能通过附带脚本 `scripts/convert.py` 执行批量转换:
|
||
|
||
```bash
|
||
python .claude/skills/ads_html_to_obsidian/scripts/convert.py \
|
||
<metadata.json> \
|
||
<download_dir> \
|
||
<output_dir>
|
||
```
|
||
|
||
### 参数说明
|
||
|
||
- `metadata.json`:由 `ads_metadata_search` 技能生成的文献元数据 JSON 文件,包含每篇论文的 `bibcode`、`title`、`author`、`year`、`abstract`、`pub`、`doi` 等字段
|
||
- `download_dir`:由 `ads_literature_downloader` 技能创建的下载目录,内含 `HTML/` 和 `PDF/` 子目录
|
||
- `output_dir`:Obsidian 笔记库的目标目录(如 Obsidian vault 中的主题文件夹)
|
||
|
||
### 输出格式
|
||
|
||
每个文献生成一个以 bibcode 命名的 `.md` 文件,格式如下:
|
||
|
||
```yaml
|
||
---
|
||
title: "论文标题"
|
||
author: ["作者1", "作者2"]
|
||
publisher: "期刊名"
|
||
source: "https://ui.adsabs.harvard.edu/abs/BIBCODE/abstract"
|
||
date: "2025-01-01"
|
||
tags: "Astrophysics-Solar-and-Stellar-Astrophysics"
|
||
---
|
||
|
||
# 论文标题
|
||
## [ADS: ADS链接](ADS链接)
|
||
|
||
论文正文(Markdown 格式)...
|
||
```
|
||
|
||
如果 HTML 全文无法转换(如会议摘要、星表、HST 提案等),文件中会包含 `## Abstract` 部分和摘要文本。
|
||
|
||
## 典型工作流
|
||
|
||
本技能通常与其他 ADS 技能配合使用:
|
||
|
||
1. **搜索文献**:使用 `ads_metadata_search` 搜索并保存元数据到 `results.json`
|
||
2. **下载文献**:使用 `ads_literature_downloader` 下载 PDF/HTML 到 `download_dir/`
|
||
3. **转换笔记**:使用本技能将下载的文献转为 Obsidian 笔记
|
||
|
||
```bash
|
||
# 完整工作流示例
|
||
# Step 1: 搜索
|
||
python .claude/skills/ads_metadata_search/scripts/search.py \
|
||
--query '"hot subdwarf"' --output results.json --rows 50 --year_range 2025-2026
|
||
|
||
# Step 2: 提取 bibcodes 并下载
|
||
python .claude/skills/ads_literature_downloader/scripts/download.py \
|
||
--bibcode_file bibcodes.txt --output_dir ./papers --threads 3
|
||
|
||
# Step 3: 转换为 Obsidian 笔记
|
||
python .claude/skills/ads_html_to_obsidian/scripts/convert.py \
|
||
results.json ./papers /path/to/obsidian/vault/TopicFolder
|
||
```
|
||
|
||
## 脚本输出
|
||
|
||
运行时会显示每篇文献的转换状态:
|
||
- `[HTML->MD]`:成功从 HTML 转为 Markdown(含全文)
|
||
- `[Abstract only]`:无法获取全文,仅保存摘要
|
||
|
||
结束后统计总数、成功转换数和仅摘要数。
|