Snowflake Method
approvedby 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.
Snowflake Method for Obsidian
English · 简体中文
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
| Feature | What it provides |
|---|---|
| Guided dashboard | Navigate all ten steps and control progress without blocking validation rules. |
| Obsidian-native projects | Store summaries, characters, scenes, and drafts as ordinary local notes. |
| Revision awareness | Receive non-blocking reminders when upstream material changes. |
| Safe repair tools | Detect damaged structure and repair missing managed files without overwriting prose. |
| Bilingual workspace | Use 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.

Screenshots
Click any screenshot to open the full-resolution view.
Installation
Community plugins
- Open Settings → Community plugins in Obsidian.
- Select Browse and search for Snowflake Method.
- Select Snowflake Method, choose Install, and then enable it.
BRAT
- Install BRAT.
- Choose Add beta plugin and enter
ZzPoLariszZ/obsidian-snowflake-method. - Enable Snowflake Method under Community plugins.
Manual installation
- Download
main.js,manifest.json, andstyles.cssfrom the latest release. - Create
<vault>/.obsidian/plugins/snowflake-method/. - Copy the three files into that folder.
- Reload Obsidian and enable Snowflake Method under Community plugins.
Guide
- Open the Command palette and run Snowflake Method: Open project manager.
- In the project manager, choose the project root and language, enter a project name, and create the project.
- Open the project dashboard and begin with the target-reader prompts and one-sentence summary.
- Mark steps complete when they are useful to you, and revisit them whenever the story changes.
- Open long-form notes beside the dashboard or in regular tabs.
Commands
| Command | Purpose |
|---|---|
| Add character | Add a shared character note to the current project. |
| Add scene | Add a shared scene note to the current project. |
| Create project | Create a new Markdown-native Snowflake project. |
| Open dashboard | Open or reveal the current project dashboard. |
| Open health checker | Inspect project structure and repair safe issues. |
| Open project manager | Create, rename, open, or trash projects. |
| Toggle managed boundary protection | Temporarily change protection for managed section markers. |
| Toggle notes beside dashboard | Choose between a companion pane and regular tabs. |
| Toggle reduced animations | Switch between animated and reduced-motion visuals. |
Settings
| Setting | Default | Purpose |
|---|---|---|
| Project root folder | Vault root | Choose the Vault-relative parent folder for projects. |
| Interface language | Follow project | Follow the current project, Obsidian, English, or Simplified Chinese. |
| Default project language | System language | Set the language used when creating projects. |
| Open notes beside dashboard | On | Reuse a companion pane for notes. |
| Reduce animations | Off | Replace animations with static visuals. |
| Protect managed boundaries | On | Prevent 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
| Command | Purpose |
|---|---|
npm run dev | Watch the TypeScript sources and rebuild main.js with an inline source map. |
npm test | Run the complete Vitest suite once. |
npm run test:watch | Run Vitest in watch mode during development. |
npm run build | Type-check the project and create a minified production bundle without a source map. |
npm run lint | Run ESLint across the repository. |
npm run check | Run 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
- Start from
mainwith a clean working tree and confirm thatnpm run checksucceeds. - Select the appropriate semantic version increment and run
npm version patch,npm version minor, ornpm version major. - The version script updates
package.json,manifest.json, andversions.json, then creates a release commit and a numeric tag such as0.2.0. Tags must not use avprefix. - Push the release commit and tag with
git push origin main --follow-tags. - GitHub Actions verifies that the tag exactly matches
manifest.json, installs dependencies withnpm ci, and repeats the test, production build, and lint checks. - After verification, the workflow attests
main.js,manifest.json, andstyles.css, then attaches them to a draft GitHub release with generated release notes. - 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 · 简体中文
从一句话灵感到可动笔的小说方案,一步步完成雪花写作法。
一个中英双语、以 Markdown 为原生存储格式的 Obsidian 小说规划工作台。所有项目均保存在本地,即使停用插件,笔记依然可读、可编辑。
什么是雪花写作法?
Randy Ingermanson 的雪花写作法得名于科赫雪花:这种分形从等边三角形开始,通过在每条边上反复添加更小的三角形结构而逐层生长。他把这种由简入繁的过程借作小说设计的比喻:先用一句话抓住故事全貌,再通过十个可以反复修订的步骤逐层扩展情节、角色与场景,直到可以开始初稿。雪花写作法旨在组织创意,而非强加必须照搬的规则:你可以保留有用的部分、跳过不合适的部分,并随着理解加深返回前序步骤修订。完整方法见雪花写作法原文。
为什么选择本插件?
本插件把这种迭代流程整理为专注的 Markdown 原生工作区。梗概、角色资料和场景规划不必散落在不同文档与表格中:你既可以在统一工作台中逐步推进,也可以把每项内容作为普通 Obsidian 笔记单独打开。所有创作内容都保存在本地,可以链接、迁移,并且停用插件后仍可编辑。工作流只提供结构而不强制限制:提示不会阻止进度,任何步骤都能返回修改。
这是一个独立的开源社区项目,与 Randy Ingermanson 或 Advanced Fiction Writing 没有 隶属、授权或背书关系。
功能
| 功能 | 说明 |
|---|---|
| 十步引导工作台 | 浏览完整流程并自主控制进度,不使用阻塞式校验。 |
| Obsidian 原生项目 | 概述、角色、场景与初稿均保存为普通本地笔记。 |
| 修订提醒 | 上游材料变化时给出不打断写作的复核提示。 |
| 安全修复 | 检测项目结构问题并补齐安全项目,不覆盖正文。 |
| 中英双语 | 界面语言与每个项目的模板语言可分别选择。 |
流程
从精炼的核心构思逐步发展到场景级规划。每个阶段都会保留前序材料供你参考,让扩展与修订始终围绕故事整体进行。

