Tunahan ALTINTOP17 downloadsPublish notes to XWiki and sync XWiki pages back into your vault as Markdown, using an XWiki access token.
Publish notes from your vault to XWiki and pull XWiki pages back into your vault as Markdown. Pages are stored in XWiki with the Markdown Syntax 1.2 extension, so they keep their Markdown source and can travel both ways.
XWiki Publisher is a community plugin. It is not affiliated with or endorsed by XWiki SAS. XWiki is a trademark of XWiki SAS.
xwiki/2.1) are converted to Markdown when pulled;
optionally their XWiki macros are kept so they keep working after publishing.markdown/1.2);/rest/…) and page (/bin/…) URLs;The XWiki administrator checklist, with commands to verify each point, is in docs/XWIKI_SETUP.md (Turkish).
https://wiki.example.com or
https://wiki.example.com/xwiki when XWiki runs under /xwiki.xwiki for the main wiki.Bearer prefix
is fine.Authorization: Bearer <token> (default);Open the side panel with the Open XWiki panel ribbon icon or the XWiki Publisher: Open panel command. It shows, for the current note, the XWiki page it maps to, whether it is in sync, and buttons for every action.
| Action | Where | What it does |
|---|---|---|
| Publish current note | Panel, command palette, file menu | Creates or updates the note's XWiki page and uploads its attachments. |
| Pull current note from XWiki | Panel, command palette, file menu | Updates the note from its XWiki page. |
| Check XWiki | Panel | Tells whether the page changed on XWiki since the last sync. |
| Import page from XWiki | Panel, command palette | Imports one page given by URL or reference (Space.Page). |
| Sync space from XWiki | Panel, command palette | Pulls a page and every page below it, given by URL or space reference. |
| Open published page in browser | Panel, command palette | Opens the page saved in the note's xwiki-url property. |
Only one XWiki operation runs at a time. A running space sync shows its progress in the panel and can be cancelled.
The target page is chosen in this order:
xwiki-reference property: the full page reference, for example Docs.Team.Guide.WebHome. Pulled notes get it
automatically, so they always go back to the page they came from.xwiki-space and xwiki-page properties.Projects/Alpha/Note.md becomes <Default space>.Projects.Alpha.Note. A note created inside a folder that was
pulled from XWiki goes below that folder's page instead.With Use nested pages (default) a note becomes a nested page (Space.Note.WebHome); otherwise a terminal page
(Space.Note). With Create folder pages (default) an empty page is created for each mirrored folder that has
no page yet, so the XWiki page tree shows the same hierarchy. Existing pages are never modified by this.
The page title is the note name, or the xwiki-title property when set.
| In the note | On XWiki |
|---|---|
Frontmatter, %%comments%% |
Removed |
![[image.png]],  |
Image pointing at the uploaded attachment |
![[file.pdf]], [label](file.pdf) |
Link to the uploaded attachment |
[[Note]], [[Note#Heading|alias]] |
Link to the page the note is (or will be) published to |
![[Note]] (transclusion) |
Link to the note's page; XWiki has no transclusion |
XWiki macros ({{toc/}}, {{info}}…{{/info}}) |
Unchanged: Markdown 1.2 runs them like XWiki syntax does |
| Empty table cells | Filled with a non-breaking space ( ), so XWiki keeps the columns |
Unresolved [[links]] |
Plain text |
| Code blocks and inline code | Unchanged |
Publishing over a page that is not written in Markdown asks for confirmation first, because the page's syntax changes to Markdown and its macros are lost.
xwiki/2.1) are rendered by XWiki, application sheets and macros included, and the result
is converted to Markdown: macros appear as their output, for example as links. This is the default.xwiki/2.x) are converted from their source instead:
headings, formatting, lists, tables, links and images become Markdown, and macros are copied as they are
({{toc/}}, {{info}}…{{/info}}, extension macros). XWiki Markdown 1.2 accepts the same macro syntax, so they keep
working once the note is published. In Obsidian they appear as text. Pages whose source is empty (their content
comes from an application sheet) are still converted from their rendered view.xwiki-syntax property with the page's original syntax, and the panel shows a warning.[[label|Space.Page]], ![[alt|file.png]]) become wiki links and embeds in the
vault, or links to XWiki when the target is not in the vault. on publish become empty again.assets folder next to the note (setting Attachment
folder; leave it empty to use Obsidian's own attachment location). They move with the note, files that belong to
other notes are never overwritten, and a name clash in the folder is solved by numbering (logo 2.png); such a file
is still uploaded under its XWiki name when the note is published.assets folder
on the next pull or sync, when their name matches an attachment of the page and no other note links to them.[[wiki links]].XWiki/Team/ is
published below Team, not below the default space.In XWiki a page can have content and child pages. In the vault, its children live in a folder, and the page itself becomes that folder's folder note. Folder notes are built in; no other plugin is needed:
| Setting | Default | Meaning |
|---|---|---|
| Folder note location | Inside the folder | Projects/Projects.md (inside) or Projects.md next to Projects/. |
| Folder note name | {{folder_name}} |
File name template of folder notes. |
| Open folder notes from the file explorer | On | Selecting a folder opens its folder note. |
| Hide folder notes in the file explorer | On | Folder notes are not listed in the explorer. |
| Rename folder notes with their folder | On | The folder note follows renames and moves of its folder. |
The layouts are the same as those of the Folder notes plugin by Lost Paul, so a vault organised with it keeps working: select Use Folder notes settings → Copy to take over its layout, then disable it so folders are not handled twice (the settings page warns while both are enabled). Notes already pulled from XWiki move to a new layout on the next sync. Folder notes' vault folder storage location and non-Markdown folder notes (canvas, base) are not supported.
The file explorer has no public API for these features, so they work on its interface, like other folder note plugins; each of them can be turned off.
Folder notes are also respected when publishing:
Docs.Projects.WebHome for Projects/Projects.md), not as a page
below it, and its title is the folder name unless xwiki-title is set.After each publish or pull, the plugin remembers the page version and a fingerprint of the note's body. Editing the note's properties, or links that Obsidian rewrites when the plugin moves a file, do not count as local changes.
<Note> (XWiki conflict).md.| Property | Set by | Meaning |
|---|---|---|
xwiki-reference |
Pull, or you | Full XWiki page reference; wins over every other rule. |
xwiki-space, xwiki-page |
You | Target space (dot separated, escape dots with \.) and page name. |
xwiki-title |
Pull, or you | Page title when it differs from the note name. |
xwiki-url |
Publish and pull | Address of the page; used by Open published page in browser. |
xwiki-syntax |
Pull | Original syntax of a page that was converted to Markdown. |
| Setting | Default | What it does |
|---|---|---|
| XWiki URL | – | Base URL of the XWiki instance; must start with https:// (plain http:// works but triggers a warning). |
| Wiki | xwiki |
Wiki identifier. |
| Token | – | Secret in Obsidian's secret storage holding the XWiki access token. |
| Authentication method | Bearer token | Bearer, basic (username + token) or custom header. |
| Username / Header name | – | Shown for the basic and custom header methods. |
| Test connection | – | Checks the token and lists the Markdown syntaxes of the server. |
| Publishing | ||
| Default space | Obsidian |
Space for notes without a location of their own; dot separated for nested spaces. |
| Mirror folder structure | On | Publish notes below the default space following their folders. |
| Create folder pages | On | Create an empty page for each mirrored folder that has none. |
| Use nested pages | On | Nested pages (Space.Note.WebHome) instead of terminal pages (Space.Note). |
| Markdown syntax | markdown/1.2 |
Syntax id the pages are saved with. |
| Upload attachments | On | Upload embedded images and linked files. |
| Save page URL in note | On | Write xwiki-url to the note. |
| Sync | ||
| Sync folder | Vault root | Where the XWiki page tree is recreated. |
| Attachment folder | assets |
Subfolder next to each pulled note for its attachments; empty uses Obsidian's attachment location. |
| Keep XWiki macros | Off | Convert XWiki syntax pages from their source and keep their macros. |
| Folder notes | ||
| Folder note location | Inside the folder | Inside (X/X.md) or next to the folder (X.md). |
| Folder note name | {{folder_name}} |
File name template of folder notes. |
| Open folder notes from the file explorer | On | Selecting a folder opens its folder note. |
| Hide folder notes in the file explorer | On | Folder notes are not listed in the explorer. |
| Rename folder notes with their folder | On | The folder note follows renames and moves of its folder. |
| Use Folder notes settings | – | Copies the layout from the Folder notes plugin, for vaults that used it. |
==text==), callouts, block references and embedded notes has no XWiki
Markdown equivalent and is published as plain text or links.(% %) parameters) is lost. The plugin
asks for confirmation before publishing over a page that is not written in Markdown./bin/view/… and /bin/download/… URLs below the configured XWiki URL. Instances with a
different URL scheme are not supported.npm install
npm run dev # watch build; copies the build to OBSIDIAN_PLUGIN_DIR from .env when set
npm run build # type check and production build
npm run lint # Obsidian's official ESLint rules
npm test # unit tests
To try a build, copy main.js, manifest.json and styles.css to <vault>/.obsidian/plugins/xwiki-publisher/, or
copy .env.example to .env and point OBSIDIAN_PLUGIN_DIR at that folder.
Release and submission steps are described in docs/SUBMISSION.md (Turkish).