Novel-kit

approvedunreviewed

by moke525

Write long-form fiction with a workspace per work, plus graph, timeline, fission board, map, spacetime, cards, table and full-text search over plain Markdown notes.

Updated todayApache-2.0

✍️ Novel-kit

中文 | English

Obsidian plugin Downloads Latest release Minimum Obsidian version License

An all-in-one writing suite for long-form web novels in Obsidian.
One work is one folder in your vault · Settings, outlines and manuscripts are all plain Markdown · Seven views over the same notes.


📖 Full Reference ❓ FAQ



Creative homepage

[!IMPORTANT] This plugin is built for the desktop version — desktop only.


✨ Feature Highlights

🏠 Creative Homepage

Progress & KPIs · Daily word-count curve and heatmap · Word frequency · Todos · Clock · Drag to add or remove widgets, layout saved to System/home.json

Creative homepage

🕸️ Graph

Visualizes relations plus foreshadowing / hooks · "Filter" decides what shows and what gets highlighted · "Display config" handles file types, colors and edges

Graph

📅 Timeline

Scenes ordered by time · With "Folder" grouping, dragging really moves files · Edit start/end dates straight in the frontmatter

Timeline

🧬 Fission

Multi-column card outline · Drag to reorder plot beats · Cards are the notes — you are editing the same files · Right-click to retag the event kind (era / scene / chapter / plot)

Fission

🗺️ Map & Spacetime

Coordinate markers on a base image · Spacetime maps the image to a plane and time to the z axis · Coordinates read "map name:x,y" (full-width colon and comma)

Map and Spacetime

🃏 Cards & Table

Cards form a configurable field wall · Table supports grouping, filtering, pinning columns and in-place editing · Both support drag ordering and cross-group drag

Cards and Table

🧵 Foreshadowing · Hooks · Plot · Manuscript

The main operation happens in the prose: select a sentence → right click → plant or resolve; state walks through Unplanted → Planted → Linked → Resolved

Foreshadowing and hooks

📝 Creative Assistants

Inspiration cards
Inspiration Cards
Drag into graph / timeline / fission to become plot beats
Glossary
Glossary
Quick lore lookup, organized in layers
Word frequency
Word Frequency
See your habits and repeats at a glance
Proofreading
Proofreading
In-place checks, confirm each fix
Writing goal
Writing Goal
Daily targets and progress nudges
Naming
Naming
Generate character and place names by style
File templates
File Templates
Auto-apply a template and rename by "target folder + filename pattern"
Snapshots
History Snapshots
Auto-archived, side-by-side diff before restoring
Sticky notes
Sticky Notes
Jot things down, auto-saved

🖥️ Desktop

This plugin is desktop only: every feature is designed around desktop interactions (the manifest declares isDesktopOnly).

📥 Installation

MethodSteps
Community plugins (recommended)Settings → Community plugins → Browse → search novel-kit → install and enable
ManualPut main.js, manifest.json and styles.css into <your vault>/.obsidian/plugins/novel-kit/, then enable it

Requires Obsidian 1.8.7 or later; desktop only (the plugin uses Node / Electron APIs).

🚀 Quick Start

  1. Register a work: open the creative homepage and click "New work", or run the command "Register novel workspace". The folders 设定/, 事件/, 正文/, 灵感/ and System/ are created for you.
  2. Try the sample (optional): when no work exists yet, the panel top shows "Load sample", which writes 《残虹夜雨》 — 1 era (北境乱世), 3 scenes and 6 outline sections, 4 manuscript chapters, 14 clues (8 resolved, 6 deliberately left open to demo filtering), one "北境" map with four coordinates, 4 inspiration cards, 2 sticky notes, plus two Chinese walkthrough notes. Following the tour is the fastest way in.
  3. Start writing: draft under 正文/, select sentences to plant foreshadowing and hooks; open the main panel (book icon in the ribbon) when you want the whole picture.
🎯 Key Commands
CommandDescription
Register novel workspaceRegister a folder in your vault as a work
Switch active workMove between registered works
Open novel panelOpen the main panel with all seven views
Open creative homepageOpen the dashboard homepage
Load sampleWrite the sample work 《残虹夜雨》
New / Resolve foreshadowingPlant and resolve on the current selection
Toggle writing modeDesktop: typewriter scrolling

