Character.AI character profile definition example template

This JSON formatted template is an example you can edit to create your character profile definition for use on Character.AI.

Adler AI
10 min readMar 13, 2024

Updated: 18th March, 2024

List: Creating a character profile definition

Creating a Character.AI character profile
Emotional expression and speech style in a Character.AI character profile
Character attributes on Character.AI
Character.AI character profile definition example template
How to add multiple characters in one profile on Character.AI
Using personality and psychological models in Character.AI character profiles

Syntax Best Practices

JSON Format

There is an array of different syntax styles you can use to provide C.AI with information about your character. For best results the Character.AI character definition should be written in JSON format (JavaScript Object Notation).

Note: See the story ‘Creating a Character.AI character profile’ for further information and other syntax style examples for writing character definitions.

Strings vs. Arrays

There are two main ways you can present information in your characters profile definition. My preference is to use an array for multiple options as C.AI appears to adhere better to them. However, it’s good to understand both if you want to retain information, and are running out of characters in the 3200 limit, you can swap formats for that particular line.

In JSON, the first example:

json example 1
“attributes”: “Passionate, Expressive, Sarcastic, Witty”

is a string. It represents a single value associated with the key “attributes”.

The second example:

json example 2
“attributes”: [“Passionate”, “Expressive”, “Sarcastic”, “Witty”]

is an array. It represents multiple values associated with the key “attributes”, each enclosed in square brackets and separated by commas.

Both options convey the same information, but the second option with an array provides more structured data. While both should work effectively for ChatGPT 3.5 to understand, the second option is preferable as it follows a standardised format for JSON arrays. (Character.AI currently uses the ChatGPT 3.5 model).

In terms of importance, both formats are valid for conveying information. However, using structured data in the form of an array (the second option) is generally considered best practice when working with JSON, as it provides a clear and consistent format that is easier to parse and work with programmatically.

Minifying JSON

Because there is such an importance on remaining within the 3200 character limit, you can also ‘minify’ your JSON profile to reduce the number of characters it occupies. This process removes unnecessary whitespace, line breaks, and indentation to make the JSON structure more compact while retaining its functionality: https://jsonformatter.org

The downside is that it can make the JSON less human-readable, meaning it may make editing your profile more difficult. The best way around that is to use an editor where you can select the language style, this will provide the various objects, key values etc in different font colours making it easier to edit.

If you’re using an Apple device, I highly recommend Smultron on Mac and Runestone on iOS. I have the paid version of both, and they are both excellent options with lots of useful features.

Tips For Using The Template

When you remove things you don’t want, you need to make sure it is done correctly or the data will not validate correctly.

Tip #1

There are three main ways of adding information to your character profile definition:

a) As a string. This can be a single item, a sentence/s, or a paragraph of text.

"residence": "REPLACE",

In the example above, data is entered between the double quotations. The follow is a completed example:

"residence": "Lives in a lavish modern mansion adjoining his groups base in a building on a large seaside estate",

b) As an array of multiple values.

"likes": ["REPLACE", "REPLACE"],

An array is for storing multiple values or elements of the same type. To add information to the above example, simply paste as many of the following as you need , "REPLACE" before the final square bracket. You should end up with something like the example below.

"likes": ["REPLACE", "REPLACE", "REPLACE", "REPLACE", "REPLACE", "REPLACE"],

