Snowflake Method

approved

by PoLaris

Plan fiction with a bilingual ten-step Snowflake Method workspace backed by portable Markdown notes. - This plugin has not been manually reviewed by Obsidian staff.

1 downloadsUpdated todayMIT

Animated Koch snowflake

Snowflake Method for Obsidian

English · 简体中文

Release CI License Obsidian 1.13+

Turn a story idea into a draft-ready plan, one Snowflake step at a time.

A bilingual, Markdown-native fiction planning workspace for Obsidian. Your projects stay local, portable, and readable even when the plugin is disabled.


Installation · Guide · Privacy · Roadmap · Development



What is the Snowflake Method?

Randy Ingermanson's Snowflake Method takes its name from the Koch Snowflake, a fractal that grows from an equilateral triangle by repeatedly adding smaller triangular details to every side. He uses that step-by-step growth as a metaphor for designing a novel: begin with a one-sentence summary, then expand the plot, characters, and scenes through ten revisable steps until the story is ready to draft. The method organizes creativity rather than imposing a rigid rulebook: you can keep what helps, skip what does not, and return to earlier steps as the story develops. Read Ingermanson's original Snowflake Method article for the complete method.

Why this plugin?

This plugin turns that iterative workflow into a focused, Markdown-native workspace. Instead of scattering summaries, character sheets, and scene plans across separate documents and spreadsheets, you can develop them together in one guided dashboard while still opening every piece as an ordinary Obsidian note.

Your writing stays local, linkable, portable, and editable without the plugin. The workflow provides structure without enforcing it: hints never block progress and every step can be revisited.

This is an independent, open-source community project. It is NOT affiliated with, authorized by, or endorsed by Randy Ingermanson or Advanced Fiction Writing.

Features

FeatureWhat it provides
Guided dashboardNavigate all ten steps and control progress without blocking validation rules.
Obsidian-native projectsStore summaries, characters, scenes, and drafts as ordinary local notes.
Revision awarenessReceive non-blocking reminders when upstream material changes.
Safe repair toolsDetect damaged structure and repair missing managed files without overwriting prose.
Bilingual workspaceUse English or Simplified Chinese independently for the interface and each project.

Workflow

Work from a compact premise toward a scene-level plan. Each stage keeps the earlier material visible, so you can expand or revise without losing the shape of the story.

Animated walkthrough of the ten Snowflake Method steps

Screenshots

Click any screenshot to open the full-resolution view.

Step 1 — One-sentence summary
1. One-sentence summary
Define your target readers and distill the whole story into one sentence.
Step 2 — One-paragraph summary
2. One-paragraph summary
Expand the premise into a compact structure and optional description.
Step 3 — Major character sheet
3. Major character sheet
Capture each major character's storyline, motivation, conflict, and growth.
Step 4 — Plot synopsis
4. Plot synopsis
Turn the one-paragraph summary into a fuller, connected plot.
Step 5 — Character synopsis
5. Character synopsis
Retell the story from each character's point of view.
Step 6 — Long synopsis
6. Long synopsis
Develop each plot paragraph into full-page material in a dedicated note.
Step 7 — Character profiles
7. Character profiles
Keep detailed, reusable profiles for every character in the novel.
Step 8 — Scene list
8. Scene list
Map, reorder, and connect scenes with point-of-view characters and conflict.
Step 9 — Scene planning
9. Scene planning (optional)
Develop each scene's conflict, turning points, beats, and memorable details.
Step 10 — Write your novel
10. Write your novel!
Move into drafting with a complete plan while keeping every earlier step editable.

Installation

Community plugins

  1. Open Settings → Community plugins in Obsidian.
  2. Select Browse and search for Snowflake Method.
  3. Select Snowflake Method, choose Install, and then enable it.

BRAT

  1. Install BRAT.
  2. Choose Add beta plugin and enter ZzPoLariszZ/obsidian-snowflake-method.
  3. Enable Snowflake Method under Community plugins.

