deploy_site, in components of a JS app, or in a site hosted elsewhere.
data-nd-text and data-nd-image are accepted as aliases.)
What happens on deploy
- Each key is registered with the text or picture you deployed as its starting value. The deploy result says how many editable blocks it found.
- Values are applied on the server when the page is served, so they work without JavaScript and search engines see them.
- A redeploy never overwrites a value the client edited. To change a
default after the client edited it, change the value (admin,
update_site_textorPUT /v1/content/{key}), not the HTML.
Rules
- Keys: letters, digits, dots and dashes (
hero.title,menu.2.price). Case sensitive. - One key can appear on several pages; it shows the same value everywhere.
- Text values may contain simple formatting (bold, italic, links, line breaks). Scripts and styles are stripped.
- Pictures are stored as
image.<key>.
Where the client edits them
- Admin: Website → Edit site (click on the live page) or Website → Content (a list). See Client editing.
- Chat: “change our opening hours to 6–14” in Claude or ChatGPT; the
connector uses
list_site_textsandupdate_site_text. - API: the same values are
/v1/contentkeys (scopeglobal).
JS apps (React, Vue, Svelte…)
Content rendered in the browser after load is filled bynd.js. Use the same
markers in your components and include the script:
nd.js fills blocks as they appear. After a manual render you can call
ND.applyContent(element). It reads /_nd/api/content?keys=…&lang=… on the
site’s own address (no key; public site text only). The language comes from
<body data-nd-lang> or <html lang>.
Hosted pages
Pages published withpublish_site_page need no markers: every text and
picture gets a key automatically on publish. Add data-translate yourself
when you want stable, readable keys.
Developer MCP
@neuraldraft/mcp exposes the same conventions as the resource
conventions://editable-html, and register_component /
create_translation_keys to register sections and keys while you build.