Community

Apps

Obsidian Nostr Writer

Obsidian Nostr Writer is the small, serious bridge between a private Markdown vault and public Nostr publishing: useful, writerly, and honest enough to force a real conversation about keys.

Obsidian Nostr Writer icon
Apps The product layer Clients, signers, publishing tools, wallets and protocol utilities.
Back to Nostr
Apps

Apps shelf

Apps pages collect clients, signers, tools, developer libraries and product research without turning the app into the whole network.

Apps All Apps pages App routeProduct profiles, categories, tools and source links Browse appsClose shelf

App orientation

App categories

App profiles

0xchatadvanced-nostr-searchAegisAlbyAlby GoAlby HubAlby HubAlby SDKAmberAmberAmethystAmethystApp and product researchApplication-specific dataBlossomBlossom spec NIP-B7BookstrBorisBouquetCalendar by FormstrChachiNostr Apps DirectoryCoracleCoracleCorny ChatCreatrDamusDamusDeveloper stack researchDittoDittodiVineDocstrDTANEmojitoFlotillaFlycatFormstrFountainFreeFromFundstrfutrGIF BuddyGittrgo-nostrGossipGossipGrimoireGroups NIP-29HablaHablaHello Nostr — ResourcesHighlighterHiveTalkhomebrew-nostrHORNET StorageHugo2NostrHyperNoteIrisIrisJumblekanbanstrKeys BandListrLNBits NostrmarketLumeLumilumiLUMINAMapstrMarmot Protocolmatrix-nostr-bridgeMeetstrMemestrMindsmonstrmostardMostronaknak — Nostr Army KnifeNalgorithmNarrnashboardNDKNegentropyngitNofluxNosNos Socialnos2xnosbinnosclNostorg Feature MatrixNostr App ManagerNostr Apps Directory GuideNostr clients feature listNostr Compass — ProjectsNostr Developer GuideNostr Development KitNostr Events MonitorNostr MCP ServerNostr NestsNostr PlaygroundNostr Service ProvidersNostr Writernostr-post-checkernostr-protocol/nostrnostr-rubynostr-sdknostr-sdk-ffinostr-sdk-flutternostr-to-rssnostr-toolsNostr.bandnostr.buildnostr.co.uk ClientsNostr.how — Clientsnostr.hsNostrabilityNostrAppsNostrApps category — AudioNostrApps category — CareerNostrApps category — CommunityNostrApps category — CurationNostrApps category — Direct MessageNostrApps category — DiscoveryNostrApps category — File SharingNostrApps category — Group ChatNostrApps category — MeatspaceNostrApps category — OnboardingNostrApps category — SignersNostrApps category — Toolsnostrchecknostrdbnostrdb-rsNostreeNostreonNostriaNostridNostrium / read.nostr.comNostrmoNostrubenoStrudelnoStrudelNostterNosturNosturNotedeckNpub.proNpub.worldnsec.appnsiteNsiteNstart.meObsidian Nostr WriterOlasOpenvibeOracoloOstrich WorkOwn Your PostsP2P BandPazPeridotPhoenixPlebeian MarketPostizPostr / write.nostr.comPrimalPrimalPrimal Article Editor / Reads authoringPrimal Studiopynostrpython-nostrRecommended Application HandlersRelay Toolsrsslayrust-nostrrust-nostr docsSatelliteSatellite EarthSatlantisSatShootShakespeareShopstrSlidestrSnortSnortStemstrswift-nostr-clientTreasuresWavlakeWavlakeWikifreediaWikistrYakiHonneYakiHonneYakiHonne mobile/web app directoryYondar

App pages

Deep dives

Field guides

Awesome Nostr branches

Research and library

Source inventory