Manual installation

  1. Download main.js, manifest.json, and styles.css from the latest release.
  2. Create <vault>/.obsidian/plugins/snowflake-method/.
  3. Copy the three files into that folder.
  4. Reload Obsidian and enable Snowflake Method under Community plugins.

Guide

  1. Open the Command palette and run Snowflake Method: Open project manager.
  2. In the project manager, choose the project root and language, enter a project name, and create the project.
  3. Open the project dashboard and begin with the target-reader prompts and one-sentence summary.
  4. Mark steps complete when they are useful to you, and revisit them whenever the story changes.
  5. Open long-form notes beside the dashboard or in regular tabs.

Commands

CommandPurpose
Add characterAdd a shared character note to the current project.
Add sceneAdd a shared scene note to the current project.
Create projectCreate a new Markdown-native Snowflake project.
Open dashboardOpen or reveal the current project dashboard.
Open health checkerInspect project structure and repair safe issues.
Open project managerCreate, rename, open, or trash projects.
Toggle managed boundary protectionTemporarily change protection for managed section markers.
Toggle notes beside dashboardChoose between a companion pane and regular tabs.
Toggle reduced animationsSwitch between animated and reduced-motion visuals.

Settings

SettingDefaultPurpose
Project root folderVault rootChoose the Vault-relative parent folder for projects.
Interface languageFollow projectFollow the current project, Obsidian, English, or Simplified Chinese.
Default project languageSystem languageSet the language used when creating projects.
Open notes beside dashboardOnReuse a companion pane for notes.
Reduce animationsOffReplace animations with static visuals.
Protect managed boundariesOnPrevent accidental edits to synchronization markers.

Privacy

Snowflake Method for Obsidian is local-first. Project files and plugin settings remain in your Vault, and the plugin does not transmit your writing or configuration.

  • No account, subscription, or external service is required.
  • The plugin makes no network requests and includes no AI service, telemetry, or analytics.
  • Projects use ordinary Obsidian-compatible files that remain readable and editable when the plugin is disabled.

Structure

Each project is stored as a direct child of the configured project root. Its folders, filenames, and starter notes are localized to the language selected when the project is created.

Example English project layout
<project root>/
└── My Novel/
    ├── 00_System/
    │   ├── 001_Project_Metadata.md
    │   └── ...
    ├── 10_Summary/
    │   ├── 11_One_Sentence_Summary.md
    │   └── ...
    ├── 20_Character/
    ├── 30_Synopsis/
    ├── 40_Scene/
    ├── 50_Manuscript/
    │   └── Draft.md
    └── ...

The dashboard synchronizes only the text enclosed by paired managed section boundaries:

<!-- snowflake:section:one-sentence-summary:start -->
Your writing remains editable here.
<!-- snowflake:section:one-sentence-summary:end -->

These HTML comments are structural markers rather than story content. Boundary protection is enabled by default to prevent accidental edits to the marker lines. Text inside the pair is synchronized with the dashboard; Markdown outside it remains under your control and is not replaced by the plugin. If markers are missing, duplicated, reversed, or overlapping, the plugin reports the problem and avoids an unsafe write.

Roadmap

  • Obtain written permission from Randy Ingermanson or Advanced Fiction Writing before adding the writing example from Chapter 20 of How to Write a Novel Using the Snowflake Method.
  • Use Obsidian's native Bases to manage characters and scenes.
  • Use Obsidian's native Canvas to build timelines and scene boards.
  • ...

Development

Requirements

  • Node.js 20 or later
  • npm with lockfile support
  • A development Vault for testing the packaged plugin in Obsidian 1.13.0 or later

Continuous integration currently verifies the project on Node.js 20, 22, and 24 under Ubuntu.

Setup

git clone https://github.com/ZzPoLariszZ/obsidian-snowflake-method.git
cd obsidian-snowflake-method
npm ci

npm ci installs the exact dependency versions recorded in package-lock.json. The generated main.js is a build artifact and should not be edited directly.

Commands

