Configuration keys
Aivie reads its settings from the normal ASP.NET Core configuration, mostly under the section Aivie. This page lists every key with its default and where you can set it.
A setting can come from three places. The last one that has a value wins:
- The default in Aivie, as listed on this page.
- Your configuration:
appsettings.json,appsettings.{Environment}.json, environment variables or any other configuration source of your site. In an environment variable, write__where the key has a colon, for exampleAivie__Media__FolderName. - The Settings tab of Setup, where a member of Aivie-admin can change a value. It is stored in the Aivie database and wins over your configuration.
The column Where to set says which of these a key supports:
- Setup wizard: the wizard asks for the value and writes it to your configuration. See Setup wizard.
- Settings tab: the tab Settings of Setup. You can also set the key in your configuration. The Meaning column starts with the label the tab shows, in bold. The tab groups the settings under the headings Idea generator, Page structure, Images and media, Keywords, Datasources, Chat and System. Press Reset to default next to a value to remove what you set there.
- appsettings only: Aivie has no screen for this key. Set it in your configuration.
Lists, such as the three words in NonImageMediaHints, are written as a JSON array in your configuration and as a comma-separated list on the Settings tab.
Secrets belong in your configuration or in environment variables, and never in source control. These keys hold a secret: Umbraco:AI:Secrets:OpenAiKey, Aivie:DataForSeo:Password, Aivie:Competitors:CronSecret and Aivie:GoogleSearchConsole:ServiceAccountKey. The setup wizard and the key upload on the Settings tab write them as plain text to appsettings.{Environment}.json in the content root. Keep that file out of source control, or move the values to environment variables or a secret store.
Setup and connection
The keys that connect Aivie to OpenAI and to your own site.
| Key | Default | Where to set | Meaning |
|---|---|---|---|
Umbraco:AI:Secrets:OpenAiKey | none | Setup wizard, or appsettings only | Your OpenAI API key. The Aivie connection in Umbraco.AI refers to this key instead of storing it. Secret. It is read at startup, so restart the site after a change. |
Aivie:BaseUrl | none | Setup wizard (the field Public URL), or appsettings only | The public address of your site, for example https://www.example.com. Aivie reports it to the licence server when it renews the licence. Do not leave it on localhost on a live site: the licence is then not renewed. |
Aivie:Competitors:CronSecret | generated | Setup wizard | A random secret that the wizard writes when none exists yet. None of the features described in this documentation read it. Leave it as it is. Secret. |
Aivie:Context:DocumentRoot | App_Data/AivieContext | Settings tab | Folder with context documents. The folder that holds the context documents. A relative path is looked for under the content root of the site. |
Aivie:AiStatus:CronExpression | empty, which runs 15 6 * * * | appsettings only | When the daily check of the AI connection runs, in UTC. See Scheduled jobs. |
Umbraco:AI:AuditLog:PersistPrompts | the wizard sets false | Setup wizard, or appsettings only | Whether the Umbraco.AI audit log stores the full prompt. Without this key Umbraco.AI stores it. The wizard switches it off so that your content does not end up in a log table. |
Umbraco:AI:AuditLog:PersistResponses | the wizard sets false | Setup wizard, or appsettings only | The same for the full answer of the AI. |
Ideas
The keys of the idea generator. See Idea generator for what they do in practice. On the Settings tab they are in the groups Idea generator, Page structure and Images and media.
| Key | Default | Where to set | Meaning |
|---|---|---|---|
Aivie:Ideas:AgentAlias | aivie-ideeen | Settings tab | Agent for ideas. The alias of the agent, under AI → Agents, that writes the ideas. |
Aivie:Ideas:TitleAgentAlias | empty | Settings tab | Agent for topics. The agent that proposes the topics. When empty, the ideas agent does it. |
Aivie:Ideas:TranslationAgentAlias | empty | Settings tab | Agent for translating. The agent that translates ideas. When empty, the ideas agent does it. |
Aivie:Ideas:JobEnabled | true | Settings tab | Monthly idea job on. Whether the scheduled ideas job makes ideas. Switch it off on a staging or test copy of a live site. The Auto generate button keeps working. See Background jobs. |
Aivie:IdeaClusters:DocTypeAliases | empty | Settings tab | Doctypes that can serve as an idea group. The document types that an idea group can create. Until you choose at least one, the list of content types in the new idea group dialog is empty. |
Aivie:Ideas:MaxClustersPerRun | 0 | Settings tab | Groups per run. How many idea groups one run handles. Groups that cannot take part are left out first. 0 means all groups. |
Aivie:Ideas:MaxIdeasPerRun | 0 | Settings tab | Maximum number of ideas per run. An emergency brake on the total of one run, across all groups. 0 is no cap. A low value caps the whole month, whatever your package allows. |
Aivie:Ideas:TitleCandidates | 0 | Settings tab | Number of suggested topics. How many topics are proposed per call. 0 lets Aivie choose: three times what the round needs, at least five. |
Aivie:Ideas:MaxTitleLength | 70 | Settings tab | Maximum title length. The most characters a title may have. Longer proposals fall away. 0 turns the check off. |
Aivie:Ideas:MinBodyWords | 300 | Settings tab | Minimum number of words. The least number of words an idea must have, over all blocks together. A shorter idea goes back to the agent in a repair round; if it is still too short after the last round, it is kept. 0 turns the check off. |
Aivie:Ideas:RepairAttempts | 2 | Settings tab | Repair rounds. How often a rejected idea goes back to the agent with the complaints. 0 turns repairing off. |
Aivie:Ideas:MaxExistingIdeas | 50 | Settings tab | Existing ideas in the briefing. How many existing ideas are shown to the generator so that it does not repeat itself. |
Aivie:Ideas:PublishTimeOfDay | 09:00:00 | Settings tab | Publication time (UTC). The time of day at which a scheduled idea goes live. |
Aivie:Ideas:DefaultParentPath | empty | Settings tab | Default parent page. Where ideas are placed when the idea group does not choose a page itself, as a path of names such as Blog or About us/Blogs. When empty, a group without its own parent page does not run. |
Aivie:Ideas:HideFromMenuPropertyAlias | umbracoNaviHide | Settings tab | Property that keeps a page out of the menu. Empty turns it off. Nothing happens when the page type has no such property. |
Aivie:Ideas:ShowInSitemapPropertyAlias | ShowInSitemap | Settings tab | Property for the sitemap. The property that puts a new page in the sitemap. Empty turns it off. |
Aivie:Ideas:MaxLinkTargets | 60 | Settings tab | Number of link targets. How many existing pages are offered as link targets. 0 turns it off. |
Aivie:Ideas:IncludeExamplePage | true | Settings tab | Include an example page. Whether the structure of an example page goes along with each idea. You choose the examples per idea group. If you choose none, Aivie takes the pages with the most varied structure. |
Aivie:Ideas:MaxExampleBlocks | 25 | Settings tab | Blocks from the example page. How many blocks of an example page are read for its structure. |
Aivie:Ideas:ButtonClass | button | Settings tab | CSS class for buttons. The class that turns a call to action in rich text into a button. Empty turns it off. |
Aivie:Ideas:MenuItemTypeAliases | menuItem | Settings tab | Doctypes that only redirect. The document types that only redirect to another place. List of aliases. |
Aivie:Ideas:MenuItemLinkProperties | linkTo, link, url | Settings tab | Properties holding the destination. The properties of such a page type that hold the destination, in order of preference. |
Aivie:Ideas:MaxMediaCandidates | 40 | Settings tab | Number of images offered. How many images from the media folder are offered to the agent to choose from. |
Aivie:Ideas:NonImageMediaHints | video, movie, film | Settings tab | Words that stop a media field from counting as an image. A media field with one of these words in its name or alias counts as video, not as an image. |
Aivie:Ideas:CronExpression | 0 2 1 * * | appsettings only | When the monthly ideas job runs, in UTC. It is ignored when ScheduleFrequency is not Cron. See Scheduled jobs. |
Aivie:Ideas:ScheduleFrequency | Cron | Settings tab (Change) | Cron uses CronExpression as it is. Hourly, Daily, Weekly or Monthly derive the expression from the three keys below. |
Aivie:Ideas:ScheduleTime | 02:00:00 | Settings tab (Change) | The time of the job in UTC. For Hourly only the minutes count. |
Aivie:Ideas:ScheduleDayOfWeek | Monday | Settings tab (Change) | The day of a Weekly job. |
Aivie:Ideas:ScheduleDayOfMonth | 1 | Settings tab (Change) | The day of a Monthly job. A value above 28 becomes 28. |
Media
The keys for the media folder and for image generation. On the Settings tab they are in the group Images and media.
| Key | Default | Where to set | Meaning |
|---|---|---|---|
Aivie:Media:FolderName | Aivie AI afbeeldingen | Settings tab | Media folder. The media library folder in which Aivie saves images and from which it picks them. The default is a Dutch name. The setup wizard creates the folder when it does not exist. |
Aivie:Media:ImageProfileAlias | empty | Settings tab | Profile for image generation. The alias of the Umbraco.AI profile that draws the images. When empty, Aivie uses the default image profile. |
Aivie:Media:GenerateSize | auto | Settings tab | Image size requested from the model. auto takes the widest landscape size the model offers. A fixed size is written as 1792x1024. |
Aivie:Media:OutputWidth | 0 | Settings tab | Stored width. The width at which the file is stored. 0 stores the image as the model delivers it. |
Aivie:Media:OutputHeight | 0 | Settings tab | Stored height. The height at which the file is stored. 0 stores the image as the model delivers it. With a width and a height, the image is cropped to that ratio from the centre and then scaled. |
Aivie:Media:MaxStyleSamples | 6 | Settings tab | Images used to derive the image style. How many images at most go to the model when it derives the image style. |
Aivie:Media:DiscardWindowMinutes | 120 | Settings tab | Replacement window in minutes. For how many minutes after creation a generated image can still be replaced by the chat. |
Umbraco:AI:Experimental:ImageGeneration | off; the wizard sets true | Setup wizard, or appsettings only | Image generation is an experimental feature of Umbraco.AI. Without this key it does nothing. It is read at startup, so restart the site after a change. |
Keywords
The keys of the keyword generator and of DataForSeo, which supplies search volume, difficulty and cost per click. See Keywords, Search Console and DataForSeo. On the Settings tab they are in the group Keywords.
| Key | Default | Where to set | Meaning |
|---|---|---|---|
Aivie:Keywords:AgentAlias | aivie-keywords | Settings tab | Agent for keywords. The alias of the agent that comes up with the keywords. |
Aivie:Keywords:DefaultCount | 20 | Settings tab | Default number. How many keywords are generated when the request does not name a number. |
Aivie:Keywords:MaxExistingKeywords | 0 | Settings tab | Existing keywords in the briefing. How many saved keywords are shown to the agent in the briefing. 0 turns it off, because the keywords context already does this. |
Aivie:Keywords:IncludeSiteProfile | false | Settings tab | Include company details. Whether the company details from the general settings are added to the briefing a second time. Off, because the Aivie settings resource already supplies them. |
Aivie:DataForSeo:Login | none | Setup wizard, or appsettings only | Your DataForSeo login. Without a login and password the volume, difficulty and CPC columns stay empty. |
Aivie:DataForSeo:Password | none | Setup wizard, or appsettings only | Your DataForSeo password. Secret. |
Aivie:DataForSeo:BaseUrl | https://api.dataforseo.com | appsettings only | The address of the DataForSeo API. You normally leave it as it is. |
Search Console
The keys of the connection to Google Search Console. See Keywords, Search Console and DataForSeo for the steps. On the Settings tab they are in the group Keywords.
| Key | Default | Where to set | Meaning |
|---|---|---|---|
Aivie:GoogleSearchConsole:SiteUrl | none | Settings tab | Site URL in Search Console. The Search Console property whose data Aivie reads. A domain property is written as sc-domain:example.com and goes to Google unchanged. After you upload a key, the Settings tab lets you pick it from a list. |
Aivie:GoogleSearchConsole:ServiceAccountKey | none | Settings tab (upload) | Service account key. The content of the JSON key file of the Google service account. You upload the file on the Settings tab, and Aivie writes the content to your configuration and never shows it again. Secret. |
Aivie:GoogleSearchConsole:ServiceAccountKeyPath | none | Settings tab, or appsettings only | Path to the service account file. The older way: a path to the key file on the server. It keeps working, but an uploaded key goes first, and the Settings tab hides this field once a key is uploaded. |
Datasources
The keys for the datasource crawl, its schedule and the datasource text that is written into an agent context. See Datasources. The keys still use the older name Competitors. On the Settings tab they are in the group Datasources.
| Key | Default | Where to set | Meaning |
|---|---|---|---|
Aivie:Competitors:Crawl:MaxPages | 200 | Settings tab | Pages per crawl. The most pages one crawl fetches, even when more links are open. |
Aivie:Competitors:Crawl:MaxConcurrency | 2 | Settings tab | Concurrent requests. How many pages are fetched at the same time. |
Aivie:Competitors:Crawl:DelayMs | 500 | Settings tab | Wait between requests (ms). The pause in milliseconds before each request. |
Aivie:Competitors:Crawl:MaxDepth | 5 | Settings tab | Maximum depth. How many clicks from the start page the crawl follows. 0 is unlimited. |
Aivie:Competitors:Crawl:RespectRobots | true | Settings tab | Respect robots.txt. Whether the crawl keeps to the robots.txt of the site. |
Aivie:Competitors:CronExpression | empty, which runs 0 2 * * * | appsettings only | When the scheduled crawl runs, in UTC. It is ignored when ScheduleFrequency is not Cron. See Scheduled jobs. |
Aivie:Competitors:ScheduleFrequency | Cron | Settings tab (Change) | Cron uses CronExpression as it is. Hourly, Daily, Weekly or Monthly derive the expression from the three keys below. |
Aivie:Competitors:ScheduleTime | 02:00:00 | Settings tab (Change) | The time of the crawl in UTC. For Hourly only the minutes count. |
Aivie:Competitors:ScheduleDayOfWeek | Monday | Settings tab (Change) | The day of a Weekly crawl. |
Aivie:Competitors:ScheduleDayOfMonth | 1 | Settings tab (Change) | The day of a Monthly crawl. A value above 28 becomes 28. |
Aivie:Competitors:Context:Enabled | false | Settings tab | Put crawled content in an agent context. Whether each crawl writes the datasource text into an agent context. Off, so that nothing reaches the agents unasked. |
Aivie:Competitors:Context:ContextAlias | aivie-datasources | Settings tab | Context alias. The alias of the context, under AI → Contexts, that receives the text. The context must exist already. |
Aivie:Competitors:Context:InjectionMode | Always | Settings tab | Injection mode. Always or OnDemand. It only applies to resources that are newly created. With Always the text goes with every request. |
Aivie:Competitors:Context:MaxPagesPerDomain | 25 | Settings tab | Pages per datasource. How many of the most recently changed pages per datasource end up in the text. |
Aivie:Competitors:Context:MaxCharactersPerPage | 6000 | Settings tab | Characters per page. The most characters per page. |
Aivie:Competitors:Context:MaxCharactersTotal | 20000 | Settings tab | Total characters per datasource. The most characters per datasource. |
Chat
The keys for chat history. See Chat and chat history. On the Settings tab they are in the group Chat.
| Key | Default | Where to set | Meaning |
|---|---|---|---|
Aivie:ChatHistory:Enabled | false | Settings tab | Keep chat history. Whether conversations are stored and can be picked up again. |
Aivie:ChatHistory:AutoResumeLatest | false | Settings tab | Resume the latest conversation automatically. Whether the first message in a fresh sidebar continues the latest conversation. |
Aivie:ChatHistory:MaxConversationsPerUser | 5 | Settings tab | Conversations per user. How many conversations are kept per user. Older ones are removed as new ones start. |
Aivie:ChatHistory:MaxMessagesPerConversation | 40 | Settings tab | Messages per conversation. How many messages are kept per conversation. The oldest fall off. |
Aivie:ChatHistory:MaxMessageLength | 4000 | Settings tab | Maximum message length. The longest message that is stored, in characters. Longer messages are cut off. |
Aivie:ChatHistory:RetentionDays | 30 | Settings tab | Retention period in days. How many days conversations are kept. 0 turns the age limit off. |
Aivie:ChatHistory:MaxRestoredMessages | 12 | Settings tab | Restored messages. How many messages the model gets back when a conversation is resumed. |
Aivie:ChatHistory:ResumeRequestMinutes | 5 | Settings tab | Validity of a resume request in minutes. For how many minutes a request to resume a conversation stays valid. |
The settings group for the chat also has two switches for diagnosis, Log agent traffic and Inject test snapshot, which are not listed here. Leave them off on a live site.
Licence
The keys for the licence. See Licence and trial.
| Key | Default | Where to set | Meaning |
|---|---|---|---|
Aivie:License:Key | none | appsettings only | A licence key that you hand over with a deployment. Normally you enter the key on the licence screen instead. When a key exists both in the database and here, the most recently issued one is used. |
Aivie:License:RefreshHours | 24 | appsettings only | How many hours pass between two renewals of the licence at the licence server. Aivie adds up to an hour of random spread. The lowest value is 1. |
Obsolete keys
An older Aivie kept some settings at the root of the configuration. Aivie still reads those places when the new key or section does not exist or is empty, and writes a warning to the log at startup that names every old key still in use. Move them to the new key before a later version stops reading them. A fresh installation only writes the new keys.
| Old key | Use instead |
|---|---|
GoogleSearchConsole (the whole section) | Aivie:GoogleSearchConsole |
DataForSeo:BaseUrl, DataForSeo:Login, DataForSeo:Password | Aivie:DataForSeo:BaseUrl, Aivie:DataForSeo:Login, Aivie:DataForSeo:Password |
Aivie:Ideas:MediaFolderName | Aivie:Media:FolderName. At startup its value is taken over when the new key is empty. There is no warning for this one. |
These keys are not read at all any more. The datasource crawl runs inside your site now, instead of in a separate sitewatcher service. They do no harm, but Aivie warns at startup that they can go:
Aivie:SitewatcherandAivieSitewatcherAivie:Competitors:CompetitorPostUrlAivie:Competitors:ApiKey