Creative Technology

Museum Label Generator

A tool that generates six interpretive text formats from a single artwork description. Built to support human editorial control, not replace it.

Claude APINext.jsTypeScriptNetlify FunctionsJSON structured output
GitHub ↗
The problem

Museum wall labels are written for visitors who already speak the language of art history. For everyone else — a child, a casual visitor, a designer who thinks visually — the infrastructure meant to help them often doesn't. Labels are a bottleneck: curators are overworked, the writing process is slow, and scaling across formats (audio, kids, alt text) is rarely prioritized. The tool takes a single artwork description and generates six interpretive formats simultaneously. The AI acts as a starting point. Human editorial control is built in at every step.

Paused

Click to pause · Double-click to resume

Wall Label
Untitled
Artist unknown · Date unknown

Famille noire porcelain exemplifying the Kangxi period's apotheosis of ferric oxide reduction firing, the pictorial program articulating a syncretic cosmological schema through the deployment of peony, prunus, and corvid iconography within a horror vacui compositional field. Wait, what? Use the generator.

Architecture

A browser form collects artwork metadata, source description, tone, and grounding preferences. A Netlify function keeps the API key server-side, sends one Claude request, validates the JSON response, and renders each label format as an editable draft.

Request flow
Browser form + tone controls
Netlify Function secure API route
Claude API interpretation prompt
JSON parser six label fields
UI render copyable cards
Prompt strategy

Single source text · Six formats · Tone control · Accessibility constraints

Optional input

Artwork upload stays local as gallery context; source text remains the model input

Wall label Standing visitor, 15 seconds — ~80 words, no jargon.
Extended label Visitor who pauses — ~200 words, permits depth.
Kids label Age 6–10 — not simplified, differently framed. Questions, wonder, sensory detail.
Audio guide script Listener, not reader — written for the ear. Conversational rhythm, present tense, ~45 seconds spoken.
Alt text Screen reader user — functional replacement for a visual. Objective, WCAG-compliant, no interpretation.
Curator notes Internal — flags ambiguities, suggests research directions, notes what the source description didn't specify.
  • Structured JSON over streaming text All six formats arrive together and render into independent copyable cards. Streaming would have made per-section copy interactions much more complex, and curators typically want all formats at once anyway.
  • A single API call for all six formats Higher latency per generation, but simpler architecture and a better match for how the tool gets used. The tradeoff was worth it.
  • Tone as a prompt injection, not a separate system prompt The tone dropdown (Neutral, Warm, Playful, Academic) injects into the user prompt rather than switching system prompts. Less precise, but much simpler to maintain as a single prompt template.
  • The 'Show Prompt & Architecture' toggle Exposes the system prompt, user template, and call flow to anyone who wants to see them. Institutional adopters want to audit what the model is doing before they trust it with their collections. Showing the work is also a trust signal for visitors skeptical of AI tools in cultural contexts.
  • API key security via Netlify Function All calls route through a serverless function. The key never touches the browser. Cold starts add ~300ms latency on first request — acceptable for a tool used in considered, not rapid-fire, workflows.
Minimum: ~30 characters
Output
Copy individual sections for drafts and iteration.
Generate to see wall label drafts, alt text, and curator notes here.