familysearch

📁 baphomet480/claude-skills 📅 1 day ago
0
总安装量
1
周安装量
安装命令
npx skills add https://github.com/baphomet480/claude-skills --skill familysearch

Agent 安装分布

amp 1
cline 1
opencode 1
cursor 1
continue 1
kimi-cli 1

Skill 文档

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. getmyancestors ships a pre-registered client ID, so you authenticate with your normal FamilySearch username and password. The custom familysearch.py script 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

  1. This skill is read-only. No write operations against the Family Tree.
  2. FamilySearch rate limits API requests. Both tools include automatic retry with backoff.
  3. Tokens expire after 2 hours. familysearch.py auto-refreshes using the stored refresh token.
  4. Use --rate-limit with getmyancestors to be respectful of FamilySearch servers.