Deep Research: Clients, apps and product surfacesDeep Research: Developer stack and toolingResearch Map: nostrapps.comResearch Source: 0xchatResearch Source: 0xchat — NostrApps pageResearch Source: advanced-nostr-searchResearch Source: Aegis — NostrApps pageResearch Source: AlbyResearch Source: Alby — NostrApps pageResearch Source: Alby GoResearch Source: Alby HubResearch Source: Alby Hub GitHubResearch Source: Alby SDKResearch Source: AmberResearch Source: Amber — NostrApps pageResearch Source: AmethystResearch Source: Amethyst GitHubResearch Source: Awesome Nostr ResourcesResearch Source: BookstrResearch Source: BorisResearch Source: Boris — NostrApps pageResearch Source: BouquetResearch Source: Bouquet — NostrApps pageResearch Source: Calendar by FormstrResearch Source: ChachiResearch Source: Chachi — NostrApps pageResearch Source: CoracleResearch Source: Coracle — NostrApps pageResearch Source: Corny ChatResearch Source: DamusResearch Source: Damus — NostrApps pageResearch Source: DittoResearch Source: Ditto — NostrApps pageResearch Source: DocstrResearch Source: DTANResearch Source: DTAN — NostrApps pageResearch Source: EmojitoResearch Source: Emojito — NostrApps pageResearch Source: Flotilla — NostrApps pageResearch Source: FlycatResearch Source: FormstrResearch Source: Formstr — NostrApps pageResearch Source: FountainResearch Source: FreeFromResearch Source: FreeFrom — NostrApps pageResearch Source: FundstrResearch Source: futrResearch Source: futr — NostrApps pageResearch Source: GIF BuddyResearch Source: GIF Buddy — NostrApps pageResearch Source: GittrResearch Source: go-nostr GitHubResearch Source: GossipResearch Source: Gossip — NostrApps pageResearch Source: GrimoireResearch Source: Grimoire — NostrApps pageResearch Source: HablaResearch Source: Habla — NostrApps pageResearch Source: Hello Nostr — ResourcesResearch Source: HighlighterResearch Source: HiveTalkResearch Source: HORNET Storage — NostrCompassResearch Source: IrisResearch Source: Iris — NostrApps pageResearch Source: JumbleResearch Source: Jumble — NostrApps pageResearch Source: Keys BandResearch Source: Keys Band — NostrApps pageResearch Source: ListrResearch Source: LNBits NostrmarketResearch Source: LumeResearch Source: LumilumiResearch Source: LUMINAResearch Source: MapstrResearch Source: Marmot ProtocolResearch Source: MeetstrResearch Source: MemestrResearch Source: MindsResearch Source: monstr GitHubResearch Source: mostardResearch Source: MostroResearch Source: my.nostr.comResearch Source: nak — Nostr Army KnifeResearch Source: nak GitHubResearch Source: NalgorithmResearch Source: Narr — NostrApps pageResearch Source: nashboardResearch Source: NDK GitHubResearch Source: NDK NPMResearch Source: NegentropyResearch Source: Noflux — NostrApps pageResearch Source: Nos SocialResearch Source: Nos Social — NostrApps pageResearch Source: nos2xResearch Source: nos2x — NostrApps pageResearch Source: nosbinResearch Source: noscl GitHubResearch Source: Nostorg Feature MatrixResearch Source: Nostr App ManagerResearch Source: Nostr Book — KindsResearch Source: Nostr DesignResearch Source: Nostr Developer GuideResearch Source: Nostr NestsResearch Source: Nostr Nests — NostrApps pageResearch Source: Nostr PlaygroundResearch Source: nostr-post-checkerResearch Source: nostr-protocol/nostr GitHubResearch Source: nostr-sdk crates.ioResearch Source: nostr-sdk-ffi GitHubResearch Source: nostr-tools GitHubResearch Source: nostr-tools NPMResearch Source: Nostr.BandResearch Source: nostr.buildResearch Source: nostr.co.uk ClientsResearch Source: Nostr.howResearch Source: Nostr.how — ClientsResearch Source: Nostr.how — ProtocolResearch Source: Nostr.how — What is Nostr?Research Source: Nostr.orgResearch Source: NostrabilityResearch Source: NostrAppsResearch Source: NostrApps category — AudioResearch Source: NostrApps category — CareerResearch Source: NostrApps category — CommunityResearch Source: NostrApps category — CurationResearch Source: NostrApps category — Direct MessageResearch Source: NostrApps category — DiscoveryResearch Source: NostrApps category — File SharingResearch Source: NostrApps category — Group ChatResearch Source: NostrApps category — MeatspaceResearch Source: NostrApps category — OnboardingResearch Source: NostrApps category — SignersResearch Source: NostrApps category — ToolsResearch Source: nostrcheckResearch Source: nostrdb GitHubResearch Source: NostreeResearch Source: Nostree — NostrApps pageResearch Source: NostriaResearch Source: Nostria — NostrApps pageResearch Source: NostridResearch Source: Nostrmo — NostrApps pageResearch Source: Nostrmo GitHubResearch Source: NostrubeResearch Source: noStrudelResearch Source: noStrudel — NostrApps pageResearch Source: NostterResearch Source: NosturResearch Source: Nostur — NostrApps pageResearch Source: NotedeckResearch Source: Npub.proResearch Source: Npub.worldResearch Source: nsec.appResearch Source: NsiteResearch Source: Nstart.meResearch Source: Nstart.me — NostrApps pageResearch Source: Obsidian Nostr Writer — NostrApps pageResearch Source: OlasResearch Source: Olas — NostrApps pageResearch Source: OpenvibeResearch Source: OracoloResearch Source: Oracolo — NostrApps pageResearch Source: Ostrich WorkResearch Source: P2P BandResearch Source: PazResearch Source: PeridotResearch Source: Peridot — NostrApps pageResearch Source: PhoenixResearch Source: Phoenix — NostrApps pageResearch Source: Plebeian MarketResearch Source: Plebeian Market — NostrApps pageResearch Source: PrimalResearch Source: Primal — NostrApps pageResearch Source: Primal Article Editor / Reads authoringResearch Source: Primal StudioResearch Source: pynostr GitHubResearch Source: python-nostr GitHubResearch Source: Registry of KindsResearch Source: Relay Tools — NostrApps pageResearch Source: rsslayResearch Source: rust-nostr docsResearch Source: rust-nostr GitHubResearch Source: SatelliteResearch Source: SatShootResearch Source: ShakespeareResearch Source: Shakespeare — NostrApps pageResearch Source: ShopstrResearch Source: Shopstr — NostrApps pageResearch Source: SlidestrResearch Source: SnortResearch Source: start.nostr.netResearch Source: StemstrResearch Source: TreasuresResearch Source: WavlakeResearch Source: WikifreediaResearch Source: Wikifreedia — NostrApps pageResearch Source: WikistrResearch Source: Wikistr — NostrApps pageResearch Source: YakiHonne mobile/web app directoryResearch Source: YondarResearch Source: Yondar — NostrApps page
Apps17 min readDesktop Obsidian publishing plugin

