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

ADDON.md
---
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`.

![Where the greeting shows up in the debug log](media/log.png)

Frontmatter

YAML between two --- lines, parsed with yaml. A duplicate key, an unknown key, title or description fails the build.

bannerstringrequired

Image across the top. Exactly 3:1, at least 1200x400.

mediaPageMedia[]default: []

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:

![The settings page](media/settings.png)
![A short demo](media/demo.mp4)

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.

KindExtensions
Image.png, .jpg, .jpeg, .webp, .gif
Video.mp4 (H.264, HEVC, AV1), .webm (VP8, VP9, AV1)
WhereAspect ratioMinimum size
bannerExactly 3:11200x400
media9:16 to 21:9None
  • 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.

NeedDetail
VideosFFmpeg: ffmpeg and ffprobe on your PATH
Per-file limitADDON_MEDIA_MAX_BYTES, in bytes
Total limitADDON_MEDIA_TOTAL_MAX_BYTES, in bytes

The build fails on any rule broken in Frontmatter, Body or Media, or a missing file.

Next