CommandPurpose
npm run devWatch the TypeScript sources and rebuild main.js with an inline source map.
npm testRun the complete Vitest suite once.
npm run test:watchRun Vitest in watch mode during development.
npm run buildType-check the project and create a minified production bundle without a source map.
npm run lintRun ESLint across the repository.
npm run checkRun the required test, production build, and lint sequence.

Run npm run check before every commit intended for review. For local Obsidian testing, place the generated main.js together with manifest.json and styles.css in <vault>/.obsidian/plugins/snowflake-method/, then reload Obsidian. Use a separate development Vault rather than production writing data.

Continuous integration

Every push and pull request runs the test, build, and lint jobs on each supported Node.js version. A change is ready to merge only after the full matrix succeeds. CI builds the distributable bundle from source; local build output is not treated as verification evidence.

Release procedure

  1. Start from main with a clean working tree and confirm that npm run check succeeds.
  2. Select the appropriate semantic version increment and run npm version patch, npm version minor, or npm version major.
  3. The version script updates package.json, manifest.json, and versions.json, then creates a release commit and a numeric tag such as 0.2.0. Tags must not use a v prefix.
  4. Push the release commit and tag with git push origin main --follow-tags.
  5. GitHub Actions verifies that the tag exactly matches manifest.json, installs dependencies with npm ci, and repeats the test, production build, and lint checks.
  6. After verification, the workflow attests main.js, manifest.json, and styles.css, then attaches them to a draft GitHub release with generated release notes.
  7. Review the draft release and its assets before publishing it.

The distributable plugin consists of exactly main.js, manifest.json, and styles.css. Do not include source files, development dependencies, or a containing directory in the release assets.

License

MIT License. The Snowflake Method name and source material belong to their respective owners.


动态科赫雪花

Obsidian 雪花写作法

English · 简体中文

Release CI License Obsidian 1.13+

从一句话灵感到可动笔的小说方案,一步步完成雪花写作法。

一个中英双语、以 Markdown 为原生存储格式的 Obsidian 小说规划工作台。所有项目均保存在本地,即使停用插件,笔记依然可读、可编辑。


安装 · 指南 · 隐私 · 路线图 · 开发



什么是雪花写作法?

Randy Ingermanson 的雪花写作法得名于科赫雪花:这种分形从等边三角形开始,通过在每条边上反复添加更小的三角形结构而逐层生长。他把这种由简入繁的过程借作小说设计的比喻:先用一句话抓住故事全貌,再通过十个可以反复修订的步骤逐层扩展情节、角色与场景,直到可以开始初稿。雪花写作法旨在组织创意,而非强加必须照搬的规则:你可以保留有用的部分、跳过不合适的部分,并随着理解加深返回前序步骤修订。完整方法见雪花写作法原文

为什么选择本插件?

本插件把这种迭代流程整理为专注的 Markdown 原生工作区。梗概、角色资料和场景规划不必散落在不同文档与表格中:你既可以在统一工作台中逐步推进,也可以把每项内容作为普通 Obsidian 笔记单独打开。所有创作内容都保存在本地,可以链接、迁移,并且停用插件后仍可编辑。工作流只提供结构而不强制限制:提示不会阻止进度,任何步骤都能返回修改。

这是一个独立的开源社区项目,与 Randy Ingermanson 或 Advanced Fiction Writing 没有 隶属、授权或背书关系。

功能

功能说明
十步引导工作台浏览完整流程并自主控制进度,不使用阻塞式校验。
Obsidian 原生项目概述、角色、场景与初稿均保存为普通本地笔记。
修订提醒上游材料变化时给出不打断写作的复核提示。
安全修复检测项目结构问题并补齐安全项目,不覆盖正文。
中英双语界面语言与每个项目的模板语言可分别选择。

流程

从精炼的核心构思逐步发展到场景级规划。每个阶段都会保留前序材料供你参考,让扩展与修订始终围绕故事整体进行。

雪花写作法十个步骤的动态演示

截图

