.claude/skills/delpher/SKILL.md
Search historical Dutch newspapers, magazines, and books on Delpher.nl via direct JSON API — no browser automation needed. Use this skill whenever you need to find obituaries, death notices (familieberichten), birth/marriage announcements, news articles, or any historical newspaper mentions of a person or family. Triggers on: "search delpher", "find in newspapers", "check old newspapers", "look for an obituary", "familieberichten", "/delpher", or any request to search Dutch historical press for people or events. Delpher has 2M+ newspapers (1618-1995), 500K magazines, and 200K books — all OCR'd and full-text searchable. No login required.
npx skillsauth add rdeknijf/ai-genealogy-kit delpher-optimizedInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Search Delpher's full-text OCR'd collection of historical Dutch publications. Particularly useful for finding obituaries, death notices (familieberichten), birth/marriage announcements, and contextual mentions of family members.
No login required. Everything is freely accessible.
Delpher exposes a JSON API at /nl/api/results that returns structured data
directly. This is 10-20x faster than browser automation and parallelizable.
Construct the search URL and fetch with curl:
curl -s 'https://www.delpher.nl/nl/api/results?query=QUERY&coll=COLL&page=PAGE&maxperpage=MAX&sortfield=SORT&order=ORDER'
Parameters:
| Parameter | Values | Default | Notes |
|-----------|--------|---------|-------|
| query | URL-encoded search string | required | Use %22 for quotes around exact phrases |
| coll | ddd (newspapers), dts (magazines), boeken (books) | required | Must specify one collection per request |
| page | 1, 2, 3... | 1 | Pagination |
| maxperpage | 1-50 | 20 | Number of results per page |
| sortfield | date, relevance | relevance | Sort order |
| order | asc, desc | desc | Sort direction |
Facet filters (append to URL):
&facets%5Btype%5D%5B%5D=familiebericht&facets%5Bperiode%5D%5B%5D=0%2F19e_eeuw%2F&facets%5Bperiode%5D%5B%5D=0%2F20e_eeuw%2F&facets%5Bspatial%5D%5B%5D=Regionaal%2FlokaalExample -- search for familieberichten mentioning "de Knijf" in newspapers, sorted by date:
curl -s 'https://www.delpher.nl/nl/api/results?query=%22de+Knijf%22&coll=ddd&page=1&maxperpage=50&facets%5Btype%5D%5B%5D=familiebericht&sortfield=date&order=asc'
The response is a JSON object:
{
"numberOfRecords": 253,
"records": [...],
"facets": [...]
}
Each record contains:
| Field | Description | Example |
|-------|-------------|---------|
| title | Article heading | "Familiebericht" |
| type | Article type | "familiebericht", "artikel", "advertentie" |
| date | Publication date | "1979/04/02 00:00:00" |
| papertitle | Newspaper name | "Trouw" |
| spatial | Geographic scope | "Landelijk", "Regionaal/lokaal" |
| spatialCreation | Place of publication | "Meppel" |
| publisher | Publisher | "Organisatie Trouw" |
| source | Archive holding the original | "Koninklijke Bibliotheek" |
| edition | Day/evening edition | "Dag" |
| volume | Volume number | "37" |
| issue | Issue number | "10811" |
| metadataKey | Unique article identifier | "ABCDDD:010825991:mpeg21:a0169" |
| identifier | Resolver URL | resolver.kb.nl link |
| accessible | Whether content is viewable | "1" |
Facets show available filters and counts:
{
"facets": [
{"name": "periode", "values": ["0/19e_eeuw/ (144)", "0/20e_eeuw/ (596)"]},
{"name": "type", "values": ["advertentie (123)", "artikel (366)", "familiebericht (253)"]},
{"name": "spatial", "values": ["Landelijk (245)", "Regionaal/lokaal (459)"]}
]
}
For any record, fetch the OCR text using the metadataKey:
curl -s 'https://www.delpher.nl/nl/api/resource?coll=ddd&identifier=METADATA_KEY&type=ocr'
This returns JSON with a text field containing the full OCR transcription.
Other available resource types:
| Type | Returns |
|------|---------|
| ocr | Plain text OCR of the article |
| dc | Dublin Core metadata |
| dcx | Extended Dublin Core metadata |
| alto | ALTO XML with word coordinates |
| pdf | PDF of the page |
| thumbnail | Thumbnail image URL |
| image | Full-size page image URL |
https://www.delpher.nl/nl/kranten/view?coll=ddd&identifier=METADATA_KEY
For magazines: replace kranten with tijdschriften and ddd with dts.
For books: replace kranten with boeken and ddd with boeken.
numberOfRecords to know total resultsfamiliebericht first (reduces result set)maxperpage=50 to get more results per requestpage=1, page=2, etc.The KB also exposes an SRU 1.2 endpoint for more advanced queries:
curl -s 'https://jsru.kb.nl/sru/sru?version=1.2&operation=searchRetrieve&x-collection=DDD_artikel&query=%22de+Knijf%22&recordSchema=ddd&maximumRecords=20'
This returns XML with the same metadata. Use when you need:
The JSON API is simpler and preferred for most genealogy use cases.
If the API is unavailable, returns errors, or the response format changes, fall back to Playwright browser automation:
browser_navigate -> https://www.delpher.nl/
Fill the search box (labeled "Zoeken in alle tekstcollecties") with the query.
Use double quotes around names for exact phrase matching, e.g. "de Knijf" Bennekom.
Click the "Zoeken" button. Wait for results -- page shows "Bezig met laden" while loading.
Results show counts per collection type:
Click the relevant collection to see individual results.
Each result shows:
Left sidebar has filters:
For genealogy, filter on "Familiebericht" to find death notices and family announcements.
Click an article to see the full text and a scan of the original newspaper page.
%22Jan+de+Knijf%22 (URL-encoded quotes)%22de+Knijf%22+Bennekom finds the name near the place&facets%5Btype%5D%5B%5D=familiebericht to filter&sortfield=date&order=asc for chronological order| Type | Genealogical value | |------|-------------------| | Familieberichten | Death notices with age, place, surviving relatives -- confirms dates and family relationships | | Geboorte/Huwelijk | Birth and marriage announcements -- social context, witnesses | | Troepenschepen | Military transport lists -- name, rank, home address | | Examenuitslagen | School exam results -- places people in time and location | | Rechtswezen | Legal proceedings -- property, disputes, context | | Advertenties | Job ads, business listings -- occupations and addresses |
## Delpher Result -- [article type]
**Source:** [newspaper name], [date]
**Type:** [Familiebericht / Artikel / Advertentie]
**Text:** [OCR text excerpt with key details]
**Genealogical relevance:** [what this tells us -- confirms a date, reveals a relationship, etc.]
**Confidence:** Tier B -- contemporary newspaper record
**Link:** https://www.delpher.nl/nl/kranten/view?coll=ddd&identifier=[metadataKey]
Newspaper mentions are Tier B evidence -- they're contemporary published records, though OCR can introduce errors in names/dates. The original scan is always available to verify the OCR text. Family notices (familieberichten) are particularly reliable as they were submitted by the family themselves.
# Search newspapers for familieberichten
curl -s 'https://www.delpher.nl/nl/api/results?query=%22SURNAME%22&coll=ddd&facets%5Btype%5D%5B%5D=familiebericht&maxperpage=50&sortfield=date&order=asc'
# Search magazines
curl -s 'https://www.delpher.nl/nl/api/results?query=%22SURNAME%22&coll=dts&maxperpage=50'
# Search books
curl -s 'https://www.delpher.nl/nl/api/results?query=%22SURNAME%22&coll=boeken&maxperpage=50'
# Get OCR text for an article
curl -s 'https://www.delpher.nl/nl/api/resource?coll=ddd&identifier=METADATA_KEY&type=ocr'
# Get metadata for an article
curl -s 'https://www.delpher.nl/nl/api/resource?coll=ddd&identifier=METADATA_KEY&type=dcx'
tools
Search Dutch civil registry records (births, marriages, deaths) on WieWasWie.nl via direct JSON API calls, with Open Archives API as a secondary source and Playwright browser automation as fallback. Use this skill whenever you need to look up or verify a person in Dutch civil records, check a birth/marriage/death date against official archives, or find parents/spouses from indexed Burgerlijke Stand records. Triggers on: "look up on wiewaswie", "check the birth record", "find the marriage certificate", "verify this date in the civil registry", "/wiewaswie", or any request to search Dutch genealogical records for a specific person. Also use when comparing GEDCOM data against official sources or when a Tier B verification is needed.
development
Search the VOC Opvarenden database for Dutch East India Company crew records (1699-1794). Uses the Nationaal Archief HUB3 API — 853,785 indexed entries with rich detail: name, origin, rank, ship, fate (died/returned/deserted), service dates, VOC chamber, and links to original scans. Use this skill when: "search VOC records", "VOC crew", "VOC opvarenden", "sailed to Batavia", "Dutch East India Company", "VOC soldier", "VOC sailor", "/voc-opvarenden", or when looking for ancestors who may have sailed with the VOC. Also use when checking Daniel Pieterse Knijf (1704, Woerden) or any Knijf/Knijff VOC connections. No login required.
tools
Generate a scan verification page for the user to review AI-extracted genealogy findings against actual document scans. The user clicks through records, confirms or rejects each one, and confirmed records become Tier A evidence in FINDINGS.md. Use this skill when: "verify scans", "show me what needs verifying", "review pending scans", "scan verification", "/verify-scans", or when the user wants to upgrade research findings from Tier C/D to Tier A by visually confirming document scans. Also use after a research session that produced scan-backed findings that need human confirmation.
tools
Search indexed person records at Streekarchief Midden-Holland (samh.nl) via the Memorix Genealogy REST API. No browser automation needed — returns structured JSON in ~50ms per query. Based in Gouda, covers municipalities: Gouda, Haastrecht, Schoonhoven, Waddinxveen, Noord-Waddinxveen, Moerkapelle, Moordrecht, Ammerstol, Broek, Vlist, and surrounding areas in the Midden-Holland region of South Holland. 3M+ person records with DTB (doop/trouw/begraven), BS (geboorte/huwelijk/overlijden), and Inschrijvingaktes. 36 Knijf results found, including Gijsbert de Knijf records in Gouda and van der Knijf in Waddinxveen. Scans available for most records. Triggers on: "search Gouda archive", "Streekarchief Midden-Holland", "SAMH", "Haastrecht records", "Schoonhoven records", "/streekarchief-midden-holland", or any genealogy research in the Gouda/Midden-Holland area. No login required. Parallelizable — run multiple queries simultaneously.