# Vertical manifest v1 — `kind` selects the runtime in src/extract/vertical/.
version: 1
order: 15
name: arxiv
# api-xml: HTTP Atom/XML → extract (xml:first, xml:all, xml:attr, …).
kind: api-xml
description: arXiv paper metadata, abstract, authors, and categories.
urlPatterns:
  - https://arxiv.org/abs/:id
  - https://arxiv.org/pdf/:id
# Runtime requirements for the scrape host.
requirements:
  requiresBrowser: false
  requiresLLM: false
  requiresCloud: false
# Declared output facets (discovery / tooling).
capabilities:
  - paper_metadata
  - abstract
  - authors
  - categories
  - pdf
source: builtin
# HTTP request (api-json / api-xml / text-extract). {{captures}} interpolate into urlTemplate.
request:
  urlTemplate: https://export.arxiv.org/api/query
  queryParams:
    id_list: "{{id|encodeURIComponent}}"
# Output projection: api-json uses $.paths; aggregate/chain/workflow use @.scope and |transforms.
extract:
  id: xml:first:entry>id|clean|after:/abs/
  title: xml:first:entry>title|clean
  summary: xml:first:entry>summary|clean
  published: xml:first:entry>published|clean
  updated: xml:first:entry>updated|clean
  authors: xml:all:entry>author>name|clean
  categories: xml:attrs:entry>category@term|clean
  pdfUrl: xml:attr:entry>link[title=pdf]@href
