Scene add-ons are the new add-on type introduced in MN5. They are installed the same way as classic add-ons. Unless stated otherwise, “add-on” in this documentation refers to a scene add-on.
Add-on structure
Scene add-ons are far simpler than classic add-ons. Here is the minimal directory of a scene add-on:project
mnaddon.json
index.html
mn object injected into window.
Zip the files at the project root so that they sit at the top level of the archive, rename the archive to .mnaddon, and you have a standard-compliant add-on.
To install an add-on, click the three dots on the right of Settings → Add-ons → Import, then enable the add-on in a scene template.
How the add-on above looks once installed
How the add-on above looks once installed

Manifest fields
- addonid: the unique name of the add-on. Two add-ons with the same id are the same add-on; different ids mean different add-ons.
- title: the name shown inside MN.
- version: the version string shown inside MN.
- author: the author name shown inside MN.
- marginnote_version_min: the minimum MN version required by the add-on.
- immersiveOnly: restricts the add-on to immersive mode (the new MN5 interface). Defaults to false. We recommend enabling it for scene add-ons.
- panel: the HTML file that serves as the add-on panel.
- icon: the icon file.
- panelWidth: the panel width. Defaults to 380.
- panelMaxHeight: the upper limit of the panel height. Defaults to 560.
- events: declares the events the add-on can register for. Defaults to
[]. - excerptClaim: declares which excerpts the add-on receives, in the form
{"hashtag": "#X", "configKey": "k"}, whereconfigKeyis optional. See Event system. - cardCommands: commands in the card menu. See Card and excerpt menu commands.
About classic add-ons
Classic add-ons are the add-on type supported by earlier versions of MN. Their entry point ismain.js rather than a panel HTML file.
To learn how to develop classic add-ons, see the older MarginNote add-on development documentation.
Classic and scene add-ons are not mutually exclusive; in fact, you can combine them. In the new add-on system, a scene add-on’s panel and a classic add-on’s script communicate through an event-based mechanism, and several control hooks are available. To learn how to combine the two, and how to use a panel and main.js together, see Beyond the panel.