点击任意截图可查看完整分辨率原图。

第一步——一句话概述
一、一句话概述
确定目标读者,用一句话概括完整故事。
第二步——一段式梗概
二、一段式梗概
将核心构思扩展为紧凑的故事结构,并可补充小说简介。
第三步——主要角色表
三、主要角色表
记录主要角色的故事线、动机、冲突与成长。
第四步——情节大纲
四、情节大纲
将一段式梗概扩展为更加完整、连贯的故事情节。
第五步——人物大纲
五、人物大纲
从每位角色的视角重新讲述故事。
第六步——长篇大纲
六、长篇大纲
在独立笔记中把每个情节段落扩展为长篇内容。
第七步——角色档案
七、角色档案
为小说中的每个人物维护详细、可复用的完整档案。
第八步——场景列表
八、场景列表
排列故事场景,并为它们关联视点人物与核心冲突。
第九步——场景规划
九、场景规划(可选)
进一步设计冲突、转折、节奏与令人难忘的场景细节。
第十步——开始创作吧
十、开始创作吧!
带着完整计划进入初稿,同时保留随时修改前面步骤的自由。

安装

社区插件市场

  1. 在 Obsidian 中打开 设置 → 第三方插件
  2. 选择 浏览,搜索 Snowflake Method(雪花写作法)
  3. 选择 Snowflake Method,点击 安装,然后启用插件。

BRAT

  1. 安装 BRAT
  2. 选择 Add beta plugin,输入 ZzPoLariszZ/obsidian-snowflake-method
  3. 第三方插件 中启用 Snowflake Method(雪花写作法)

手动安装

  1. 最新发布下载 main.jsmanifest.jsonstyles.css
  2. 创建 <仓库>/.obsidian/plugins/snowflake-method/
  3. 将三个文件复制到该目录。
  4. 重载 Obsidian,然后在 第三方插件 中启用 Snowflake Method(雪花写作法)

指南

  1. 打开命令面板,执行 打开项目管理器 命令。
  2. 在项目管理器中选择项目根目录和语言,输入项目名称并创建项目。
  3. 打开项目工作台,从目标读者问题和一句话概述开始。
  4. 当某一步对你已经足够有用时,将其标记为完成;故事变化后可随时返回修改。
  5. 长篇笔记可以在工作台旁的固定分栏或普通标签页中打开。

命令

命令用途
添加角色为当前项目添加共享角色笔记。
添加场景为当前项目添加共享场景笔记。
创建项目创建新的 Markdown 原生雪花写作项目。
打开工作台打开或显示当前项目的工作台。
打开健康检查器检查项目结构并修复安全问题。
打开项目管理器创建、重命名、打开或移入回收站。
切换托管区段边界保护临时调整同步标记的编辑保护。
切换在工作台旁打开笔记选择固定分栏或普通标签页。
切换减少动画模式在动画效果和减少动态效果之间切换。

设置

设置默认值用途
项目根目录Vault 根目录选择存放项目的 Vault 相对父目录。
界面语言跟随项目可跟随当前项目、Obsidian,或固定为英文/简体中文。
默认项目语言系统语言设置新建项目所使用的模板语言。
在工作台旁打开笔记开启长篇笔记复用工作台旁的固定分栏。
减少动画关闭使用静态视觉效果替代动画。
保护托管区段边界开启防止意外修改同步标记。

隐私

Obsidian 雪花写作法采用本地优先设计。项目文件和插件设置均保留在 Vault 中,插件不会传输你的创作内容或配置。

  • 无需注册账号、订阅或连接外部服务。
  • 插件不发起网络请求,也不包含 AI 服务、遥测或数据分析。
  • 项目使用 Obsidian 兼容文件;停用插件后,内容依然可以正常阅读和编辑。

结构

每个项目都作为所选项目根目录的直接子文件夹保存。文件夹、文件名和初始笔记会根据创建项目时选择的语言进行本地化。

