An Obsidian plugin that allows you to Upload your notes to Wiki.js through GraphQL API.
English | 简体中文
- 📤 Upload individual notes to Wiki.js
- 🖼️ Automatic image upload to Wiki.js assets
- 🔄 Automatic conversion of Obsidian syntax to Wiki.js compatible markdown
- 🏷️ Support for tags and metadata
- ⚙️ Configurable upload behavior (create new, update existing, or ask)
- 🔗 Automatic link conversion
- 📋 Rich upload modal with content preview
- 🎯 Right-click context menu integration
BRAT (Beta Reviewers Auto-update Tester) is the easiest way to install this plugin before it's available in the official Obsidian community plugins list.
- Install the BRAT plugin from the Obsidian Community Plugins
- Open BRAT settings and click "Add Beta plugin"
- Enter the repository URL:
https://github.com/luashiping/note-to-wikijs - Click "Add Plugin" — BRAT will download and install it automatically
- Enable Note to Wiki.js in Obsidian Settings > Community Plugins
BRAT also keeps the plugin up to date automatically whenever a new release is published.
- Download the latest release from GitHub Releases
- Extract the files to your Obsidian plugins folder:
{vault}/.obsidian/plugins/note-to-wikijs/ - Enable the plugin in Obsidian settings
- Clone this repository
- Run
npm installto install dependencies - Run
npm run buildto build the plugin - Copy
main.js,manifest.json, andstyles.cssto your plugins folder
- Open Obsidian Settings
- Navigate to "Community Plugins" > "Note to Wiki.js"
- Configure the following settings:
- Wiki.js URL: The base URL of your Wiki.js instance (e.g.,
https://wiki.example.com) - API Token: Your Wiki.js API token (generate this in Wiki.js Admin > API Access)
- Default Tags: Comma-separated list of default tags to add to uploaded pages
- Auto Convert Links: Automatically convert relative links to absolute Wiki.js paths
- Preserve Obsidian Syntax: Keep Obsidian-specific syntax unchanged (e.g.,
[[links]], callouts) - Upload Behavior: Choose what happens when uploading a note that already exists
- Open the note you want to upload
- Use one of these methods:
- Click the upload icon in the ribbon
- Use the command palette (Ctrl/Cmd + P) and search for "Upload current note to Wiki.js"
- Use the keyboard shortcut (if configured)
- Right-click on any markdown file in the file explorer
- Select "Upload to Wiki.js" from the context menu
OR
- Use the command palette and search for "Upload file to Wiki.js"
- Select the file from the list
The plugin automatically converts Obsidian-specific syntax to be compatible with Wiki.js:
[[Internal Link]]→[Internal Link](/internal-link)[[Internal Link|Display Text]]→[Display Text](/internal-link)
#tag→`#tag`
> [!info] Information
> This is an info calloutBecomes:
> **Information**
>
> This is an info calloutYAML frontmatter is automatically stripped, but tags from frontmatter are extracted and added to the Wiki.js page.
Ensure your Wiki.js API token has the following permissions:
pages:read- To check if pages existpages:write- To create new pagespages:manage- To update existing pages
- Verify your Wiki.js URL is correct and accessible
- Check that your API token is valid and has the required permissions
- Use the "Test Connection" button in settings to verify connectivity
- Check the browser console for detailed error messages
- Verify the target path doesn't contain invalid characters
- Ensure you have proper permissions to create/update pages in Wiki.js
- If links aren't converting properly, check the "Auto Convert Links" setting
- If you want to preserve Obsidian syntax, enable "Preserve Obsidian Syntax"
- Review the content preview in the upload modal before uploading
Future features planned for development:
- 📁 Bulk Upload Folder - Upload entire folders with all files and images at once
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
- Initial release
- Single file upload functionality
- Automatic image upload to Wiki.js assets
- Markdown conversion
- Page overwrite confirmation
- Settings configuration
- Context menu integration