Import your WikiTree profiles and the surrounding collaborative tree into your self-hosted ɳFamily instance. WikiTree is a free, single global tree — this plugin makes your slice of it portable.
Requires nself-family. WikiTree uses its own API key (not OAuth). The importer reads profiles you manage or have access to and maps them to the local family schema.
nself license set nself_pro_...
nself plugin install family family-wikitree
nself build
nself startnself-family-wikitree uses the WikiTree API with a user-issued API key to fetch profiles starting from a specified WikiTree ID (e.g. Smith-12345). It walks the family graph outward to a configurable depth, importing each profile as a np_family_members row and each family unit as relationships in np_family_relationships.
WikiTree profiles include sources cited as biography text. The importer extracts source references from the biography using a structured heuristic and stores them in np_wikitree_sources for display alongside each person. Photo galleries attached to profiles are downloaded into MinIO when nself-photos is installed.
Because WikiTree is a collaborative single tree, profiles you manage can be edited by other approved managers. The sync cycle fetches only profiles modified since the last sync using the WikiTree modified timestamp field.
| Variable | Required | Default | Description |
|---|---|---|---|
PLUGIN_WIKITREE_API_KEY | Yes | — | WikiTree API key. Generate at wikitree.com/wiki/Help:API_Documentation. |
PLUGIN_WIKITREE_START_PROFILE | Yes | — | WikiTree ID to start the import from (e.g. Smith-12345) |
PLUGIN_WIKITREE_IMPORT_DEPTH | No | 3 | How many relationship hops to follow from the start profile |
PLUGIN_WIKITREE_SYNC_INTERVAL_HOURS | No | 24 | How often to sync. Set to 0 to disable automatic sync. |
PLUGIN_WIKITREE_IMPORT_PHOTOS | No | true | Download profile gallery photos into MinIO. Requires nself-photos. |
PLUGIN_WIKITREE_MAX_PERSONS | No | 2000 | Hard cap on profiles imported per run |
| Endpoint | Method | Description |
|---|---|---|
/wikitree/import | POST | Trigger a manual import. Body: { start_profile?, depth? } (override env for this run) |
/wikitree/status | GET | Last sync time, persons imported, depth reached, cap_hit boolean |
/wikitree/sources/:person_id | GET | Source references extracted from biography for a local family member |
/wikitree/profile/:wikitree_id | GET | Fetch a single WikiTree profile and upsert it into local data (useful for adding a specific person) |
/health | GET | Plugin health check |
| Table | Purpose |
|---|---|
np_wikitree_profile_map | Maps WikiTree IDs (e.g. Smith-12345) to local np_family_members IDs |
np_wikitree_sources | Source references extracted from biography text: person_id, citation_text, extracted_at |
np_wikitree_sync_log | Import history: started_at, start_profile, depth, persons_imported, cap_hit, errors |
| Event | Payload |
|---|---|
wikitree.import.completed | Persons imported, depth reached, cap_hit boolean, duration |
wikitree.profile.updated | WikiTree ID, local member ID, fields changed |
WikiTree does not use OAuth — configure your API key in the env and trigger imports directly:
# 1. Get your API key from https://www.wikitree.com/wiki/Help:API_Documentation
# Set PLUGIN_WIKITREE_API_KEY and PLUGIN_WIKITREE_START_PROFILE in .env
# 2. Trigger the initial import
curl -X POST https://your-nself-host/wikitree/import \
-H 'Authorization: Bearer <token>'
# 3. Import a single specific profile (e.g. to add an outlier)
curl https://your-nself-host/wikitree/profile/Jones-98765 \
-H 'Authorization: Bearer <token>'| Feature | nself-family-wikitree | WikiTree only | GEDCOM export |
|---|---|---|---|
| Self-hosted | Yes | No | Yes (one-time) |
| Delta sync on manager changes | Yes | N/A | No |
| Source citations | Yes (extracted from biography) | Yes (on WikiTree only) | Partial |
| Single profile fetch | Yes (GET /wikitree/profile/:id) | N/A | No |
| Symptom | Fix |
|---|---|
| API key rejected (401) | WikiTree API keys are tied to an account. Confirm the key belongs to the account that manages the profiles you are importing. Keys can be regenerated on the WikiTree Apps page. |
| Import stops early without hitting cap | Some profiles are private to their manager. The importer skips private profiles and logs them. Check GET /wikitree/status for the skipped_private count. |
| Sources list is empty | WikiTree stores sources inline in the biography as wiki text. If a biography has no structured source section, no citations are extracted. This is expected for sparsely documented profiles. |
Port: 3834 | Bundle: ɳFamily ($0.99/mo) or ɳSelf+ ($3.99/mo) | Last Updated: May 2026 | Plugin Version 1.0.13