自定义文章源设置技能Skill custom-source-setup

这是一个基于LLM的智能网站文章源自动配置工具,能够通过分析网页结构自动检测文章列表、提取CSS选择器,无需手动编写抓取规则。主要功能包括网站内容自动识别、文章字段智能提取、搜索过滤器检测、分页处理等,帮助用户快速将任何学术网站、期刊平台或博客添加为论文发现源。关键词:LLM网页分析,自动抓取配置,学术论文源,CSS选择器检测,网站内容提取,智能数据采集,研究文献发现,自动化工作流

AI智能体 4 次安装 33 次浏览 更新于 2/26/2026

name: custom-source-setup description: 使用LLM驱动的自动检测功能,从任何网站设置自定义文章源。当用户要求添加新源、抓取网站、创建工作流或需要从尚未支持的网站获取论文时使用。 tools:

  • analyze_source_url
  • refine_source_selectors
  • confirm_source_workflow
  • list_available_sources

自定义源设置

自动配置来自任何网站的新文章源。系统使用LLM分析页面结构、检测文章列表并提出CSS选择器 - 无需手动配置抓取规则。

何时使用此技能

当用户出现以下情况时加载此技能:

  • 提及他们想要获取论文的URL或网站
  • 要求“添加源”或“抓取网站”
  • 需要内置源列表中未包含的期刊/会议的论文
  • 说类似“你能查看Nature的论文吗?”或“从这个网站获取文章”的话

使用的工具

工具 用途
list_available_sources 检查已存在的源
analyze_source_url 自动检测任何URL上的文章结构
refine_source_selectors 如果检测结果错误,进行修正
confirm_source_workflow 保存为永久发现源

快速设置流程(3-5分钟)

添加新源:

步骤1:分析URL
analyze_source_url(url="https://example.com/papers")

步骤2:与用户一起审查
- 显示置信度分数(高/中/低)
- 显示找到的文章数量
- 显示2-3个示例文章(标题、作者、URL)
- 询问:“这看起来正确吗?”

步骤3:如果需要,进行优化(可选)
如果用户指出有错误:
refine_source_selectors(
  url="https://example.com/papers",
  current_selectors={...来自步骤1...},
  user_feedback="标题在摘要部分,而不是标题部分"
)

步骤4:确认并保存
confirm_source_workflow(
  url="https://example.com/papers",
  name="example_papers",  # 使用清晰、唯一的名称
  article_container_selector="...",  # 来自分析输出
  selectors={...},  # 来自分析输出
  pagination_selector="...",  # 如果检测到
  search_filters=[...],  # 如果检测到
)

详细工作流程

1. 检测意图

注意以下信号:

  • 用户提供URL:“你能抓取https://www.nber.org/papers吗?”
  • 用户提及网站:“我想要Nature的论文”
  • 用户询问添加源:“如何添加自定义源?”

响应模式

我可以将该网站设置为源。让我分析页面结构...

2. 分析URL

调用analyze_source_url(url=...)并解析结果。工具返回:

  • page_type:会议论文集、期刊目录、搜索结果等
  • confidence:0.0-1.0的分数
  • total_articles_found:检测到的文章容器数量
  • selectors:可以提取哪些字段(标题、作者、摘要、URL、PDF、DOI等)
  • sample_articles:3个示例提取用于验证
  • search_filters:检测到的搜索输入、日期过滤器、排序下拉菜单
  • pagination_selector:如果存在分页

3. 向用户呈现结果

格式化清晰的摘要,显示检测到的内容:

## 分析结果:[域名]

**置信度**:[🟢 高 / 🟡 中 / 🔴 低] ([分数])
**页面类型**:[类型]
**找到的文章**:[数量]

**可以提取**:
- 标题 ✓
- 作者 ✓
- 摘要 ✓
- URL ✓
- PDF链接 ✓
- 发布日期 ✓

**检测到的搜索过滤器**:[数量]
- 关键词搜索输入:[是/否]
- 日期过滤器:[是/否]

**示例文章**:
1. [标题] 作者 [作者]
2. [标题] 作者 [作者]
3. [标题] 作者 [作者]

这看起来正确吗?如果不正确,请描述问题所在,我可以进行优化。

置信度解释

  • 高 (≥0.8):非常可靠,正确提取了所有关键字段
  • 中 (0.6-0.8):良好,可能缺少一些字段,如摘要或日期
  • 低 (<0.6):不确定,请仔细验证样本或尝试不同的页面

4. 处理用户响应

如果正确:继续步骤5(确认)

如果不正确:请用户描述问题:

  • “标题被截断了” → 选择器太窄
  • “这些不是文章,是新闻帖子” → 错误的容器选择器
  • “缺少作者” → 作者选择器需要调整
  • “URL损坏了” → 相对URL解析问题

然后调用refine_source_selectors()并提供他们的反馈。LLM将提出修正的选择器。显示新结果并再次询问。

5. 确认并保存

一旦用户批准,询问名称:

我应该如何称呼这个源?(例如,“nber_working_papers”、“nature_neuroscience”)

然后调用confirm_source_workflow()

