The Umbraco AI Kitchen Sink Install

5 min read

Since we released Umbraco AI, one of the most common bits of feedback I’ve heard is: “I want to try it, but I’m not sure which packages to install.” That’s fair. With a core package, five providers, prompt templates, agents, and a copilot UI, there’s a lot of moving parts. If you just want to kick the tyres and see what it can do, figuring out the right combination of NuGet packages shouldn’t be the hard part.

So I put together a quick install script that gives you everything. One script, every package, plus seed data so there’s actually something to look at when you log in. The base script was created with the help of Paul Seal’s excellent Package Script Writer — if you haven’t used it before, it’s a great tool for generating Umbraco install scripts.

The Script

You can grab it from this gist, or run this one-liner in PowerShell to download and execute it directly:

irm https://gist.githubusercontent.com/mattbrailsford/199d0b45e926ffb122fa96467039bd90/raw/install.ps1?v=4 | iex

Here’s the full thing if you’d prefer to review it first:

# Ensure we have the latest Umbraco templates
dotnet new install Umbraco.Templates --force

# Create solution/project
dotnet new sln --name "Umbraco.AI.Demo"
dotnet new umbraco --force -n "Umbraco.AI.Demo"
  --friendly-name "Administrator"
  --email "admin@example.com"
  --password "password1234"
  --development-database-type SQLite
dotnet sln add "Umbraco.AI.Demo"

# Add starter kit
dotnet add "Umbraco.AI.Demo" package clean

# Add Umbraco AI
dotnet add "Umbraco.AI.Demo" package Umbraco.AI

# Add Umbraco AI addons
dotnet add "Umbraco.AI.Demo" package Umbraco.AI.Prompt
dotnet add "Umbraco.AI.Demo" package Umbraco.AI.Agent --prerelease
dotnet add "Umbraco.AI.Demo" package Umbraco.AI.Agent.Copilot --prerelease

# Add all AI providers
dotnet add "Umbraco.AI.Demo" package Umbraco.AI.Amazon
dotnet add "Umbraco.AI.Demo" package Umbraco.AI.Anthropic
dotnet add "Umbraco.AI.Demo" package Umbraco.AI.Google
dotnet add "Umbraco.AI.Demo" package Umbraco.AI.MicrosoftFoundry
dotnet add "Umbraco.AI.Demo" package Umbraco.AI.OpenAI

# Seed demo data (connection, profile, context, prompts, agents, guardrails, tests)
curl -o Umbraco.AI.Demo/UmbracoAISeedData.cs
  https://gist.githubusercontent.com/mattbrailsford/199d0b45e926ffb122fa96467039bd90/raw/UmbracoAISeedData.cs?v=4

dotnet run --project "Umbraco.AI.Demo"

It creates a fresh Umbraco site with SQLite (no database setup needed), installs the Clean starter kit so you have some content to work with, adds every Umbraco AI package, downloads a seed data file, and runs the site. That’s it.

What Gets Seeded

The seed data file is a simple Umbraco composer that runs on first startup. It checks whether the demo data already exists and skips if so, making it safe to restart the site without duplicating anything.

Here’s what it creates:

A Brand Voice Context

A context resource with tone guidelines, target audience, style rules, and patterns to avoid. This gets injected into AI requests automatically, so responses follow your brand voice without you having to repeat instructions every time.

An OpenAI Connection

A connection configured for OpenAI. You’ll need to drop your own API key in — the seed data uses a placeholder YOUR_OPENAI_API_KEY that you’ll want to update in the backoffice once you log in.

Two Guardrails

  • Content Safety Policy — Three rules working together: a contains check that redacts competitor brand mentions, a regex pattern that blocks profanity in user input before it reaches the model, and an LLM safety judge that warns on harmful content, misinformation, or anything that could damage brand reputation.
  • PII Protection — Three regex-based rules that catch personal data in AI responses: email addresses and phone numbers get redacted automatically, while SSN patterns trigger a hard block.

Both guardrails are assigned to the default chat profile, so they apply to all AI operations out of the box.

A Default Chat Profile

A profile that combines the OpenAI connection with GPT-4o, sets a reasonable temperature, attaches the brand voice context, and links both guardrails for input/output safety. This profile is also configured as the default for chat operations.

Two Prompt Templates

  • Summarize — Condenses content into a concise paragraph. Scoped to text areas and text boxes, generates 3 options to choose from.
  • SEO Description — Generates a 150-160 character meta description with relevant keywords. Includes the full page context so it can reference surrounding content.

Both appear as property actions in the backoffice, so editors can trigger them directly from the content they’re working on.

Three AI Agents

  • Content Assistant — A general-purpose helper for creating and editing content, scoped to the Content section.
  • Media Assistant — Focused on writing alt text, captions, and descriptions for media assets, scoped to the Media section.
  • Legal Specialist — Helps draft terms and conditions, privacy policies, and disclaimers, scoped to the Content section.

All three are surfaced through the Copilot chat sidebar, so you can start chatting with them straight away.

Five Tests

Tests in Umbraco AI work like unit tests for your prompts and agents — they validate that outputs remain consistent and meet expectations even as models evolve. The seed data includes tests that exercise both code-based graders (regex, contains, guardrail) and model-based graders (LLM judge):

  • Summarize — Output Quality — Runs the Summarize prompt against sample content and checks that the output is a single concise paragraph using an LLM judge, plus a regex grader to catch multi-paragraph responses.
  • SEO Description — Length Validation — Validates that generated meta descriptions fall within the 120-170 character SEO sweet spot, contain no HTML tags, and mention relevant keywords.
  • Content Assistant — Helpfulness — Sends a real content request to the Content Assistant agent and uses an LLM judge to evaluate whether the response is actionable and on-topic.
  • Legal Specialist — Disclaimer Compliance — Asks the Legal Specialist to draft a privacy policy and validates it includes a professional legal review disclaimer using a regex pattern match.
  • Content Safety — Clean Output Passes — A regression test that runs clean content through guardrail graders to confirm it isn’t falsely flagged — catching the “false positive” problem before it reaches editors.

Several tests use a run count of 3 for pass@k metric evaluation, which helps measure non-deterministic behaviour across multiple runs.

Getting It Running

  1. Run the one-liner above, or save the script as install.ps1 and run ./install.ps1
  2. Wait for the site to start (you’ll see the usual Umbraco startup output)
  3. Open the URL shown in the console
  4. Log in with admin@example.com / password1234
  5. Head to the AI section in Settings and update the OpenAI connection with your API key
  6. Start exploring

The prompts will show up as property actions when editing content, the agents will be available in the Copilot sidebar, and the guardrails and tests can be found in the AI section.

Why This Exists

The goal here isn’t to prescribe how you should set up Umbraco AI in production. It’s to remove the friction of getting started. Instead of reading docs to figure out which of the dozen-plus packages you need, you get a working site with real examples in about a minute. From there, you can poke around, see how things are configured, and start forming your own opinions about what you’d actually use.

If you want to swap OpenAI for Anthropic or Google, the providers are already installed — just create a new connection and update your profile. If you want to tweak the prompts, agents, guardrails, or tests, they’re all editable in the backoffice.

Hopefully this makes it a bit easier to get hands-on with Umbraco AI. Give it a go and let me know what you think.

Until next time 👋