Obsidian Nostr Writer

Obsidian Nostr Writer is not a timeline, not a social dashboard and not a replacement for a full Nostr client. It is a publishing instrument for people who already write in Markdown and want their vault to speak Nostr without opening a noisy web app.

The quick readIf you write in Obsidian, this plugin can publish your Markdown notes as Nostr long-form events, send quick kind 1 notes, upload images through nostr.build, keep a local published history, pull bookmarks and highlights back into your vault and publish from multiple profiles. The catch is not hidden: you put an nsec into a desktop plugin, so the whole workflow deserves the same seriousness you would give any tool that can sign as you.

A vault with a publish button

Obsidian Nostr Writer makes the most sense if your writing already starts in a vault. Not in a browser tab. Not in a platform editor that nags you with sidebars and metrics. A vault: folders, Markdown files, drafts that sit on your machine, half-finished paragraphs, links to old notes, little islands of research that only become public when you decide they are ready.

The plugin's public name inside the Obsidian registry is Nostr Writer, with the plugin id nostr-writer. The page in this archive uses the longer directory name because Nostr directories often call it Obsidian Nostr Writer. The useful point is simple: this is a desktop-only Obsidian Community plugin that lets you publish writing directly to Nostr. The manifest says version 2.2.0, minimum Obsidian app version 0.15.0, author jamesmagoo, MIT license through the GitHub repository and isDesktopOnly set to true. So if you were hoping to publish from Obsidian Mobile, this is not that tool.

That desktop-only detail is not a footnote. It tells you the product has chosen a writing-room workflow. You sit at the machine where your vault lives, open a note, click the upload ribbon icon or command, confirm title, summary, tags and optional banner image, then the plugin signs and sends a Nostr event to your configured relays. It is closer to a publishing plugin for a serious Markdown editor than to a social network client.

Quiet is the product

The README says the quiet part plainly: the plugin does not show you the public Nostr feed. It does not try to become a timeline. It does not ask you to check replies, scroll, follow drama or read whatever the network is currently excited about. It only publishes what you wrote. That restraint is the product.

