# List Table Extraction

> 从权威页面批量提取结构化列表数据（作品列表、成员名单、事件列表等）

- Skill: `antins-labs/list-table-extraction` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add antins-labs/list-table-extraction`
- Raw SKILL.md: https://api.skillmd.com/api/skills/antins-labs/list-table-extraction/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: antins-labs (https://skillmd.com/u/antins-labs)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/antins-labs/list-table-extraction

---


# Skill: List & Table Extraction（结构化列表批量提取）

## 目标
解决从权威页面（如 Wikipedia、IMDb、官方数据库）提取结构化列表或表格数据时，
因逐行搜索或迭代提取导致的搜索死循环和效率低下问题。
核心策略：**定位聚合页 -> 批量提取 -> 本地过滤**，一次完成。
**扩展策略**：对于跨实体的宽泛查询，采用**实体分解 -> 并行提取 -> 结果聚合**的策略。

## 适用场景
1. **作品列表提取**：某人/团体的完整作品表（电影、游戏、专辑、书籍）
2. **成员名单提取**：某组织/机构的成员列表、历任领导人
3. **事件边界列表**：时间范围由历史事件定义的列表（如"东印度公司统治期间的总督"）
4. **属性聚合表**：多个同类实体的同一属性（如各共和国的领导人、各球场容量）
5. **时间/条件过滤列表**：需要对完整列表按年份、类型等条件过滤的子集
6. **学术成果列表**：某机构/个人在特定会议/期刊发表的论文标题列表（如"清华大学NLP组在ACL 2026发表的论文"）
7. **预发布学术统计**：会议官方程序尚未发布时，从实验室主页、arXiv 预印本或官方公告中批量提取已确认的录用/投稿统计（如"ACL 2026 国内各 NLP 组录用情况"）
8. **多赛事奖项列表**：同一机构在同一年份参加多项赛事并获奖的清单（如"2019年中南大学在A赛与B赛分别获得的奖项"）
9. **跨实体聚合列表**：目标列表覆盖多个独立实体（如品牌、国家、机构），且不存在单一权威汇总页（如"国内所有电车品牌2022-2025年发布车型"），需按实体分解后并行提取。
10. **历史时间窗口产品列表**：需要提取特定历史时间段内发布的产品或模型（如"2022-2025年发布的电车"），而非当前在售列表。

## 不适用场景
- 单一事实查询（如"谁导演了这部电影？"）
- 需要从每个实体的独立详情页获取深层属性（应使用分布式属性检索）
- 非结构化文本摘要

## 核心原则

### 原则1：聚合源优先
第一步必须尝试寻找包含完整数据的"聚合页面"（如 Wikipedia 的"List of..."页面）。
严禁直接遍历实体列表进行单独搜索。

### 原则2：实体页优先于列表搜索
永远不要直接搜索"完整列表"。搜索引擎很难返回完美的列表页面，但很容易返回实体主页。
搜索目标应是"人/团体名 + 权威来源"，到达页面后再定位列表章节。

### 原则3：批量优于迭代
绝对禁止逐个点击链接或逐行提取证据。必须将整个数据源视为一个整体对象。
一旦定位到包含列表的页面，使用代码（Python/Pandas）批量解析。

### 原则4：事件边界先解析
如果时间范围由历史事件隐式定义，必须先将事件解析为具体年份，
再进行列表提取和过滤。未解析边界前，禁止大规模列表提取。

### 原则5：预发布数据识别
当目标会议/事件尚未正式发布完整列表时，优先搜索：
- 实验室官网的"News"或"Publications"栏目
- 官方 Twitter/Weibo 公告合集页
- arXiv 预印本列表（按机构+会议关键词过滤）
- 会议官方 Blog 的"Accepted Papers"预发布页

### 原则6：多赛事并行分解
当查询包含"同一年份 + 多项赛事/活动"时，按（赛事, 年份）原子对拆分为并行子任务；
每个子任务独立搜索对应赛事的获奖公告或新闻页，再统一由 auto_extraction 收割奖项段落。

### 原则7：宽泛范围实体分解
当查询范围过宽（如"国内所有电车"），导致单一权威页面不存在时，必须先识别关键子实体（如主要品牌），将任务分解为多个并行的子查询。严禁试图寻找一个包含所有数据的"超级列表页"，应采用"分而治之"策略，按品牌/类别分发并行任务。

### 原则8：历史回溯优先于当前列表
当查询涉及特定历史时间窗口内的产品发布（如"2022-2025年发布的车型"）时，严禁仅依赖当前的"产品列表"或"在售车型"页面。当前列表通常只展示在售款，缺失已停产或迭代款。
必须优先搜索"Timeline"（时间线）、"History"（历史）或"Model Year"（年款）页面，或按年份拆分查询（如"Models released in 2023"），以确保覆盖该时间窗口内的所有历史条目。

## 执行流程

### Step 1：识别数据类型与范围策略
- 分析查询，确定目标实体类型和所需属性
- **范围评估**：判断是否存在单一聚合页。如果范围涵盖多个大类实体（如多个品牌、多个国家），优先执行实体分解策略（见原则7）。
- **时间窗口评估**：如果查询特定过去时间段的产品列表，确认是否需要历史时间线页面而非当前产品目录（见原则8）。
- 如果涉及事件边界，先执行子查询获取具体年份
- 构造聚合查询词定位数据源

**查询模板**：
- 作品列表：`{Entity Name} filmography/discography site:wikipedia.org`
- 成员名单：`List of {Entity} members site:wikipedia.org`
- 属性聚合：`List of {attribute} of {entity_type}`
- 对比表：`{entity_type} comparison table {attribute}`
- 学术列表：`{Institution} {Conference} {Year} papers site:aclanthology.org`
- **预发布学术统计**：`{Conference} {Year} accepted papers site:{lab_homepage_domain} OR site:arxiv.org`
- 多赛事奖项：`{Institution} {Year} {Competition Name} award site:edu.cn`
- **跨实体分解**：`{Brand/Category} {Product Type} list {Year}` (用于并行子任务)
- **历史时间线**：`{Brand} {Product} history timeline site:wikipedia.org`
- **年份发布列表**：`{Brand} models released in {Year}`

### Step 2：验证页面结构
打开搜索结果中最权威的页面后：
- 确认页面包含结构化的表格或列表
- 检查表格表头是否包含目标属性（特别是时间属性，如"Release Date"或"Year"）
- 如果属性缺失，判断是否需要转向详情页遍历

### Step 3：批量数据提取
- 打开目标页面后用 `find()` 定位表格行，或用 Python 解析原 HTML
- 提取所有行数据到内存，而非逐行手动提取
- 保留实体名称和详情页链接（为后续可能的深层属性查询做准备）

### Step 4：数据清洗与过滤
在本地环境中处理数据：
- 应用过滤条件（年份范围、类型限制等）
- 清洗格式（去除引用标记、统一日期格式）
- 对事件边界列表，用解析出的年份进行严格数字比较
- 当需要计数时，先按日期列过滤再计数，避免手动逐条核对

### Step 5：输出与验证
- 确保所有列名符合问题要求
- 检查边界年份附近的条目（开区间/闭区间）
- 如聚合页缺少部分数据，仅对缺失项进行单独检索（兜底策略）