截图
点击任意截图可查看完整分辨率原图。
安装
社区插件市场
- 在 Obsidian 中打开 设置 → 第三方插件。
- 选择 浏览,搜索 Snowflake Method(雪花写作法)。
- 选择 Snowflake Method,点击 安装,然后启用插件。
BRAT
- 安装 BRAT。
- 选择 Add beta plugin,输入
ZzPoLariszZ/obsidian-snowflake-method。 - 在 第三方插件 中启用 Snowflake Method(雪花写作法)。
手动安装
- 从最新发布下载
main.js、manifest.json和styles.css。 - 创建
<仓库>/.obsidian/plugins/snowflake-method/。 - 将三个文件复制到该目录。
- 重载 Obsidian,然后在 第三方插件 中启用 Snowflake Method(雪花写作法)。
指南
- 打开命令面板,执行 打开项目管理器 命令。
- 在项目管理器中选择项目根目录和语言,输入项目名称并创建项目。
- 打开项目工作台,从目标读者问题和一句话概述开始。
- 当某一步对你已经足够有用时,将其标记为完成;故事变化后可随时返回修改。
- 长篇笔记可以在工作台旁的固定分栏或普通标签页中打开。
命令
| 命令 | 用途 |
|---|---|
| 添加角色 | 为当前项目添加共享角色笔记。 |
| 添加场景 | 为当前项目添加共享场景笔记。 |
| 创建项目 | 创建新的 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.js 与 manifest.json、styles.css 一同放入 <仓库>/.obsidian/plugins/snowflake-method/,然后重载 Obsidian。请使用独立的开发 Vault,不要直接使用存放正式创作内容的 Vault。
持续集成
每次 push 和 pull request 都会在所有受支持的 Node.js 版本上执行测试、构建和 lint。只有完整矩阵全部通过后,修改才适合合并。CI 会从源代码重新生成分发包,本地生成的构建产物不作为验证依据。
发布流程
- 从
main分支的干净工作区开始,并确认npm run check已通过。 - 根据语义化版本规则,运行
npm version patch、npm version minor或npm version major。 - 版本脚本会同步更新
package.json、manifest.json和versions.json,随后创建发布 commit 和形如0.2.0的纯数字标签。标签不得带有v前缀。 - 使用
git push origin main --follow-tags推送发布 commit 和标签。 - GitHub Actions 会验证标签与
manifest.json中的版本完全一致,通过npm ci安装依赖,并重新执行测试、生产构建和 lint。 - 验证通过后,工作流会为
main.js、manifest.json和styles.css生成构建来源证明,并将它们与自动生成的发布说明附加到 GitHub 草稿发布。 - 检查草稿发布及其附件无误后,再正式发布。
正式分发的插件仅包含 main.js、manifest.json 和 styles.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.



