For a writer, this is more important than it first sounds. Browser-based Nostr editors like Habla or other long-form clients are natural places to publish, but they also sit next to the social layer. You may open them with one essay in mind and leave an hour later with six notifications, a thread you did not need to read and the original paragraph still unfinished. Obsidian Nostr Writer takes the opposite side: stay in the tool where you think, then push out when the piece is ready.

Tony's Habla guide from September 2023 catches the appeal well. He describes using Obsidian for Nostr publishing because Markdown is already native there, previews are strong, drafts live locally and the plugin keeps a local record of published events. He also warns you to check the published post in a Nostr reader afterward, because formatting across clients can still have quirks. That is exactly the right level of confidence: the workflow is elegant, but Nostr long-form is still an ecosystem, not one controlled render engine.

What the plugin actually sends

The code is refreshingly legible. Long-form publishing creates a Nostr event with kind 30023, the kind defined by NIP-23 for articles or blog posts. The event content is the Markdown body of your note after frontmatter has been stripped. The plugin adds a random short d tag, a published_at timestamp, a title tag, optional summary and image tags, and t tags for topics. It signs locally through nostr-tools using finalizeEvent and publishes to the connected relay set.

There is also short-form mode. Turn it on in settings and the plugin adds a pencil icon. That opens a compact modal for sending a quick note as kind 1. This will not replace a full client for conversation, and it is not trying to. It is for the moment when you find a paragraph in your notes, want to share one sentence, and do not want to leave the vault.

Draft support is more complicated. Version 2.1.1 added "Publish as a draft" using kind 30024. That was a real Nostr pattern at the time, and the plugin exposes it clearly with a toggle in the publish modal. But current NIP-23 marks kind 30024 as deprecated and points toward NIP-37 for drafts. That does not make the plugin useless. It does mean you should treat draft interoperability carefully. A draft event that one client understands may not behave like a modern private draft in another client.

After a successful public long-form publish, the plugin writes a local record to published.json inside the plugin directory. That record includes the event, the source file path, the relays that accepted it and the profile nickname used. This is a very Obsidian thing to do. The Nostr event is public and relay-based, but your own publishing ledger stays beside your vault.

Images, frontmatter and the working desk

Nostr long-form sounds clean until images arrive. A Markdown note in Obsidian often uses wiki-style embeds like ![[image.png]]. That is wonderful inside your local vault and useless to a stranger reading on another client. Obsidian Nostr Writer tries to close that gap by scanning the active note's resolved links for image files, uploading them and replacing the local embed string with a public URL.

The upload service is specific: it posts to the nostr.build API endpoint for file uploads. For inline images, the plugin stores the returned URL and builds imeta tags from metadata such as mime type, original hash, size, dimensions, blurhash and thumbnail when those fields are available. Banner images are selected from the local machine in the publish modal and also uploaded. Premium nostr.build mode can use NIP-98 HTTP auth, which means the plugin signs an auth event for the upload request.

The limits are practical. The modal checks normal banner uploads against 10 MB, with a higher ceiling when premium storage is enabled. Inline image upload has its own size guard. You do not need to memorize those numbers to understand the point: this plugin is not merely pasting a Markdown note into Nostr. It is trying to make an Obsidian note survive outside Obsidian.

Frontmatter support arrived in version 1.6.0 through a community contribution from sfr0xyz. The current publish modal reads frontmatter for title, summary and tags, removes the frontmatter block from the body before publishing and also extracts hashtags directly from the note text. You can then add or remove tag pills before publishing. That is a small feature with a large ergonomic effect. It lets you keep the metadata habits of a local writing system while producing the tags Nostr clients expect.

The key bargain

Here is the part you should not skip. Obsidian Nostr Writer does not use a browser signer, Amber, a bunker or a hardware device. It asks for an nsec in plugin settings. The README's own security notice says the private key is stored in your local Obsidian settings file at <Vault Directory>/.obsidian/plugins/nostr-writer/data.json. The settings UI masks the field and lets you show, copy or delete it, but the project is explicit that masking is not strong encryption.

That is not scandalous. It is a trade. The plugin can be this smooth because it can sign from inside Obsidian. The danger is that any workflow storing an nsec in a vault config should be treated as hot-key territory. If somebody gets your device, your vault files, your sync folder or a malicious plugin into the wrong place, the risk is not theoretical. It is your publishing identity.

