Skip to main content

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:

  1. The default in Aivie, as listed on this page.
  2. 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 example Aivie__Media__FolderName.
  3. 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.

warning

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.

KeyDefaultWhere to setMeaning
Umbraco:AI:Secrets:OpenAiKeynoneSetup wizard, or appsettings onlyYour 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:BaseUrlnoneSetup wizard (the field Public URL), or appsettings onlyThe 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:CronSecretgeneratedSetup wizardA 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:DocumentRootApp_Data/AivieContextSettings tabFolder 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:CronExpressionempty, which runs 15 6 * * *appsettings onlyWhen the daily check of the AI connection runs, in UTC. See Scheduled jobs.
Umbraco:AI:AuditLog:PersistPromptsthe wizard sets falseSetup wizard, or appsettings onlyWhether 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:PersistResponsesthe wizard sets falseSetup wizard, or appsettings onlyThe 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.

KeyDefaultWhere to setMeaning
Aivie:Ideas:AgentAliasaivie-ideeenSettings tabAgent for ideas. The alias of the agent, under AI → Agents, that writes the ideas.
Aivie:Ideas:TitleAgentAliasemptySettings tabAgent for topics. The agent that proposes the topics. When empty, the ideas agent does it.
Aivie:Ideas:TranslationAgentAliasemptySettings tabAgent for translating. The agent that translates ideas. When empty, the ideas agent does it.
Aivie:Ideas:JobEnabledtrueSettings tabMonthly 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:DocTypeAliasesemptySettings tabDoctypes 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:MaxClustersPerRun0Settings tabGroups per run. How many idea groups one run handles. Groups that cannot take part are left out first. 0 means all groups.
Aivie:Ideas:MaxIdeasPerRun0Settings tabMaximum 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:TitleCandidates0Settings tabNumber 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:MaxTitleLength70Settings tabMaximum title length. The most characters a title may have. Longer proposals fall away. 0 turns the check off.
Aivie:Ideas:MinBodyWords300Settings tabMinimum 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:RepairAttempts2Settings tabRepair rounds. How often a rejected idea goes back to the agent with the complaints. 0 turns repairing off.
Aivie:Ideas:MaxExistingIdeas50Settings tabExisting ideas in the briefing. How many existing ideas are shown to the generator so that it does not repeat itself.
Aivie:Ideas:PublishTimeOfDay09:00:00Settings tabPublication time (UTC). The time of day at which a scheduled idea goes live.
Aivie:Ideas:DefaultParentPathemptySettings tabDefault 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:HideFromMenuPropertyAliasumbracoNaviHideSettings tabProperty that keeps a page out of the menu. Empty turns it off. Nothing happens when the page type has no such property.
Aivie:Ideas:ShowInSitemapPropertyAliasShowInSitemapSettings tabProperty for the sitemap. The property that puts a new page in the sitemap. Empty turns it off.
Aivie:Ideas:MaxLinkTargets60Settings tabNumber of link targets. How many existing pages are offered as link targets. 0 turns it off.
Aivie:Ideas:IncludeExamplePagetrueSettings tabInclude 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:MaxExampleBlocks25Settings tabBlocks from the example page. How many blocks of an example page are read for its structure.
Aivie:Ideas:ButtonClassbuttonSettings tabCSS class for buttons. The class that turns a call to action in rich text into a button. Empty turns it off.
Aivie:Ideas:MenuItemTypeAliasesmenuItemSettings tabDoctypes that only redirect. The document types that only redirect to another place. List of aliases.
Aivie:Ideas:MenuItemLinkPropertieslinkTo, link, urlSettings tabProperties holding the destination. The properties of such a page type that hold the destination, in order of preference.
Aivie:Ideas:MaxMediaCandidates40Settings tabNumber of images offered. How many images from the media folder are offered to the agent to choose from.
Aivie:Ideas:NonImageMediaHintsvideo, movie, filmSettings tabWords 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:CronExpression0 2 1 * *appsettings onlyWhen the monthly ideas job runs, in UTC. It is ignored when ScheduleFrequency is not Cron. See Scheduled jobs.
Aivie:Ideas:ScheduleFrequencyCronSettings tab (Change)Cron uses CronExpression as it is. Hourly, Daily, Weekly or Monthly derive the expression from the three keys below.
Aivie:Ideas:ScheduleTime02:00:00Settings tab (Change)The time of the job in UTC. For Hourly only the minutes count.
Aivie:Ideas:ScheduleDayOfWeekMondaySettings tab (Change)The day of a Weekly job.
Aivie:Ideas:ScheduleDayOfMonth1Settings 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.

KeyDefaultWhere to setMeaning
Aivie:Media:FolderNameAivie AI afbeeldingenSettings tabMedia 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:ImageProfileAliasemptySettings tabProfile for image generation. The alias of the Umbraco.AI profile that draws the images. When empty, Aivie uses the default image profile.
Aivie:Media:GenerateSizeautoSettings tabImage size requested from the model. auto takes the widest landscape size the model offers. A fixed size is written as 1792x1024.
Aivie:Media:OutputWidth0Settings tabStored width. The width at which the file is stored. 0 stores the image as the model delivers it.
Aivie:Media:OutputHeight0Settings tabStored 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:MaxStyleSamples6Settings tabImages used to derive the image style. How many images at most go to the model when it derives the image style.
Aivie:Media:DiscardWindowMinutes120Settings tabReplacement window in minutes. For how many minutes after creation a generated image can still be replaced by the chat.
Umbraco:AI:Experimental:ImageGenerationoff; the wizard sets trueSetup wizard, or appsettings onlyImage 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.

