.claude/skills/myheritage/SKILL.md
Search and browse MyHeritage via playwright-cli browser automation. Use this skill when you need to: (1) check matches for a person — Smart Matches against other trees or Record Matches against historical records, (2) search MyHeritage SuperSearch for historical records across 39B entries, (3) browse connected family sites, (4) use photo tools (colorize, enhance, animate old photos). Triggers on: "search myheritage", "check myheritage matches", "look up on myheritage", "/myheritage", "what does myheritage have for [person]", or when you want a secondary cross-reference for a person already found in official archives. Requires login — credentials in .env. Read-only — do NOT edit the tree.
npx skillsauth add rdeknijf/ai-genealogy-kit myheritageInstall 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 39 billion records and browse matches on your MyHeritage family site. MyHeritage is used read-only as a secondary research tool — Gramps Web (or your local GEDCOM) is the source of truth.
Requires login — credentials stored in .env as MYHERITAGE_USER and
MYHERITAGE_PASSWORD.
All browser interaction uses playwright-cli via Bash with a named session:
# Open browser (once per session)
playwright-cli -s=myheritage open
# Navigate
playwright-cli -s=myheritage goto "https://www.myheritage.com/research"
# Get page snapshot (written to .playwright-cli/*.yml)
playwright-cli -s=myheritage snapshot
# Interact using refs from snapshot
playwright-cli -s=myheritage fill <ref> "search text"
playwright-cli -s=myheritage click <ref>
# Run JavaScript (e.g., remove overlays)
playwright-cli -s=myheritage run-code "document.querySelectorAll('.cookie_banner_overlay, .modal_overlay, #cookie_preferences_banner_root, #cookie_preferences_dialog_root').forEach(el => el.remove()); 'done'"
# Save/load auth state for reuse across sessions
playwright-cli -s=myheritage state-save .playwright-cli/myheritage-auth.json
playwright-cli -s=myheritage state-load .playwright-cli/myheritage-auth.json
# Close when done
playwright-cli -s=myheritage close
Important: After each action that changes the page (click, fill+submit,
goto), take a new snapshot to get updated refs. Refs change between snapshots.
Before using this skill, set these variables in your .env:
MYHERITAGE_SITE_ID=your-site-id-here
Find your Site ID by logging into MyHeritage and checking the URL on your family site page — it's the long alphanumeric string in the URL path.
| Source | Use when | |--------|----------| | WieWasWie | Need structured Dutch civil registry records (Tier B) | | OpenArchieven | Wide net across 363M+ Dutch/Belgian records | | FamilySearch | International records, church records, scanned images | | MyHeritage matches | Want to cross-reference a person against other trees + record databases. Good for finding birth/death places, occupations, parents, siblings you haven't found elsewhere | | MyHeritage SuperSearch | 39B records including 19B newspapers, family trees from other platforms. Broader than Dutch-only sources | | Connected sites | Want to check large trees from other researchers for overlapping family lines |
Confidence: MyHeritage data is Tier C or D — use it to guide archive lookups, not as authoritative evidence. Smart Matches are user-contributed trees (Tier D). Record Matches from indexed civil records are Tier C (cross-reference with the original archive for Tier B).
At session start, read the MYHERITAGE_SITE_ID from .env. All MyHeritage
URLs below use {SITE_ID} as a placeholder — substitute your actual value.
MyHeritage requires authentication. The playwright-cli session persists
cookies, so login is only needed once per browser session. Use
state-save/state-load to persist auth across sessions.
playwright-cli -s=myheritage goto "https://www.myheritage.com/research"
playwright-cli -s=myheritage snapshot
Read the snapshot file. If it shows a user name button with "Rekeningopties" in the header, you're logged in. Skip to the appropriate workflow below.
If it shows button "Log in", proceed to step 2.
MyHeritage has aggressive cookie banners that block interaction. Remove them BEFORE trying to click anything:
playwright-cli -s=myheritage run-code "['cookie_preferences_banner_root', 'cookie_preferences_dialog_root'].forEach(id => { const el = document.getElementById(id); if (el) el.remove(); }); document.querySelectorAll('.cookie_banner_overlay, .modal_overlay').forEach(el => el.remove()); 'Overlays removed'"
Take a snapshot to find the "Log in" button ref, then click it:
playwright-cli -s=myheritage snapshot
playwright-cli -s=myheritage click <login-button-ref>
playwright-cli -s=myheritage snapshot
A dialog appears with email and password fields. Find the refs and fill them:
playwright-cli -s=myheritage fill <email-ref> "$MYHERITAGE_USER"
playwright-cli -s=myheritage fill <password-ref> "$MYHERITAGE_PASSWORD"
playwright-cli -s=myheritage click <submit-ref>
Important: Read credentials from .env using the Read tool — do NOT
hardcode them.
After login, a banner may show "De grens van de stamboom is overschreden" (tree limit exceeded). This is normal on the Basic plan — ignore it.
Save auth state for reuse:
playwright-cli -s=myheritage state-save .playwright-cli/myheritage-auth.json
After login, check the header for your site name. If it shows a different site, the session defaulted to another one. The Site ID in the URLs below ensures the correct site is used.
playwright-cli -s=myheritage goto "https://www.myheritage.com/discovery-hub/{SITE_ID}/matches-by-people"
This shows a paginated list of persons sorted by match value, with tabs:
Each person entry shows:
Click the "Vind een persoon" (Find a person) button to search by name within the matches list. Alternatively, use the direct URL:
playwright-cli -s=myheritage goto "https://www.myheritage.com/discovery-hub/{SITE_ID}/matches-for-person/{personId}"
Person IDs can be found from the matches list (in the href of each person's link).
Click "Beoordeel N matches" to see all matches for that person. Each match shows:
From the match detail, extract:
Do NOT confirm or reject matches — this would modify the tree.
Search 39 billion records across all categories.
playwright-cli -s=myheritage goto "https://www.myheritage.com/research?s={SITE_ID}"
playwright-cli -s=myheritage snapshot
| Field | Label | Type | |-------|-------|------| | First names | "Voorna(a)m(en)" | textbox | | Last name | "Achternaam" | textbox | | Birth year | "Geboortejaar" | textbox | | Place | "Plaats" | textbox |
Find refs in snapshot, then fill and submit:
playwright-cli -s=myheritage fill <firstname-ref> "Jan"
playwright-cli -s=myheritage fill <lastname-ref> "de Knijf"
playwright-cli -s=myheritage click <search-button-ref>
Click "Voeg details toe" (Add details) to expand additional fields:
Results are grouped by category with counts. Each result shows: person name, dates, place, collection name.
Click a result to see details. On the free plan:
| Category | Records | |----------|---------| | Kranten (Newspapers) | 19.4B | | Stambomen (Family Trees) | 9.5B | | Geboorte/Huwelijk/Overlijden (BMD) | 4.7B | | Volkstellingen (Censuses) | 1.8B | | Adreslijsten (Directories) | 1.0B | | Boeken (Books/Publications) | 856M | | Foto's (Photos) | 472M | | Immigratie (Immigration) | 294M | | Scholen (Education) | 282M | | Leger (Military) | 275M | | Publieke records | 265M | | Overheid/Eigendom/Rechtbank | 172M |
After login, navigate to your family site settings to find connected sites. These are other researchers' trees where you've been added as a member. Each connected site has its own Site ID in the URL.
To browse a connected site's tree:
playwright-cli -s=myheritage goto "https://www.myheritage.com/family-trees/{site-slug}/{CONNECTED_SITE_ID}"
Connected sites with PremiumPlus plans may show more data than your own plan allows.
playwright-cli -s=myheritage goto "https://www.myheritage.com/photo-world/{SITE_ID}"
Available tools (limited free uses per day):
## MyHeritage Match — [Smart Match / Record Match]
**Person:** [name]
**Relationship:** [relationship to tree owner]
**New info from match:**
- Birth: [date] in [place]
- Death: [date] in [place]
- Occupation: [occupation]
- Father: [name]
- Mother: [name]
- Siblings: [names]
**Match source:** [other tree name / record collection]
**Person ID:** [personId from URL]
**Confidence:** Tier D — Smart Match from user-contributed tree
(or Tier C — Record Match from indexed historical record)
## MyHeritage SuperSearch Result — [record type]
**Person:** [name]
**Event:** [type], [date] in [place]
**Father:** [name]
**Mother:** [name]
**Spouse:** [name] (if applicable)
**Collection:** [collection name]
**Category:** [BMD / Census / Military / etc.]
**Full record:** [visible / requires Data subscription]
**Confidence:** Tier C — indexed record via MyHeritage SuperSearch
(verify with original archive for Tier B)
.env to ensure you're on the right site.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.