Addon Page
ADDON.md: banner, gallery and description.
ADDON.md, beside manifest.json, is your addon page: a banner, a gallery and a Markdown body. The Marketplace takes the title and summary from the manifest, so never repeat them here.
- my-plugin
- manifest.json
- ADDON.mdThe addon page
- mediaEvery file the page shows
- banner.png
- settings.png
- demo.mp4
- demo-poster.jpg
- log.png
- src
Example
---
banner: media/banner.png
media:
- image: media/settings.png
alt: The plugin's settings page, with the greeting text field
- video: media/demo.mp4
poster: media/demo-poster.jpg
alt: A message being sent, and the greeting appearing in the log
---
Hello World logs a greeting every time you send a message.
## Settings
- **Greeting**: the text to log. Defaults to `Hello!`.
- **Log level**: `info` or `debug`.
Frontmatter
YAML between two --- lines, parsed with yaml. A duplicate key, an unknown key, title or description fails the build.
Image across the top. Exactly 3:1, at least 1200x400.
The gallery, in order. Up to 20 entries, each between 9:16 and 21:9. An entry has image or video, never both.
Body
Standard Markdown after the frontmatter. Never start with a # heading, since the manifest name is the title. Tables fail the build; use a list.
Embed media with image syntax. The extension decides image or video:

Add icons with :name: shortcodes such as :gear:. See Page Icons.
Media
Every file lives in the addon's media/ folder. Links to other sites fail the build.
| Kind | Extensions |
|---|---|
| Image | .png, .jpg, .jpeg, .webp, .gif |
| Video | .mp4 (H.264, HEVC, AV1), .webm (VP8, VP9, AV1) |
| Where | Aspect ratio | Minimum size |
|---|---|---|
banner | Exactly 3:1 | 1200x400 |
media | 9:16 to 21:9 | None |
- Paths are relative to the addon and start with
media/. Subfolders work:media/screens/settings.png. - Names use letters, digits,
_,-and., and never start with.. Paths are at most 200 characters. - Extensions are case-insensitive.
- One file: at most 10 MB. All media: at most 50 MB.
- A file's contents must match its extension.
Building
ubd build measures every referenced file (size, bytes, video length, a loading placeholder) and writes page.json beside the bundle and built manifest.json. Commit page.json with the bundle. The server checks the files again on publish.
| Need | Detail |
|---|---|
| Videos | FFmpeg: ffmpeg and ffprobe on your PATH |
| Per-file limit | ADDON_MEDIA_MAX_BYTES, in bytes |
| Total limit | ADDON_MEDIA_TOTAL_MAX_BYTES, in bytes |
The build fails on any rule broken in Frontmatter, Body or Media, or a missing file.