KeyDefaultWhere to setMeaning
Aivie:Keywords:AgentAliasaivie-keywordsSettings tabAgent for keywords. The alias of the agent that comes up with the keywords.
Aivie:Keywords:DefaultCount20Settings tabDefault number. How many keywords are generated when the request does not name a number.
Aivie:Keywords:MaxExistingKeywords0Settings tabExisting 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:IncludeSiteProfilefalseSettings tabInclude 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:LoginnoneSetup wizard, or appsettings onlyYour DataForSeo login. Without a login and password the volume, difficulty and CPC columns stay empty.
Aivie:DataForSeo:PasswordnoneSetup wizard, or appsettings onlyYour DataForSeo password. Secret.
Aivie:DataForSeo:BaseUrlhttps://api.dataforseo.comappsettings onlyThe 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.

KeyDefaultWhere to setMeaning
Aivie:GoogleSearchConsole:SiteUrlnoneSettings tabSite 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:ServiceAccountKeynoneSettings 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:ServiceAccountKeyPathnoneSettings tab, or appsettings onlyPath 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.

KeyDefaultWhere to setMeaning
Aivie:Competitors:Crawl:MaxPages200Settings tabPages per crawl. The most pages one crawl fetches, even when more links are open.
Aivie:Competitors:Crawl:MaxConcurrency2Settings tabConcurrent requests. How many pages are fetched at the same time.
Aivie:Competitors:Crawl:DelayMs500Settings tabWait between requests (ms). The pause in milliseconds before each request.
Aivie:Competitors:Crawl:MaxDepth5Settings tabMaximum depth. How many clicks from the start page the crawl follows. 0 is unlimited.
Aivie:Competitors:Crawl:RespectRobotstrueSettings tabRespect robots.txt. Whether the crawl keeps to the robots.txt of the site.
Aivie:Competitors:CronExpressionempty, which runs 0 2 * * *appsettings onlyWhen the scheduled crawl runs, in UTC. It is ignored when ScheduleFrequency is not Cron. See Scheduled jobs.
Aivie:Competitors:ScheduleFrequencyCronSettings tab (Change)Cron uses CronExpression as it is. Hourly, Daily, Weekly or Monthly derive the expression from the three keys below.
Aivie:Competitors:ScheduleTime02:00:00Settings tab (Change)The time of the crawl in UTC. For Hourly only the minutes count.
Aivie:Competitors:ScheduleDayOfWeekMondaySettings tab (Change)The day of a Weekly crawl.
Aivie:Competitors:ScheduleDayOfMonth1Settings tab (Change)The day of a Monthly crawl. A value above 28 becomes 28.
Aivie:Competitors:Context:EnabledfalseSettings tabPut 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:ContextAliasaivie-datasourcesSettings tabContext alias. The alias of the context, under AI → Contexts, that receives the text. The context must exist already.
Aivie:Competitors:Context:InjectionModeAlwaysSettings tabInjection mode. Always or OnDemand. It only applies to resources that are newly created. With Always the text goes with every request.
Aivie:Competitors:Context:MaxPagesPerDomain25Settings tabPages per datasource. How many of the most recently changed pages per datasource end up in the text.
Aivie:Competitors:Context:MaxCharactersPerPage6000Settings tabCharacters per page. The most characters per page.
Aivie:Competitors:Context:MaxCharactersTotal20000Settings tabTotal 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.

KeyDefaultWhere to setMeaning
Aivie:ChatHistory:EnabledfalseSettings tabKeep chat history. Whether conversations are stored and can be picked up again.
Aivie:ChatHistory:AutoResumeLatestfalseSettings tabResume the latest conversation automatically. Whether the first message in a fresh sidebar continues the latest conversation.
Aivie:ChatHistory:MaxConversationsPerUser5Settings tabConversations per user. How many conversations are kept per user. Older ones are removed as new ones start.
Aivie:ChatHistory:MaxMessagesPerConversation40Settings tabMessages per conversation. How many messages are kept per conversation. The oldest fall off.
Aivie:ChatHistory:MaxMessageLength4000Settings tabMaximum message length. The longest message that is stored, in characters. Longer messages are cut off.
Aivie:ChatHistory:RetentionDays30Settings tabRetention period in days. How many days conversations are kept. 0 turns the age limit off.
Aivie:ChatHistory:MaxRestoredMessages12Settings tabRestored messages. How many messages the model gets back when a conversation is resumed.
Aivie:ChatHistory:ResumeRequestMinutes5Settings tabValidity 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.

KeyDefaultWhere to setMeaning
Aivie:License:Keynoneappsettings onlyA 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:RefreshHours24appsettings onlyHow 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 keyUse instead
GoogleSearchConsole (the whole section)Aivie:GoogleSearchConsole
DataForSeo:BaseUrl, DataForSeo:Login, DataForSeo:PasswordAivie:DataForSeo:BaseUrl, Aivie:DataForSeo:Login, Aivie:DataForSeo:Password
Aivie:Ideas:MediaFolderNameAivie: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:Sitewatcher and AivieSitewatcher
  • Aivie:Competitors:CompetitorPostUrl
  • Aivie:Competitors:ApiKey