No description
Find a file
Titus 3e1725918e 2.2.0: Download World restored, round-trip link integrity, key-format sweep
Save Element creates new elements (create-on-404); Upload World renamed
with real error surfacing; Rename World pushes; Download World returns
(prefixed-key clean) with self-healing Map/Pin/Marker templates; upload
parser ships links as _id/_ids UUIDs; per-world key resolution ends the
wrong-world write class; scoped keys primary in all copy.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 13:56:56 +02:00
.claude new version for styles include 2025-07-09 12:13:20 +02:00
auth 2.0.0: SDK, auto-sync, native settings, modernized build 2026-05-11 12:51:28 +02:00
Commands 2.2.0: Download World restored, round-trip link integrity, key-format sweep 2026-07-12 13:56:56 +02:00
Listeners Enhance NoteLinker and CreateElementCommand with manifest integration; add CreateElementFromLinkModal for element creation. Update ElementSelectionModal to support new element creation and refresh functionality. 2025-07-09 09:47:30 +02:00
Modals 2.2.0: Download World restored, round-trip link integrity, key-format sweep 2026-07-12 13:56:56 +02:00
Scripts 2.0.1: mobile support, drop FileSystemAdapter instanceof checks 2026-05-11 13:20:56 +02:00
settings 2.2.0: Download World restored, round-trip link integrity, key-format sweep 2026-07-12 13:56:56 +02:00
sync 2.0.0: SDK, auto-sync, native settings, modernized build 2026-05-11 12:51:28 +02:00
vault 2.0.0: SDK, auto-sync, native settings, modernized build 2026-05-11 12:51:28 +02:00
.editorconfig feedback changes 2024-08-18 15:36:28 +02:00
.eslintignore feedback changes 2024-08-18 15:36:28 +02:00
.eslintrc feedback changes 2024-08-18 15:36:28 +02:00
.gitignore urls and names 2025-07-07 20:27:21 +02:00
.npmrc import 2024-08-11 17:00:15 +02:00
client.ts 2.0.0: SDK, auto-sync, native settings, modernized build 2026-05-11 12:51:28 +02:00
enums.ts 2.0.0: SDK, auto-sync, native settings, modernized build 2026-05-11 12:51:28 +02:00
esbuild.config.mjs 2.0.0: SDK, auto-sync, native settings, modernized build 2026-05-11 12:51:28 +02:00
eslint.config.mts 2.0.0: SDK, auto-sync, native settings, modernized build 2026-05-11 12:51:28 +02:00
LICENSE feedback changes 2024-08-18 15:36:28 +02:00
main.ts 2.2.0: Download World restored, round-trip link integrity, key-format sweep 2026-07-12 13:56:56 +02:00
manifest.json 2.2.0: Download World restored, round-trip link integrity, key-format sweep 2026-07-12 13:56:56 +02:00
package-lock.json 2.1.0: retire legacy Import World command (prefixed-key readiness) 2026-07-11 11:57:21 +02:00
package.json 2.2.0: Download World restored, round-trip link integrity, key-format sweep 2026-07-12 13:56:56 +02:00
README.md 2.2.0: Download World restored, round-trip link integrity, key-format sweep 2026-07-12 13:56:56 +02:00
styles.css 2.0.0: SDK, auto-sync, native settings, modernized build 2026-05-11 12:51:28 +02:00
TEST-CHECKLIST.md 2.2.0: Download World restored, round-trip link integrity, key-format sweep 2026-07-12 13:56:56 +02:00
tsconfig.json 2.0.0: SDK, auto-sync, native settings, modernized build 2026-05-11 12:51:28 +02:00
version-bump.mjs feedback changes 2024-08-18 15:36:28 +02:00
versions.json 2.2.0: Download World restored, round-trip link integrity, key-format sweep 2026-07-12 13:56:56 +02:00

OnlyWorlds Builder — Obsidian Plugin

Obsidian plugin for building and syncing with OnlyWorlds.

What is OnlyWorlds