confirm_source_workflow(
  url="https://...",
  name="[用户提供的名称]",
  description="[域名]的自动检测源",
  article_container_selector="...",  # 来自分析
  selectors={...},  # 来自分析
  pagination_selector="...",  # 来自分析
  search_filters=[...],  # 来自分析
  max_articles_per_run=100,
)

6. 解释后续步骤

确认后,向用户解释:

✓ 源“[名称]”已添加!

**这意味着**:
- 当您为研究问题运行发现时,您的关键词将输入到此网站的搜索框中(如果检测到)
- 系统将从列表中提取文章,遵循分页,并在遇到已找到的论文时停止
- 来自此源的文章会自动与其他源去重

**要使用此源**:
将其添加到研究问题的`selected_sources`列表中,或使用`["*"]`查询包括此源在内的所有源。

错误处理

问题 解决方案
置信度 < 0.5 建议尝试不同的页面(例如,搜索结果与主列表)
找到0篇文章 页面可能没有文章列表;验证URL
仅检测到标题 基本源可接受;摘要/作者可能在详情页上
LLM分析失败 使用备用启发式方法;结果可能不太准确
用户反馈没有帮助 请用户描述HTML结构或手动提供示例文章

示例对话

示例1:简单成功案例

用户:“你能从NBER工作论文获取论文吗?”

代理

我将设置NBER为源。让我分析他们的论文页面...

[调用 analyze_source_url("https://www.nber.org/papers")]

## 分析结果:NBER工作论文

**置信度**:🟢 高 (1.00)
**页面类型**:文章列表
**找到的文章**:34

**可以提取**:
- 标题 ✓
- 作者 ✓
- 摘要 ✓
- URL ✓
- 发布日期 ✓

**检测到的搜索过滤器**:2
- 关键词搜索输入:是
- 排序下拉菜单:是

**示例文章**:
1. “创建高机会社区:来自HOPE VI计划的证据” 作者 Raj Chetty, Rebecca Diamond等
2. “环境暴露差距在缩小吗?” 作者 Glenn Sheriff, Danae Hernandez-Cortes等

这看起来正确吗?

用户:“是的,看起来完美”

代理

太好了!我应该如何称呼这个源?(例如,“nber_working_papers”)

用户:“nber_working_papers”

代理

[调用 confirm_source_workflow(...)]

✓ 源“nber_working_papers”已添加!

此源现已激活,当您运行发现时,如果使用selected_sources=["*"]或明确将“nber_working_papers”添加到研究问题的源列表,它将被包含在内。您的关键词将输入到搜索框中,系统将跨多个页面提取文章,直到遇到已找到的论文。

示例2:需要优化

用户:“从https://jmlr.org/papers/添加论文”

代理

[调用 analyze_source_url("https://jmlr.org/papers/")]

## 分析结果:JMLR

**置信度**:🟡 中 (0.65)
**找到的文章**:124

**示例文章**:
1. “第25卷” 作者 未知
2. “论文” 作者 未知
3. “论文集” 作者 未知

置信度为中。标题看起来像是卷/节标题,而不是实际的论文标题。这可能不是正确的页面 - 您可以尝试特定的卷页面吗?

用户:“试试https://jmlr.org/papers/v25/”

代理:[在更好的URL上重复分析,得到正确结果]

示例3:用户反馈优化

用户:“这些样本中的作者字段是空的”

代理

让我优化作者选择器...

[调用 refine_source_selectors(
  url="...",
  current_selectors={...},
  user_feedback="作者字段为空,请找到正确的作者元素"
)]

## 优化结果

**找到的文章**:87
**置信度**:🟢 高 (0.90)

**示例文章**:
1. “论文标题” 作者 John Smith, Jane Doe
2. “另一篇论文” 作者 Alice Johnson, Bob Wilson

这样更好吗?

最佳实践

  1. 始终先检查现有源:在设置新源之前调用list_available_sources()以避免重复
  2. 使用特定的列表页面:会议论文集页面、期刊目录或搜索结果页面效果最好
  3. 仔细验证样本:2-3个示例文章显示将提取的内容 - 确保它们是实际的论文,而不是导航元素
  4. 良好的命名:使用小写字母和下划线(例如,acm_dlieee_xploreplos_one
  5. 注意身份验证:如果网站需要登录,设置requires_authentication=true(身份验证设置是单独的)

限制

  • 在文章列表页面上效果最好(不是单个文章详情页面)
  • 无法处理需要JavaScript交互的网站(搜索表单除外)
  • 无法解决验证码或复杂的身份验证流程
  • 某些网站可能阻止自动访问(遵守robots.txt)
  • 对于结构不寻常的网站,可能需要手动配置

响应模板

成功设置后:

✓ 自定义源“[名称]”现已激活!

**源详情**:
- 域名:[域名]
- 提取的字段:[标题、作者、摘要等]
- 搜索支持:[是/否]
- 分页:[是/否]

**用法**:
当您创建或更新研究问题时,将`"[名称]"`添加到`selected_sources`列表中。系统将:
1. 将您的研究关键词输入到网站的搜索框中(如果检测到)
2. 跨多个页面提取文章
3. 在遇到已收藏中的论文时停止
4. 与其他源的文章去重

想测试它吗?使用此源创建研究问题,或将其添加到现有问题中!