See the commands section of the reference.

⚙️ Key Settings
SettingDefaultDescription
Default viewGraphWhich view opens first in the panel
View layoutBy viewportMulti-column on wide screens; single column + tabs on narrow screens
Stop wordsBuilt-inWords ignored by word-frequency counting
Auto snapshotOnWhether notes are archived automatically
CSS snippetsOffDesktop: inject custom styles into the vault

See the settings section of the reference.

❓ FAQ

If a work won't open, it's usually one of three things: it isn't registered (click "New work" first), it isn't selected at the top of the panel, or the 正文/ path is wrong (write under the 正文/ of a registered work).

Notes missing from the graph is usually "Only show connected" hiding nodes with no relations — turn that off, or add a relation; if a whole category is missing, tick its file type under "Filter" or "Display config" in the toolbar.

Markers missing on the map: check that coordinates read "map name:x,y" (full-width colon and comma) and that the map's enabled types include locale. If a timeline edit doesn't stick, change the "开始" / "结束" fields directly in the note's frontmatter.

Word counts not adding up usually means the homepage counts manuscripts in the currently active work — confirm the right work is selected, then refresh.

More Q&A in the reference FAQ.

💾 Data

Settings, outlines and manuscripts are all Markdown notes in your vault. The plugin only maintains two extra things:

  • Plugin data.json (.obsidian/plugins/novel-kit/data.json): the work list, the active work, and global settings. Deleting it loses registrations and settings and touches no notes.
  • Per-work System/*.json: view layouts, filter rules, homepage templates, todos, sticky notes. Deleting one only resets that slice of view configuration.

🌐 Network use

The plugin works fully offline, collects no telemetry, and never uploads your notes. Only the two features below reach the network, and only when you trigger them yourself — there are no background requests:

FeatureWhen it goes onlineService it contacts
Word-frequency / proofreading dictionariesWhen you click "Download" for a dictionary in settingscdn.jsdelivr.net (jieba dictionaries), www.mdbg.net (CC-CEDICT)
Homepage web-table widgetWhen you enter a URL and click "Fetch"The URL you entered

Both only download data to your machine (dictionaries are saved to .obsidian/plugins/novel-kit/word-freq-dicts/); nothing of yours is sent out. Word frequency still works without downloading a dictionary — only the built-in stop-word list is available and segmentation is less accurate.

⚖️ Disclosures

  • No telemetry: there is no client-side telemetry and no background network requests (network use is limited to the two cases in the previous section).
  • Open source: the full source is in this repository, released under the Apache-2.0 License.

🛠️ Development

Requires Node.js 18 or later. npm install, then npm run dev to develop (output goes to test-vault/.obsidian/plugins/novel-kit/), and npm run build for a production bundle in build/.

After making changes:

npm test              # vitest: homepage templates / sample data / style rules
npm run check         # svelte-check type checking
npm run visual:check  # visual regression (run npm run build first)
npm run lint          # Biome

The entry point is src/main.ts; each feature lives in its own src/features/<name>/ folder (manager.ts + appView.ts + settings.ts), and only css-snippets and export are desktop-only. See the reference's development notes.


📄 License & 💬 Feedback

Apache-2.0 License · NOTICE

Third-party components

This plugin bundles and uses the following open-source projects, with thanks (copyright notices retained as their licences require):

ComponentLicenceCopyright
three.jsMIT© 2010–2024 three.js authors
Chart.jsMIT© 2014–2024 Chart.js Contributors
3d-force-graphMIT© Vasco Asturiano
MiniSearchMIT© Luca Ongaro
jsdiffBSD-3-Clause© 2009–2015 Kevin Decker <kpdecker@gmail.com>
relation-graphMIT© seeksdream
CC-CEDICTCC BY-SA 4.0© CC-CEDICT project (downloaded on demand, not bundled)

⭐ Star · 🐛 Issues


💗 Support

If you like this plugin and want to support the author to keep updating, you can buy the author a bubble tea here!

WeChat PayAlipay
WeChat Pay QR codeAlipay QR code

Happy writing! ✍️

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.