The sane way to use a tool like this is to decide what key it deserves. Some writers may use a dedicated publishing key instead of their main identity. Some may keep it on a machine they already protect carefully. Some will decide they need signer isolation and choose a different workflow. The point is not fear. The point is consent. Obsidian Nostr Writer gives you a quiet writing desk, but the key you place on that desk matters.

Relay handling is also concrete. The default settings include relays such as wss://nos.lol, wss://relay.damus.io, wss://relay.nostr.band, wss://relayable.org, wss://nostr.rocks and wss://nostr.fmt.wiz.biz. You can configure relay URLs, reconnect from the status bar and see how many relays are connected. You can also enable multiple profiles and store additional nsecs with nicknames, then choose the profile from the publish or short-note modal. Again, this is convenient and serious at the same time.

Bookmarks and highlights come home

The plugin started as a publishing tool, but later versions pulled reading artifacts back toward the vault. Version 2.0.0 added a bookmarks view and download capability. In code, it queries your kind 10003 bookmark list, the NIP-51 standard list for saved things, follows e tags for notes and a tags for long-form articles, then loads those events from your relays. The view can open items online through njump and download a bookmark into Obsidian as Markdown.

Version 2.2.0 added highlights. That view queries kind 9802, the NIP-84 highlight event. A highlight's content is the marked passage; tags can point back to the source through a, e or r tags. The plugin tries to resolve the source, show a readable card and let you copy the highlight text or download the source article. The UI even nudges users toward highlighter.com when no highlights are found and listr.lol when no bookmarks are found.

This is where the plugin becomes more than an export button. It hints at a richer loop: draft locally, publish outward, read elsewhere, save or highlight, then bring those fragments back into the vault where your thinking actually happens. Nostr is often described as a social protocol, but for writers it can also become a public annotation and memory layer. Obsidian Nostr Writer touches that idea without building a whole reader around it.

Who built it and how alive it is

The public project trail points to GitHub user jamesmagoo. The Obsidian registry lists author jamesmagoo, and Obsidian Stats names the plugin as by James McGauran. The README includes a Lightning address, magoo@getalby.com, a Nostr npub for ideas and feedback, Buy Me a Coffee and GitHub Sponsors links. This feels like a small open-source tool maintained by a real person, not a product team pretending to be a community.

The repository was created in July 2023, had its first release on August 2, 2023 and reached the Obsidian plugin store in version 1.3.0 later that month. The release history tells the story of the tool maturing in public: multiple relays in August 2023, published view and status bar, tags, multiple nsecs in November, frontmatter parsing in January 2024, bookmarks in April, auto-upload images to nostr.build, draft publishing and finally highlights in version 2.2.0 on April 18, 2024.

At the time of this review, GitHub showed 89 stars, 6 forks, 162 commits, MIT license, TypeScript as the main language and a few open issues. The Obsidian community stats file showed 4,258 total downloads for nostr-writer, with version 2.2.0 accounting for 955 of those. There were three visible contributors: jamesmagoo, LiamSwayne and sfr0xyz. The repository had later activity after the last release, but the latest packaged plugin version remains 2.2.0 from April 2024.

So where does it fit? Not as the default Nostr app for everyone. It fits writers, researchers, note-takers and small publishers who already trust Obsidian as their workshop. It fits people who want to publish long-form Nostr posts without making a web client their drafting environment. It fits a user who understands that local-first writing and hot-key signing are two different subjects. If that is you, this is one of the more charming tools in the Nostr shelf: narrow, useful, a little rough, and built around a genuinely good idea.

Sources worth opening

This article keeps claims close to the public project trail. Start here when you want to verify Obsidian Nostr Writer yourself.

Back to the Crays Nostr page
Apps route visual cue 1
Apps route visual cue 2
Apps route visual cue 3
Apps route visual cue 4
Apps route visual cue 5

How to use this page

Find the product surface first.

Search clients, signers, product categories or developer tools when you need a specific app, source file or comparison clue.

AppsKeep exploring AppsApp routeProduct profiles, categories, signer guides and source links.Browse apps
Apps route visual cue 1
Apps route visual cue 2
Apps route visual cue 3
Apps route visual cue 4
Apps route visual cue 5

Bring something back

Ask, suggest, submit or nominate.

Use these links when something is missing, a source is stale, or a public Nostr builder belongs in the map.