中文项目结构示例
<项目根目录>/
└── 我的小说/
    ├── 00_系统/
    │   ├── 001_项目元数据.md
    │   └── ...
    ├── 10_概述/
    │   ├── 11_一句话概述.md
    │   └── ...
    ├── 20_角色/
    ├── 30_大纲/
    ├── 40_场景/
    ├── 50_正文/
    │   └── 初稿.md
    └── ...

工作台只同步一对托管区段边界之间的文字:

<!-- snowflake:section:one-sentence-summary:start -->
这里的创作内容可以正常编辑。
<!-- snowflake:section:one-sentence-summary:end -->

这些 HTML 注释是结构标记,并非正文内容。边界保护默认开启,用于防止意外修改标记行。标记之间的内容会与工作台同步;标记之外的 Markdown 始终由作者管理,插件不会替换。如果标记缺失、重复、顺序颠倒或相互重叠,插件会报告问题并停止不安全的写入。

路线图

  • 取得 Randy Ingermanson 或 Advanced Fiction Writing 的书面授权后,加入《How to Write a Novel Using the Snowflake Method》第 20 章中的创作示例。
  • 使用 Obsidian 原生 Bases 管理角色与场景。
  • 使用 Obsidian 原生 Canvas 构建时间线与场景看板。
  • ……

开发

环境要求

  • Node.js 20 或更高版本
  • 支持 lockfile 的 npm
  • 用于测试打包插件的独立开发 Vault,以及 Obsidian 1.13.0 或更高版本

当前持续集成会在 Ubuntu 环境下分别使用 Node.js 20、22 和 24 验证项目。

初始化

git clone https://github.com/ZzPoLariszZ/obsidian-snowflake-method.git
cd obsidian-snowflake-method
npm ci

npm ci 会严格按照 package-lock.json 安装依赖。生成的 main.js 属于构建产物,不应直接编辑。

命令

命令用途
npm run dev监听 TypeScript 源文件,并生成包含内联 source map 的 main.js
npm test单次运行完整的 Vitest 测试套件。
npm run test:watch在开发过程中以监听模式运行 Vitest。
npm run build执行类型检查,并生成不含 source map 的压缩生产构建。
npm run lint对整个仓库运行 ESLint。
npm run check依次运行提交前必须通过的测试、生产构建和 lint。

所有准备提交审核的 commit 都应先通过 npm run check。在 Obsidian 中进行本地测试时,将生成的 main.jsmanifest.jsonstyles.css 一同放入 <仓库>/.obsidian/plugins/snowflake-method/,然后重载 Obsidian。请使用独立的开发 Vault,不要直接使用存放正式创作内容的 Vault。

持续集成

每次 push 和 pull request 都会在所有受支持的 Node.js 版本上执行测试、构建和 lint。只有完整矩阵全部通过后,修改才适合合并。CI 会从源代码重新生成分发包,本地生成的构建产物不作为验证依据。

发布流程

  1. main 分支的干净工作区开始,并确认 npm run check 已通过。
  2. 根据语义化版本规则,运行 npm version patchnpm version minornpm version major
  3. 版本脚本会同步更新 package.jsonmanifest.jsonversions.json,随后创建发布 commit 和形如 0.2.0 的纯数字标签。标签不得带有 v 前缀。
  4. 使用 git push origin main --follow-tags 推送发布 commit 和标签。
  5. GitHub Actions 会验证标签与 manifest.json 中的版本完全一致,通过 npm ci 安装依赖,并重新执行测试、生产构建和 lint。
  6. 验证通过后,工作流会为 main.jsmanifest.jsonstyles.css 生成构建来源证明,并将它们与自动生成的发布说明附加到 GitHub 草稿发布。
  7. 检查草稿发布及其附件无误后,再正式发布。

正式分发的插件仅包含 main.jsmanifest.jsonstyles.css。发布附件中不要加入源代码、开发依赖或外层目录。

许可证

源代码采用 MIT License。“雪花写作法”名称及原始方法资料的相关权利归各自权利人所有。

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.