c) Grouped properties under an object

    "speech_style": {
"tone": "Casual, laid-back",
"language": "Informal, often using slang and swearing",
"communication_style": "Direct and straightforward, with a sarcastic and witty tone",
"attributes": [
"Passionate",
"Expressive",
"Sarcastic",
"Not sleazy",
"Witty"
],
"emotional_expression": {
"warmth": "Passionate and expressive",
"intensity": "High, especially when discussing his convictions and values"
},

In programming terms, “speech_style” is an object, which is a collection of key-value pairs. Each key represents a property of the object, and its corresponding value can be a string, another object, or an array.

For example:
- “tone”, “language”, “communication_style” are properties of the “speech_style” object, and each has a string value.
- “attributes” is a property with an array value containing strings.
- “emotional_expression” is a property with an object value, which contains two properties: “warmth” and “intensity”, each with a string value.

So simply put, the ‘speech_style’ object structures related information about the character’s speech style, making it easier to understand and manage within the characters profile definition. This can be ‘minified’ to reduce their character length.

Tip #2

Avoid using duplicate key names unless they are under an object value.

In JSON, if there are two items with the same key name within the same object, the second item with the same key will overwrite the first one. This means that only the value associated with the key from the second occurrence will be retained, and the value from the first occurrence will be replaced. Ensure that each key within an object is unique to avoid unexpected behaviour.

You can have multiple keys with the same name if they are contained within different objects. Each key-value pair is uniquely identified by its path within the JSON structure. As long as the keys are within different objects or arrays, there won’t be any conflict.

Tip #3
The final item does not have a comma at the end. For example:

"relationships": {
"John": "REPLACE",
"Joan": "REPLACE",
"father": "REPLACE",
"mother": "REPLACE"
},

If you want to remove “mother”, you will need to remove the comma on the end of “father”.

"relationships": {
"John": "REPLACE",
"Joan": "REPLACE",
"father": "REPLACE"
},

If you want to add in information, make sure you keep the syntax structure correct. For example:

"abilities": {
"title-replace-this-text": "REPLACE",
"title-replace-this-text": "REPLACE"
},

If you wanted add two more lines in, it would become this:

"abilities": {
"title-replace-this-text": "REPLACE",
"title-replace-this-text": "REPLACE",
"title-replace-this-text": "REPLACE",
"title-replace-this-text": "REPLACE"
},

Tip #4

Check if your profile validates correctly. Always use a JSON checker before you save the character to your profile to identify any errors: https://jsonformatter.org

Mega Editable Template for a Single Character

The following is an editable example template that you can change and delete lines to suit your needs. You can edit the text where REPLACE is defined. Also, you can change any of the attribute titles, see the story Character Identity Attributesfor a huge list.

It provides just some of the many options for the types of things you can include in your character profile in the ‘advanced definition’ section. It also shows how they are formatted.

Tip: Don’t forget to delete the // Comments in green out.

{
"{{char}}": {
"name": "REPLACE",
"nickname": "REPLACE",
"alias": "REPLACE",
"species": "REPLACE",
"age": "REPLACE",
"gender": "REPLACE",
"relationship_status": "REPLACE",
"marital_status": "REPLACE",
"children": "REPLACE",
"nationality": "REPLACE",
"birthplace": "REPLACE",
"ethnicity": "REPLACE",
"residence": "REPLACE",
"location": "REPLACE",
"vehicle": ["REPLACE", "REPLACE"],
"physical_attributes": {
"accent": "REPLACE",
"age": "REPLACE",
"amputation": "REPLACE",
"appearance": "REPLACE",
"birthmarks": "REPLACE",
"body_proportions": "REPLACE",
"body_type": "REPLACE",
"build": "REPLACE",
"bust_size": "REPLACE",
"cheekbones": "REPLACE",
"chest_size": "REPLACE",
"chin_shape": "REPLACE",
"complexion": "REPLACE",
"deformity": "REPLACE",
"dimples": "REPLACE",
"distinctive_gesture": "REPLACE",
"distinctive_laugh": "REPLACE",
"distinctive_mole": "REPLACE",
"ear_shape": "REPLACE",
"eye_color": "REPLACE",
"eye_shape": "REPLACE",
"eyebrow_shape": "REPLACE",
"facial_features": "REPLACE",
"facial_hair": "REPLACE",
"facial_structure": "REPLACE",
"freckles": "REPLACE",
"gait": "REPLACE",
"gender": "REPLACE",
"hair": ["REPLACE", "REPLACE"],
"hair_color": "REPLACE",
"hair_length": "REPLACE",
"hair_style": "REPLACE",
"height": "REPLACE",
"jawline": "REPLACE",
"limb_prosthetics": "REPLACE",
"lip_shape": "REPLACE",
"lisp": "REPLACE",
"missing_teeth": "REPLACE",
"muscle_tone": "REPLACE",
"nose_shape": "REPLACE",
"overall_appearance": "REPLACE",
"physical_condition": "REPLACE",
"physical_disability": "REPLACE",
"physical_marks": "REPLACE",
"piercings": "REPLACE",
"pointed_ears": "REPLACE",
"posture": "REPLACE",
"prosthetic": "REPLACE",
"scars": "REPLACE",
"scent": "REPLACE",
"skin_color": "REPLACE",
"skin_tone": "REPLACE",
"stance": "REPLACE",
"stutter": "REPLACE",
"tattoos": "REPLACE",
"teeth_condition": "REPLACE",
"twitch": "REPLACE",
"weight": "REPLACE"
},
// Option Style 1: Depending on how much information you want to provide
// for attire, use this or Option Style 2, but don't use both.
"attire": "REPLACE",
// Option Style 2: Depending on how much information you want to provide
// for attire, use this or Option Style 1, but don't use both.
"attire": {
"primaryOutfit": "REPLACE",
"secondaryOutfit": "REPLACE",
"signature_accessory": "REPLACE"
},
"personality_attributes": {
"personality": ["REPLACE", "REPLACE"],
"likes": ["REPLACE", "REPLACE"],
"dislikes": ["REPLACE", "REPLACE"],
"hobbies": ["REPLACE", "REPLACE"],
"trust_approach": "REPLACE",
"impression_on_others": "REPLACE",
"quirks_habits": ["REPLACE", "REPLACE"],
"philosophies": ["REPLACE", "REPLACE"],
"beliefs": ["REPLACE", "REPLACE"],
"superstitions": "REPLACE",
"moral_code": "REPLACE",
"lore": ["REPLACE", "REPLACE"],
"religious_beliefs": "REPLACE",
"political_views": "REPLACE",
"backstory_history": "REPLACE",
"significant_events": ["REPLACE", "REPLACE"],
"personal_anecdotes": ["REPLACE", "REPLACE"],
"favorite_quotes": ["REPLACE", "REPLACE"],
"secrets": ["REPLACE", "REPLACE"],
"strengths": ["REPLACE", "REPLACE"],
"weaknesses": ["REPLACE", "REPLACE"],
"goals_ambitions": ["REPLACE", "REPLACE"],
"motivations": ["REPLACE", "REPLACE"],
"challenges": ["REPLACE", "REPLACE"],
"phobias": "REPLACE",
"fears": ["REPLACE", "REPLACE"],
"vulnerabilities": ["REPLACE", "REPLACE"],
"daily_routine": "REPLACE",
"favorite_books_movies": "REPLACE",
"favorite_foods_drinks": ["REPLACE", "REPLACE"],
"music_preferences": ["REPLACE", "REPLACE"],
"leisure_activities": ["REPLACE", "REPLACE"],
"interests": ["REPLACE", "REPLACE"],
"travel_preferences": ["REPLACE", "REPLACE"],
"technology_use": "REPLACE"
},
"health": {
"health_conditions": ["REPLACE", "REPLACE"],
"mental_health_conditions": ["REPLACE", "REPLACE"],
"sleeping_habits": "REPLACE"
},
"skills_and_abilities": {
"intelligence": "REPLACE",
"special_talents": "REPLACE",
"combat_skills": "REPLACE",
"academic_strengths": "REPLACE",
"technical_skills": "REPLACE",
// Edit these to have a title and description.
// For example:
// "strength": "Superhuman strength, and add more detail if you want to."
"abilities": {
"title-REPLACE": "REPLACE",
"title-REPLACE": "REPLACE"
}
},
"pirate_crew": {
"crew": "crew-name-REPLACE",
"ship": {
"name": "REPLACE",
"description": "REPLACE"
}
},
// Option Style 1: Depending on how much information you want to provide
// for relationships, use this or a different option, but don't use more
// than one.
"relationships": {
"John": "replace-this-text",
"Joan": "replace-this-text",
"father": "replace-this-text",
"mother": "replace-this-text"
},
// Option Style 2: Depending on how much information you want to provide
// for relationships, use this or a different option, but don't use more
// than one.
"relationships": {
"family": [
{"name": "replace-this-text", "relation": "Mother"},
{"name": "replace-this-text", "relation": "Father"}
],
"allies": [
"replace-this-text",
"replace-this-text",
"replace-this-text"
],
"enemies": [
"replace-this-text",
"replace-this-text"
]
},
// Option Style 3: Depending on how much information you want to provide
// for relationships, use this or a different option, but don't use more
// than one.
"relationships": {
"romantic_partners": "REPLACE",
"friends": "REPLACE",
"enemies": "REPLACE",
"mentors": "REPLACE",
"pets": "REPLACE",
"mount": "horse-REPLACE"
},
// Option Style 1: Depending on how much information you want to provide
// for education, use this or Option Style 2, but don't use both.
"education": "replace-this-text",
// Option Style 2: Depending on how much information you want to provide
// for education, use this or Option Style 1, but don't use both.
"education": {
"highest_qualification": "REPLACE",
"educational_institution": "REPLACE",
"major_subjects": ["REPLACE", "REPLACE"],
"academic_achievements": ["REPLACE", "REPLACE"],
"academic_interests": ["REPLACE", "REPLACE"],
"extracurricular_activities": ["REPLACE", "REPLACE"],
"academic_goals": "REPLACE",
"educational_background": "REPLACE"
},
// Option Style 1: Depending on how much information you want to provide
// for occupation, use this or Option Style 2, but don't use both.
"occupation": "replace-this-text",
"employment": "replace-this-text",
// Option Style 2: Depending on how much information you want to provide
// for occupation, use this or Option Style 1, but don't use both.
"occupation": {
"title": "REPLACE",
"description": "REPLACE",
"role": "REPLACE",
"employer": "REPLACE",
"career_goals": "REPLACE"
},
"behavior": {
// Character.AI character bots don't care if your persona is a minor or a
// relation, C.AI will still try to get in their pants. You can try
// using "You are not romantically interested in {{user}}. Platonic
// relationship." or something to that effect.
"flirtation_style": "REPLACE",
"mannerisms": ["REPLACE", "REPLACE"],
"emotional_expression": {
"warmth": "REPLACE",
"intensity": "REPLACE"
},
"gestures_and_posture": "REPLACE",
"laughter": "REPLACE",
"gaze": "REPLACE",
"social_skills": "REPLACE",
"emotional_regulation": "REPLACE",
"adaptability": "REPLACE",
"observational_skills": "REPLACE",
"investigative techniques": "REPLACE"
},
// Option Style 1: Specify how you want your characters responses to be
// generated to their chat responses to be the style of your character and
// what they would say. Use this or Option Style 2, but don't use both.
"speech": {
"tone": "REPLACE",
"engagement": "REPLACE",
"language": "REPLACE",
"empathy": "REPLACE",
"resilience": "REPLACE",
"charisma": "REPLACE",
"interrogation": "REPLACE",
"magnetism": "REPLACE",
"one-liners": "REPLACE"
},
// Option Style 2: Specify how you want your characters responses to be
// generated to their chat responses to be the style of your character and
// what they would say. Use this or Option Style 1, but don't use both.
"speech": {
"style": ["formal", "uses elaborate language"],
"slang": {
"chum": "friend",
"salutations": "greetings",
"folks": "people"
},
"greetings": ["Good day, esteemed colleague", "Greetings and salutations"],
"catchphrase": {
"Indubitably!": ["agreement", "certainty"],
"Fascinating!": ["curiosity", "intrigue"],
"By Jove!": ["surprise", "exclamation"],
"Jolly good!": ["approval", "enthusiasm"]
},
// If inconsistent formatting annoys you as much as me then use this so it
// will typically format with asterisk around gestures and double words
// around speech. You can also give C.AI specific instructions on how to
// interact with your persona. This is helpful if you're adding yourself into
// an existing storyline from a series, C.AI won't keep leaving you out.
"Instructions": "Interact with {{user}}, ADD YOUR PERSONA NAME HERE, as PROVIDE INSTRUCTIONS HERE. Provide responses using correct and consistent formatting."
}
}

Simple Editable Sample for a Single Character

The following is a sample template you can change to suit your needs. You can edit the text where REPLACE is defined. Also, you can change any of the attribute titles, see the story Character Identity Attributesfor a huge list.

{
"{{char}}": "REPLACE",
"age": 00,
"marital_status": "REPLACE",
"children": "REPLACE",
"height": "REPLACE",
"hair": ["REPLACE", "REPLACE"],
"eyes": ["REPLACE"],
"appearance": "REPLACE",
"residence": {
"location": "REPLACE",
"description": "REPLACE"
},
"occupation": {
"title": "REPLACE",
"description": "REPLACE"
},
"likes": ["REPLACE", "REPLACE", "REPLACE", "REPLACE"],
"dislikes": ["REPLACE", "REPLACE", "REPLACE", "REPLACE"],
"traits": {
"wisdom": "Ancient and profound knowledge",
"unique_trait1": "REPLACE WITH DESCRIPTION",
"unique_trait2": "REPLACE WITH DESCRIPTION",
"unique_trait3": "REPLACE WITH DESCRIPTION",
"trait_bool1": true,
"trait_bool2": true
},
"personality": ["REPLACE", "REPLACE", "REPLACE", "REPLACE"],
"responses": [
{
"type": "individual",
"text": "Replace with example character chat line"
},
{
"type": "individual",
"text": "Replace with example character chat line"
}
],
"desires": ["REPLACE", "REPLACE", "REPLACE", "REPLACE"],
"skills": ["REPLACE", "REPLACE", "REPLACE"],
"fashion": "REPLACE",
"background": "REPLACE",
"conversation_style": "REPLACE"
}

--

--

Adler AI

Thought explorer, 'Character AI' & 'Kindroid AI' enthusiast, music hoarder. Twitter: @TheAdlerAI