docs
official extensions| modified | Saturday 9 May 2026 |
|---|
XLog includes 38 built-in extensions that add features for knowledge bases, content creation, and developer workflows. All extensions are enabled by default (see Usage to disable specific ones).
These extensions are specifically designed for building interconnected knowledge bases:
| Extension | Description |
|---|---|
| Backlinks (Autolink pages) | Automatically converts page name mentions to links. Creates bidirectional links between pages without manual linking. Core feature for networked knowledge. |
| Hashtags | Add support for hashtag syntax. Organize notes by topic, browse all pages with a specific tag. Essential for categorization. |
| Search | Full-text search across all pages. Find content instantly without browsing. |
| Recent | Lists pages ordered by last modified date. Track recent activity and writing progress. |
| Star | Pin important pages to footer. Keep frequently accessed pages readily available. |
| Date | Detects dates and links to timeline pages. See all pages mentioning a specific date. |
| Embed | Shortcode to embed one page inside another. Transclude content across pages. |
Enhance your writing with rich media and formatting:
| Extension | Description |
|---|---|
| Photos | Lists images in a directory Instagram-style. Great for photo journals. |
| Images | Display consecutive images in columns side-by-side instead of stacked. |
| Upload file | Upload files, screenshots, audio recordings, and camera photos directly. |
| Link preview | Preview tweets, Facebook posts, YouTube videos, Giphy links inline. |
| MathJax | Support mathematical notation with $ (inline) and $$ (blocks). |
| Mermaid | Create diagrams and flowcharts using MermaidJS syntax. |
| TOC | Automatic table of contents for long pages. |
Tools for the writing workflow:
| Extension | Description |
|---|---|
| Editor | Opens pages in your desktop text editor (Vim, VS Code, Emacs, etc.). Core editing feature. |
| Hotreload | Automatically reloads page when file changes on disk. Instant preview of edits. |
| Frontmatter | YAML frontmatter support for metadata (title, tags, properties). |
| Todo | Toggle checkboxes while viewing without edit mode. Interactive task management. |
| File operations | Delete and rename pages from the UI. |
| Heading | Renders headings as linkable anchors. |
For technical documentation and advanced use cases:
| Extension | Description |
|---|---|
| Blocks | Define custom blocks using YAML code blocks. Extensible content types. |
| Shortcode | One-line and block shortcodes for custom functionality. |
| sql_table | Query long tables with SQL. Interactive data exploration. |
| Github | “Edit on GitHub” quick action for collaborative documentation. |
| PGP | Encrypt/decrypt .md.pgp files using GPG. Secure private notes. |
| LiveCodes | Embed interactive code playgrounds in pages. Supports 90+ languages/frameworks. |
Support for additional file formats beyond markdown:
| Extension | Description |
|---|---|
| HTML | Treat HTML files as pages (.html, .htm, .xhtml). |
| Pandoc | Render .org, .rst, .rtf, .odt files using Pandoc. |
Deploy and integrate with external services:
| Extension | Description |
|---|---|
| RSS | RSS feed at /+/feed.rss, added to page headers. |
| Sitemap | sitemap.xml for search engine crawling. |
| Opengraph | Open Graph meta tags for social media previews. |
| Manifest | Web app manifest.json for PWA support. |
| ActivityPub | Webfinger and ActivityPub actor for Fediverse integration. |
| Disqus | Add Disqus comments to pages. |
| Giscus | Add Giscus comments powered by GitHub Discussions. |
Improve text rendering and display:
| Extension | Description |
|---|---|
| Autolink | Shorten long link strings to save space. |
| RTL | Proper text direction for right-to-left languages. |
Add arbitrary HTML to pages:
| Extension | Description |
|---|---|
| Custom Widget | Inject custom HTML in <head>, before, or after page content. |
When you mention [Another Page](/Another_Page) in your markdown:
1This concept relates to [Graph Theory](/Graph_Theory) and [Network Effects](/Network_Effects).
XLog automatically:
Use hashtags to categorize:
1# My Research Notes
2
3This is about #machine-learning and #neural-networks.
4
5Some thoughts on #attention-mechanisms in transformers.
Click any hashtag to see all pages tagged with it.
Press Ctrl+K or click Search to find any content across your knowledge base instantly.
Enable GitHub Discussions-powered comments on your pages:
1xlog -giscus-repo "owner/repo" \
2 -giscus-repo-id "R_kgDOG1234" \
3 -giscus-category "Announcements" \
4 -giscus-category-id "DIC_kwDOG5678" \
5 -giscus-mapping "pathname" \
6 -giscus-theme "preferred_color_scheme" \
7 -giscus-lang "en"
To get your repository and category IDs, visit giscus.app and follow the configuration wizard. You’ll need:
Optional parameters:
-giscus-mapping: How to match pages to discussions (pathname, url, title, og:title)-giscus-theme: Visual theme (light, dark, preferred_color_scheme, etc.)-giscus-lang: Interface language (en, ar, zh, etc.)Embed live, interactive code playgrounds using LiveCodes. Add livecodes to code fence:
1```jsx livecodes
2import { useState } from "react";
3
4export default function Counter() {
5 const [count, setCount] = useState(0);
6 return (
7 <div>
8 <p>You clicked {count} times</p>
9 <button onClick={() => setCount(count + 1)}>Click me</button>
10 </div>
11 );
12}
13```
Supports 90+ languages including JavaScript, Python, Go, Rust, and more. Optional parameters:
height=500px - Set playground heightconsole=open - Show console panel (open, closed, full)theme=light - Set theme (light, dark)editor=monaco - Choose editor typeExample with parameters:
1```python livecodes console=open height=400px
2def fibonacci(n):
3 if n <= 1:
4 return n
5 return fibonacci(n-1) + fibonacci(n-2)
6
7print([fibonacci(i) for i in range(10)])
8```
See LiveCodes documentation for details.
To disable specific extensions:
1xlog -disabled-extensions "photos,videos,activitypub"
Comma-separated list of extension names (case-sensitive, use lowercase).
Extensions use defined extension points to add functionality. See extensions.md for developer documentation on creating custom extensions.
All built-in extensions are defined under /extensions and automatically imported in cmd/xlog/xlog.go.
If you’re building a personal wiki or digital garden, these extensions provide the core experience:
Together, these create a powerful knowledge base system that rivals dedicated tools like Roam Research or Obsidian, while keeping all your data in portable markdown files.