familysearch
FamilySearch Skill
Read-only access to the FamilySearch Family Tree and historical records. Two tools working together:
| Tool | Install | Purpose |
|---|---|---|
| getmyancestors | pip install getmyancestors |
Download full GEDCOM trees (ancestors + descendants + spouses). Uses your regular FamilySearch login. |
| familysearch.py | pip install httpx |
JSON API queries: person lookup, search, sources, memories, relationship paths. |
No developer account required.
getmyancestorsships a pre-registered client ID, so you authenticate with your normal FamilySearch username and password. The customfamilysearch.pyscript reuses the same approach.
Setup
Install
# CLI tool — install with pipx
pipx install getmyancestors
# Library dependency for familysearch.py
pip install httpx
Authenticate (familysearch.py)
# Prompts for username and password (password is hidden)
python3 scripts/familysearch.py auth
# Or pass credentials directly
python3 scripts/familysearch.py auth -u USERNAME -p PASSWORD
Logs in programmatically (same as getmyancestors) and saves an OAuth2 token to ~/.familysearch/token.json.
Verify
python3 scripts/familysearch.py verify
GEDCOM Export (getmyancestors)
The fastest way to grab a full family tree as a GEDCOM file. Ideal for updating a project's master GEDCOM.
Download Ancestors
# 4 generations of ancestors (default), outputs to stdout
getmyancestors -u USERNAME -p PASSWORD
# 6 generations, save to file, verbose log
getmyancestors -u USERNAME -p PASSWORD -a 6 -o tree.ged -l tree.log -v
# Start from a specific person instead of the tree root
getmyancestors -u USERNAME -p PASSWORD -i KWCJ-RN4 -o tree.ged -v
Download Ancestors + Descendants + Spouses
# 6 gen ancestors + 2 gen descendants, include spouse/marriage data
getmyancestors -u USERNAME -p PASSWORD -a 6 -d 2 -m -o tree.ged -v
# Multiple starting individuals
getmyancestors -u USERNAME -p PASSWORD -i L4S5-9X4 LHWG-18F -a 6 -d 2 -m -o tree.ged
Merge GEDCOM Files
mergemyancestors -i old-tree.ged new-additions.ged -o merged.ged
Rate Limiting
# Limit to 5 requests/second (be respectful)
getmyancestors -u USERNAME -p PASSWORD --rate-limit 5 -o tree.ged -v
Person (familysearch.py)
Look up individuals by their person ID (format: XXXX-XXX).
Get a Person
# Full person record with names, gender, facts (birth, death, etc.)
python3 scripts/familysearch.py get-person --pid KWCJ-RN4
# Get the currently authenticated user's tree person
python3 scripts/familysearch.py get-current-user
Get Person with Relationships
# Person + their immediate family connections
python3 scripts/familysearch.py get-person --pid KWCJ-RN4 --relationships
Pedigree (familysearch.py)
Ancestry (Ascending)
# Default 4 generations of ancestors (JSON, not GEDCOM)
python3 scripts/familysearch.py ancestry --pid KWCJ-RN4
# Up to 8 generations
python3 scripts/familysearch.py ancestry --pid KWCJ-RN4 --generations 8
Descendancy (Descending)
python3 scripts/familysearch.py descendancy --pid KWCJ-RN4 --generations 4
Search (familysearch.py)
Search Persons in the Tree
# Search by name
python3 scripts/familysearch.py search --name "George Goodman"
# Search with date and place filters
python3 scripts/familysearch.py search \
--name "George Goodman" \
--birth-year 1870 \
--birth-place "Arizona"
# Search with death info
python3 scripts/familysearch.py search \
--name "Clara Platt" \
--death-year 1961 \
--death-place "Mesa, Arizona"
# Limit results
python3 scripts/familysearch.py search --name "Hofstätter" --limit 5
Match Hints (Research Hints)
# Get potential record matches for a person already in the tree
python3 scripts/familysearch.py match --pid KWCJ-RN4
Sources (familysearch.py)
List Sources for a Person
python3 scripts/familysearch.py sources --pid KWCJ-RN4
Search Historical Records
python3 scripts/familysearch.py search-records \
--name "George Nicholas Goodman" \
--birth-year 1870
Memories (familysearch.py)
List Memories for a Person
python3 scripts/familysearch.py memories --pid KWCJ-RN4
Download a Memory
python3 scripts/familysearch.py download-memory \
--url "https://familysearch.org/photos/artifacts/12345" \
--output ./downloads/photo.jpg
Relationships (familysearch.py)
Direct Family
python3 scripts/familysearch.py parents --pid KWCJ-RN4
python3 scripts/familysearch.py spouses --pid KWCJ-RN4
python3 scripts/familysearch.py children --pid KWCJ-RN4
Relationship Path
# How are two people related?
python3 scripts/familysearch.py relationship-path \
--from KWCJ-RN4 --to XXXX-YYY
Export (familysearch.py)
Export Person Subtree as JSON
# Export a person and their immediate network as structured JSON
python3 scripts/familysearch.py export-person --pid KWCJ-RN4 --output ./research/person-export.json
# Include N generations of ancestors in the export
python3 scripts/familysearch.py export-person --pid KWCJ-RN4 --ancestors 4 --output ./research/tree-export.json
This produces a JSON file compatible with the Goodman history project's parse-gedcom.mjs output shape (individuals + families + relationships).
JSON Output
All familysearch.py commands produce JSON to stdout. Pipe to jq for filtering:
# Get just the display name
python3 scripts/familysearch.py get-person --pid KWCJ-RN4 | jq '.display.name'
# Get all ancestor birth places
python3 scripts/familysearch.py ancestry --pid KWCJ-RN4 --generations 4 \
| jq '[.persons[].facts[]? | select(.type == "http://gedcomx.org/Birth") | .place.original]'
When to Use Which Tool
| Goal | Tool |
|---|---|
| Download a full family tree as GEDCOM | getmyancestors |
| Update your project's master GEDCOM file | getmyancestors |
| Look up a specific person by ID | familysearch.py get-person |
| Search for people by name/date/place | familysearch.py search |
| Find attached sources or record hints | familysearch.py sources / match |
| Download photos and documents | familysearch.py memories / download-memory |
| Get JSON-formatted pedigree data | familysearch.py ancestry / descendancy |
| Find how two people are related | familysearch.py relationship-path |
Safety Guidelines
- This skill is read-only. No write operations against the Family Tree.
- FamilySearch rate limits API requests. Both tools include automatic retry with backoff.
- Tokens expire after 2 hours.
familysearch.pyauto-refreshes using the stored refresh token. - Use
--rate-limitwithgetmyancestorsto be respectful of FamilySearch servers.
More from baphomet480/claude-skills
kitchen-sink-design-system
Kitchen Sink design system workflow for Next.js and React projects, with secondary support for Astro, SvelteKit, Nuxt, and static HTML. Use when asked for a Kitchen Sink page, Design System, UI Audit, Style Guide, or Component Inventory, or when a project needs a component inventory plus component creation and a sink page implementation. Covers CVA variant architecture, Tailwind v3/v4 token systems, shadcn/ui integration, and TinaCMS content modeling.
40deep-research
Conduct comprehensive, multi-round research that produces rich visual reports. Use when asked for "deep research", "comprehensive analysis", "compare frameworks", "evaluate options", "research the state of X", or any task requiring investigation across 10+ sources. NOT for quick lookups — this is a 5-15 minute deep dive that produces a briefing-quality artifact with screenshots, diagrams, tables, and cited findings.
37design-lookup
Search and retrieve CSS components, SVG icons, design patterns, and visual inspiration from the web. Use when the user asks to find, look up, or search for CSS snippets, SVG icons, UI components, loading spinners, animations, design inspiration, or any visual/frontend design resource. Triggers on requests like "find me a CSS button", "look up an SVG spinner", "search for a card component", "find a wave divider SVG", or "get design inspiration for a dashboard".
34nextjs-tinacms
Build Next.js 16 + React 19 + TinaCMS sites with visual editing, blocks-based page builder, and complete SEO. Use this skill whenever the user mentions TinaCMS, Tina CMS, Next.js with a CMS, visual editing with Next.js, click-to-edit, content-managed Next.js site, blocks pattern page builder, or migrating to Next.js + TinaCMS. Also trigger for TinaCMS schema design, self-hosted TinaCMS, TinaCMS media configuration, or any TinaCMS troubleshooting. Covers Day 0-2 setup from scaffolding through production deployment on Vercel.
32cloudflare-pages
Deploy static sites to Cloudflare Pages with custom domains and CI/CD. Use when the user wants to deploy a site to Cloudflare Pages, add a custom domain to a Pages project, set up GitHub Actions CI/CD for Cloudflare Pages, roll back a deployment, or verify deployment status. Triggers on "deploy to Cloudflare", "Cloudflare Pages", "add custom domain", "pages deploy", or any Cloudflare Pages hosting workflow.
31local-ocr
Local OCR pipeline for AI agents featuring auto-rotation, deskew, and searchable PDF generation via ocrmypdf and Tesseract.
23