OnlyWorlds is an open data standard for worldbuilding. A world is made of elements across 22 categories, each with defined fields and link relationships. Worlds can live entirely in a local vault, and can be uploaded to onlyworlds.com, where a free account hosts your worlds and exposes them via REST API so that other tools can read and write it. The standard is open source and the tools and platform are free.

What this plugin does

Manages OnlyWorlds elements as Obsidian notes: one note per element, organized into folders per category, inside an OnlyWorlds/ folder in a vault. Notes are plain markdown, editable like any other.

Optional: connect the plugin to an onlyworlds.com account, and edits can be pushed to the cloud on demand or automatically. That makes the same world available to other OnlyWorlds tools and accessible via the API.

Getting started

Local-only setup:

  1. Install the plugin from Community Plugins.
  2. Run Create World from the command palette (Ctrl/Cmd+P). The plugin creates the OnlyWorlds/ folder structure in your vault.
  3. Use Create Element to add elements. Edit them like any Obsidian note.

If you already have a world on onlyworlds.com, connect it via Settings → OnlyWorlds instead of step 2: enter your world's API key and PIN, and the plugin sets up the folder structure and pulls your existing elements into the vault.

To also sync with onlyworlds.com:

  1. Create a free account at onlyworlds.com.
  2. In Obsidian, open Settings → OnlyWorlds. Paste your world's API key — shown on your world's page under Account — and your 4-digit PIN. Classic 10-digit keys and newer ow_-prefixed keys both work.
  3. Push to web with auto-sync or the Save Element command (see below).

How sync works

Three ways to push edits to onlyworlds.com:

Export World. Push every element in the active world in one go. A full overwrite of the cloud world from your local copy.

Save Element. Run the command on the active note to push that single element. Bind a hotkey if you'll use it often (Settings → Hotkeys, search "Save Element", set something like Ctrl/Cmd+Shift+S).

Auto-sync. Toggle on in plugin settings. After 3 seconds of inactivity following an edit, the plugin pushes the changed element via the OnlyWorlds API.

The ribbon icon and desktop status bar reflect the current state: idle, dirty (unsaved local changes), syncing, synced, or error.

You can set your PIN once in settings so the plugin never asks again.

Authentication

The plugin talks to the OnlyWorlds REST API at https://www.onlyworlds.com/api/worldapi/. Each API call sends your API-Key and API-Pin as headers, scoped to one world. Your API key identifies which world you're touching, and your PIN authorizes writes. Both stay local. They live in your vault's plugin settings (data.json).

Folder structure

The plugin creates and manages:

OnlyWorlds/
├── Worlds/<World name>/
│   ├── World.md
│   └── Elements/<Category>/<element>.md
└── PluginFiles/   (templates, managed automatically)

Commands

Command What it does
Create World Create a new world (account-linked) and the local folder structure.
Create Element Pick a category and name. Generates a new note with a fresh UUID.
Save Element Push the active element note to the API. Bind a hotkey via Settings → Hotkeys.
Export World Bulk push every element in the active world.
Validate World Check element notes for malformed fields.
Rename World Rename a world folder safely.
Link Elements With your cursor in a link field, pick a target element to insert.
Copy World to Clipboard Serialize the active world as JSON and copy to clipboard.
Paste World from Clipboard Build a world from JSON in clipboard.

Settings

Setting Default What it does
API key empty Your OnlyWorlds API key. Stored locally.
API PIN empty Your 4-digit PIN. Stored locally. Empty means you'll be prompted once per session.
Default world empty The active world. Falls back to the alphabetically first under OnlyWorlds/Worlds/.
Default email empty Pre-fills email when creating worlds.
Default new element category Character Pre-selected in Create Element.
Individual element creation commands off Adds Create new <Category> commands for each of the 22 categories. Reload Obsidian after toggling.
Auto-sync to OnlyWorlds off Push edits automatically after idle period.
Auto-sync debounce 3000ms How long to wait after last edit.
Show status bar indicator on Desktop status bar icon.

Get in touch