.claude/skills/genealogie-online/SKILL.md
Search published Dutch family trees on Genealogie Online (genealogieonline.nl) using their JSON Search API — no browser needed. Contains 1,108+ Knijf person records across multiple published trees including "Stamboom De Knijff en verwanten", "Genealogie Van der Mersch-De Knijff", "Stamboom Glasmeier-Buhrs", and many others. This is a secondary source (Tier D) — other researchers' trees, not official archive records. Useful for finding leads, dates, places, and family connections to verify against primary sources. Triggers on: "search Genealogie Online", "published trees", "other researchers", "check family trees online", "/genealogie-online", or when looking for leads about a person across multiple researcher trees. No login required.
npx skillsauth add rdeknijf/ai-genealogy-kit genealogie-online-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 published family trees from Dutch genealogists. Contains trees uploaded by researchers across the Netherlands, searchable by person name.
No login or authentication required for any access method.
1,108+ Knijf person records across multiple publications. Key trees:
Top first names: Jan, Arend, Maria, Pieter, Arie, Cornelia, Cornelis, Gerrit, Elisabeth, Neeltje, Teuntje, Gijsbert.
Tier D — other researchers' published trees. No guarantee of accuracy. Always verify findings against official archive records (Tier A/B) before editing the GEDCOM.
Genealogie Online provides an official Search API that returns structured JSON. This is the preferred method — no browser needed, sub-100ms responses, parallelizable, minimal context tokens.
https://www.genealogieonline.nl/zoeken/?q={surname}&t=person&output=json
Append &output=json to any search URL to get a JSON array of person
objects instead of HTML.
Each result is an object with these fields:
| Field | Type | Description |
|-------|------|-------------|
| id | string | Unique ID (format: {publication_id}_{person_id}) |
| achternaam | string | Surname |
| voornaam | string | Given name(s) |
| geb_jaar | integer | Birth year (absent if unknown) |
| ovl_jaar | integer | Death year (absent if unknown) |
| url | string | Full URL to person detail page |
| publ_titel | string | Publication title |
| publ_url | string | Publication base URL |
Example response:
[
{
"id": "33_I21249",
"achternaam": "van der KNIJF",
"voornaam": "AREND",
"geb_jaar": 1835,
"ovl_jaar": 1910,
"url": "https://www.genealogieonline.nl/genealogie_mostert/I21249.php",
"publ_titel": "Genealogie Mostert",
"publ_url": "https://www.genealogieonline.nl/genealogie_mostert/"
}
]
All parameters work with &output=json:
| Parameter | Description | Example |
|-----------|-------------|---------|
| q | Surname (required) | q=knijf |
| vn | First name | vn=gijsbert |
| pa | Partner surname | pa=lugt |
| pn | Place name | pn=amsterdam |
| gv | Birth year from | gv=1700 |
| gt | Birth year to | gt=1800 |
| ov | Death year from | ov=1900 |
| ot | Death year to | ot=1920 |
| oc | Occupation | oc=tuinder |
| ta | Results per page (max 100) | ta=100 |
| start | Pagination offset | start=100 |
| publication | Filter to one publication | publication=33 |
| t | Result type | t=person |
| output | Response format | output=json |
ta=100)start parameter for pagination: start=0, start=100, etc.ta resultshttps://www.genealogieonline.nl/zoeken/?q={surname}&t=person&output=json&ta=100
Add filters as needed (vn, gv, gt, pn, etc.).
WebFetch → URL above
Or in a script:
curl -s "https://www.genealogieonline.nl/zoeken/?q=knijf&vn=gijsbert&gv=1700>=1800&t=person&output=json&ta=100"
Parse the JSON array. Each object has name, years, URL, and
publication. The id field contains the publication ID before the
underscore (e.g., 33 in 33_I21249), useful for the publication
filter.
Paginate if needed. If the result count equals ta, fetch the
next page with start={ta}:
&start=100 (second page)
&start=200 (third page)
Person detail pages do NOT have a JSON format. Use WebFetch to fetch the HTML page directly — it contains rich Schema.org microdata that WebFetch can extract cleanly.
Get the person URL from the search JSON result's url field.
Fetch with WebFetch:
WebFetch → {person_url}
Prompt: "Extract all person data: name, gender, birth date/place,
death date/place, occupations, parents (names and URLs), spouse(s)
(name, dates, marriage date/place, URL), children (name, gender,
dates, URL), grandparents, siblings, and source citations."
The HTML contains Schema.org itemscope/itemprop annotations for:
<meta itemprop="birthDate" content="YYYY-MM-DD"/><meta itemprop="deathDate" content="YYYY-MM-DD"/><div itemscope itemtype="http://schema.org/Person"><div itemprop="parent" itemscope ...><span itemprop="spouse" itemscope ...><div itemprop="children" itemscope ...>Run multiple JSON searches in parallel for all surname variants:
knijf, knijff, knijft, kniffen, de knijf, de knijff, van der knijf
The JSON API is stateless and parallelizable — all variants can be fetched simultaneously.
id field
(number before underscore).&publication={id} to limit results to that tree.Example: all Knijf records in Genealogie Mostert (publication 33):
https://www.genealogieonline.nl/zoeken/?q=knijf&publication=33&t=person&output=json&ta=100
If the JSON API is unavailable, returns errors, or if JavaScript-rendered content is needed (e.g., timeline visualizations, interactive family tree charts), fall back to Playwright.
browser_navigate → https://www.genealogieonline.nl/zoeken/?q=knijf&t=person
The URL parameter q is the surname search term, t=person restricts to
person results.
https://www.genealogieonline.nl/zoeken/?q={surname}&t=person
The search page has fields at the bottom. Use the same URL parameters documented above.
Results show: person name (linked), birth-death years, publication name.
15 results per page by default. Pagination with &start=15, &start=30.
Click a person name to open their page in the publication. Shows:
Tabs: Details, Directe familie, Bronnen, Suggesties, Context.
Click "Bronnen" tab to see if the researcher cited sources.
List all publications via OAI-PMH 2.0:
https://www.genealogieonline.nl/oai/oai2.php?verb=ListRecords&metadataPrefix=oai_dc
Supports: Identify, ListMetadataFormats, ListSets, ListRecords, ListIdentifiers, GetRecord.
Full list of all publications as CSV:
https://www.genealogieonline.nl/api/publications/genealogie_online_list_all_publications.csv
Fields: title, URL, author, contact, creation date, last update.
Search results also available as RSS/XML:
https://www.genealogieonline.nl/zoeken/?q={surname}&t=person&output=xml
The site suggests synonyms: Knijff, Knijft, Kniffen. Try all variants.
Search JSON: https://www.genealogieonline.nl/zoeken/?q={q}&t=person&output=json
Search HTML: https://www.genealogieonline.nl/zoeken/?q={q}&t=person
Person page: https://www.genealogieonline.nl/{publication-slug}/{person-id}.php
Publication index: https://www.genealogieonline.nl/{publication-slug}/
## Genealogie Online Result — [publication name]
**Person:** [name] ([birth year]-[death year])
**Born:** [date] in [place]
**Died:** [date] in [place]
**Father:** [name]
**Mother:** [name]
**Partner:** [name], married [date] in [place]
**Children:** [list]
**Source citations:** Yes/No
**Publication:** [name] by [author]
**Confidence:** Tier D — published researcher tree on Genealogie Online
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.