Skip to content
The Register

Docs to Answers Pack — Citable AI-Ready Chunks

Turn a documentation site into a corpus an AI can answer FROM and CITE. Splits on headings rather than character counts, attaches a heading path and deep link to every chunk, drops boilerplate that repeats across pages, and hashes each chunk so you re-embed only what changed.

Docs to Answers Pack — Citable AI-Ready Chunks returns 14 documented output fields, including chunkId, text, headingPath, heading and sourceUrl. Every field carries a declared type, a written description and an example value. 47 runs are recorded on Apify.

Run it on ApifyPay per result · no subscription
14
Output fields
18
Inputs
47
Runs
2026-10-16
Last run

01 — output

What it returns

Every field the extractor writes to its dataset, with its type, a written description and an example value.

FieldTypeWhat it holdsExample
chunkIdstringnullStable identifier for this chunk, derived from its content so it survives re-runs.<chunkId>
textstringnullPlain text content of this record.<text>
headingPathstringnullFull heading path from the page root, joined with ' > '.<headingPath>
headingstringnullHeading this record sits under.<heading>
sourceUrlstringnullThe page or endpoint this row was read from.https://api.example.com/v1/items
citationUrlstringnullURL the answer cited.<citationUrl>
pageTitlestringnullTitle of the page this record was read from.<pageTitle>
positionintegernullPosition in the source's ordering.3
tokensEstimateintegernullEstimated token count of the text, for sizing against a model context window.1180
charCountintegernullNumber of characters in this record's text.4821
contentHashstringnullHash of this record's content.a8f3c9e1b2d40456
duplicateCountintegernullRows that repeat a value already seen in this run.0
changeTypestringnullWhat changed: initial, content, status, or a combination.content
mergedHeadingsstringnullHeadings merged into one line, for compact display.<mergedHeadings>

02 — sample

One record

Assembled from the example values declared on the schema above, not invented at render time.

{
  "chunkId": "<chunkId>",
  "text": "<text>",
  "headingPath": "<headingPath>",
  "heading": "<heading>",
  "sourceUrl": "https://api.example.com/v1/items",
  "citationUrl": "<citationUrl>",
  "pageTitle": "<pageTitle>",
  "position": 3
}

03 — input

What you give it

InputTypeDescription
startUrlsarrayoptionalWhere to start crawling. Point it at a docs homepage or section index.
pathPrefixstringoptionalOnly crawl URLs whose path starts with this, e.g. /docs. The single most effective way to keep a blog or marketing site out of your corpus.
maxPagesintegeroptionalUpper bound on pages fetched.
followLinksbooleanoptionalCrawl onward from the pages given. Turn off to process only the exact URLs supplied.
sameOriginOnlybooleanoptionalOnly follow links on the same domain as the start URL. Turn off only if your docs span subdomains.
maxChunkCharsintegeroptionalChunks split on headings first and size second, so this is a ceiling rather than a target. ~1500 chars suits most embedding models.
minChunkCharsintegeroptionalAnything smaller is folded into the previous chunk instead of being emitted as an unanswerable fragment.
overlapCharsintegeroptionalRepeat this many characters from the previous chunk so a sentence spanning a boundary stays retrievable from both sides.
dropRepeatedBoilerplatebooleanoptionalRemove chunks that repeat across pages — "Was this page helpful?", licence footers, the same admonition on 90 pages. These match every query and answer none.
nearDuplicateDetectionbooleanoptionalCatch boilerplate that differs by a word or two, not just exact repeats.
incrementalModebooleanoptionalStore a hash per chunk and label each one added / changed / unchanged / removed on the next run. For scheduled refreshes, also provide a Snapshot store ID or name so the baseline survives separate runs.
changedOnlybooleanoptionalWith incremental mode on, return just the added and changed chunks. Turns this into a scheduled corpus-refresh job.
snapshotKeystringoptionalKey-value store key holding the previous run's hashes. Use different keys to track several corpora independently.
snapshotStoreIdstringoptionalWhich named key-value store holds the previous run's hashes. Leave blank to use the shared default store "docs-to-answers-state", which is what makes change tracking work between scheduled runs. Set it explicitly to track several corpora independently.
concurrencyintegeroptionalHow many pages to fetch at once. Lower it if the docs site is rate-limiting you.
maxItemsintegeroptionalHard cap on results. You are never charged beyond this.
proxyConfigurationobjectoptionalOptional. Most documentation sites need no proxy.
targetChunkCharsintegeroptionalConsecutive short sections on the same page are merged until they reach roughly this size. A 30-token chunk cannot answer a question — it only adds noise to retrieval. Set to 0 to keep every heading as its own chunk.

04 — run

Run Docs to Answers Pack on your own input

It runs in the cloud on Apify. Nothing to install, and you are billed per result returned rather than per attempt.

Open on Apify ↗

05 — questions

Asked before running it

14 of 14 fields described

What does Docs to Answers Pack — Citable AI-Ready Chunks return?
It returns 14 documented output fields: chunkId, text, headingPath, heading, sourceUrl, citationUrl, pageTitle, position, tokensEstimate, charCount, contentHash and duplicateCount. Each field declares its type, a description of what it holds, and an example value. The remaining 2 are listed in the output schema below.
What input does Docs to Answers Pack — Citable AI-Ready Chunks take?
All 18 inputs are optional and ship with usable defaults, so it runs as-is. They are listed with their types below.
Does Docs to Answers Pack — Citable AI-Ready Chunks need an API key or login?
No. None of its inputs is a credential, and it reads only public data. Nothing to sign up for before the first run.
How do I run Docs to Answers Pack — Citable AI-Ready Chunks?
It runs on Apify. Start it from its listing with the inputs above, or call the Apify API with the Actor's ID. Results land in a dataset you can export as JSON, CSV or Excel, or read through the Apify API into your own pipeline.