Generate With AI
in the Kirby Panel

Whole layouts from your own blocks, custom blocks included. Refine or extend the selected text from the toolbar, or take an inline suggestion as you type.

Bring Context to Your Prompt Party

View Button

Fill several fields from one prompt
Tick the fields in the dialog and write one prompt. Copilot fills them all, streaming into the form. Attach files, or pull another page in as context with @page://.
Kirby Panel
Write the text and the description from the attached press release.

Skills

Your house rules, one mention away
Define brand voice and writing rules once. Editors type @skill://, pick from the typeahead, and the prompt follows them.
Kirby Panel
Write the teaser for "Luise Frey: Rooms of Silence" @skill://brand-voice @skill://

Inline Suggestions

Keep typing, Copilot finishes the sentence
Pause in a writer field and gray ghost text picks up the sentence. Tab keeps it, anything else drops it.
Kirby Panel

Luise Frey photographs rooms after everyone has left them: a school gym on the first morning of the holidays, a ferry terminal at four in the morning.

Toolbar Buttons

Rewrite the selection where it sits
Select text in a writer or textarea field, press the Copilot button, and say what should change. The result replaces the selection or follows it.
Kirby Panel

Luise Frey photographs rooms after everyone has left them: a school gym on the first morning of the holidays, a ferry terminal at four in the morning, the back office of a shop that closed last spring.

The twenty-eight prints in this exhibition were made over six winters in northern Germany and on the Faroe Islands. Frey works with a large-format camera and available light, which means exposures long enough for the dust to settle inside the frame.

Rooms of Silence is her first solo exhibition in Leipzig. A conversation with the artist takes place on 14 November at 7 pm, admission free.

Make this shorter.
Replace

Blocks & Layouts

Whole layouts from your own blocks
Prompt once and Copilot fills the field with blocks or multi-column layouts built from your block blueprints, custom blocks included.
Kirby Panel

Text ×

Rooms After Everyone Has Left
H2

Luise Frey photographs rooms after everyone has left them: a school gym on the first morning of the holidays, a ferry terminal at four in the morning, the back office of a shop that closed last spring.

The twenty-eight prints in this exhibition were made over six winters in northern Germany and on the Faroe Islands. Frey works with a large-format camera and available light, which means exposures long enough for the dust to settle inside the frame.

I wait until the dust has settled inside the frame.
Luise Frey

Rooms of Silence is her first solo exhibition in Leipzig. A conversation with the artist takes place on 14 November at 7 pm, admission free.

Generate Content for
Multiple Panel Fields

Demonstration of generating many fields at once in the Kirby Panel: paused

Drive Copilot
From PHP

Call AI providers from CLI commands, hooks, or custom workflows. The same Client that powers the Panel is available to your code.
  • Hooks & CLI
    Generate content on save or in batch from the command line.
  • Two Output Modes
    Plain text or structured objects validated against a JSON schema.
site/commands/generate-meta-descriptions.php
// Run: kirby generate-meta-descriptions

use JohannSchopplich\Copilot\AI\Client;
use Kirby\CLI\CLI;

return [
    'description' => 'Generate missing meta descriptions for blog posts',
    'command' => static function (CLI $cli): void {
        $client = Client::instance();

        foreach (page('blog')->children() as $post) {
            if ($post->meta_description()->isNotEmpty()) {
                continue;
            }

            $description = $client->generateText([
                ['role' => 'system', 'content' => 'Write a 155-character SEO description.'],
                ['role' => 'user', 'content' => $post->text()->kirbytext()],
            ]);

            $post->update(['meta_description' => $description]);
            $cli->out('✓ ' . $post->title());
        }

        $cli->success('Done');
    }
];

Don’t Take
My Word for It

Install the plugin and try Copilot in the Panel yourself.