MemoryLake
Back to all articles
TutorialSeptember 11, 2026·10 min read

How to Migrate Your Character AI Lorebooks to ChatGPT Without Losing Context (2026)

A Lorebook is the most structured memory most people have ever written. Dozens of entries, each with keywords, each firing only when the conversation reaches it. Then you try to bring that world into ChatGPT and discover the problem is not the writing. It is that you built a store with two columns — always relevant and sometimes relevant — and you are moving into a place that documents only the first one.

Character.AI says this itself, in the clearest sorting rule any vendor has published on the subject: "The rule of thumb: always relevant goes in the Definition, sometimes relevant goes in the Lorebook." That single sentence is the whole migration. Everything below is about what happens to the second half.

What actually transfers

Start with what a Lorebook is, in Character.AI's words: "A Lorebook is a reusable collection of world entries — side characters, locations, rules — that activate when their keywords come up in chat. Link one Lorebook to multiple Characters to keep a shared world consistent." Lorebooks are in beta and creating or editing them requires a c.ai+ subscription.

Every entry has three parts, and one of them does not travel the way people assume:

  • Content is what the Character learns when the entry activates.
  • Keywords are what activate it. Character.AI allows up to 8 per entry.
  • Title is a label. Character.AI is blunt about it: "Titles are just for you and anyone browsing your Lorebook — the Character never sees them."

So if you have been putting meaning in titles — "The Corner Café (abandoned after the fire)" — that parenthetical has never reached the model, and it will not reach ChatGPT either unless you move it into content first. Worth checking before you migrate anything.

The reason Lorebooks exist is a budget problem Character.AI states directly: "Your Character can only hold so much context at once. Details written into the Character Definition take up space in every response, whether they're relevant or not." A Lorebook entry "stays out of the way until one of its keywords comes up in chat, then helps shape the Character's next response."

Now the destination. ChatGPT's documented personalization surfaces are Custom Instructions, the memory summary, and the legacy saved memories system. OpenAI describes what each is for: "For explicit information or instructions, you can add it to your Custom Instructions. For information shared via conversations, ChatGPT can remember relevant details for you." On the legacy system it is explicit about timing — "Unless you delete them, saved memories are always considered in future responses" — and on the current one it warns that the visible list is partial: "While the memory summary should capture the most important details, it will not include everything that ChatGPT remembers based on your chats."

Put those side by side and the transfer becomes concrete.

Transfers cleanly: the content of every entry, your Character Definition's core identity material, anything you would call always-relevant, and the structure of your world as prose.

Transfers with a change in behaviour: every keyword-gated entry. In Character.AI it waits for a trigger word. In ChatGPT's documented surfaces it is either always in play or selected by the model from past chats. The text survives; the gate does not.

Does not transfer as a mechanism: the keyword list itself, the up-to-8 limit, Full Details versus Hint Only entry visibility, the draft-versus-published state, and the {{char}} and {{user}} placeholders that Character.AI substitutes at chat time with the linked Character and the current Persona. Those are features of Character.AI's engine, not portable content. Pinned Memories do not travel either — they are capped at five messages per chat and live inside that chat.

This is the same shape as the persona problem covered in why Character AI forgets your persona, just one level up: the world, not the character. The relationship history that accumulates inside a single chat has its own failure mode, covered in when Character AI forgets your relationship history, and it is worth reading before you assume an export will carry it.

The manual migration

Step 1: Get your material out, and sort it by the rule Character.AI gave you

Character.AI documents the export path. On web: go to your Profile, open Profile Settings, go to Account, then Manage Account & Data, and select Export data. On the mobile app: open your Profile, find the settings icon, and select Export my data. The help article documents these steps; it does not describe the contents of the resulting file, so plan to open it and look rather than assuming what is inside.

For Lorebooks specifically you have a second and more reliable route, because Character.AI's importer defines the formats it reads — which means you already know the shape your entries are stored in. Plain text uses Lorebook Name: and Lorebook Description: once at the top, then repeating blocks of Entry Title:, Keywords: and Content:. The JSON form nests entries under an entries object where, per Character.AI, "comment becomes the entry's title, key becomes its keywords, and content becomes its content."

Then do the sort. Take every entry and put it in one of two piles using Character.AI's own test — always relevant, or sometimes relevant. Core identity, voice, motivation, the rules of your world that are true in every scene: always. A side character who appears in one arc, a location that matters in three conversations, a faction with a grudge: sometimes.

Most people find the piles are wildly uneven, and that the "sometimes" pile is where all the good writing went.

Step 2: Rebuild the always pile, and give the sometimes pile a gate you control

The always pile goes into Custom Instructions, which OpenAI describes as the place for explicit information and instructions. Keep it tight: this is the material you are choosing to pay for in every response, which is exactly the trade-off Character.AI warned about with Character Definitions.

The sometimes pile is the real work. You have three honest options inside ChatGPT, and it is worth knowing the limits of each before you pick.

You can promote entries into the always pile. Simple, and it spends context on a faction nobody has mentioned in two weeks.

You can put them in a Project and let the project boundary act as the scope. OpenAI documents how that boundary behaves: with project-only memory, "chats can reference other conversations in the same project, but they cannot reference conversations outside the project, and chats outside the project cannot reference conversations in it." That is a scope, not a keyword trigger — useful if your world splits cleanly by arc, useless if entries cut across.

You can paste the relevant entries at the start of a scene. This works, and it is the thing you were trying to stop doing when you built a Lorebook in the first place.

None of those is a keyword gate. That is not a gap in ChatGPT so much as a difference in what the two products are for, and it is the reason a straight copy-paste migration feels worse than the original even when every word arrived.

The Better Way: Keep the conditional half of your world where a keyword isn't the only way in

The part of a Lorebook worth preserving is not the trigger mechanism. It is the judgment encoded in it — that this detail matters here and not everywhere. Keep that judgment in a layer your assistant reads from, and the gate becomes something you can restate anywhere rather than a feature you lose on exit.

That layer is what MemoryLake is for. You write the entries into it yourself, in your own words, with their scope and the reason each one exists — one addressable place that any assistant can read. The entries stop being trapped in one vendor's activation engine, and the sorting work you did survives the move.

Step 1: Create an API key

Sign in, open your workspace settings, and generate an API key. This is the credential your assistants use to read the same set of entries, so create it once and keep it where you can reach it from every tool you write with.

The MemoryLake console showing the API keys screen, where a new key is created and copied for use in an agent
The MemoryLake console showing the API keys screen, where a new key is created and copied for use in an agent

Step 2: Upload your first memories

Bring the sorted piles across, and keep the structure Character.AI taught you. One entry per subject. The content, not the label. A short note on when it applies — the human version of the keywords you are leaving behind. Start with the entries you have re-explained more than once; they are the ones already earning their keep.

The MemoryLake workspace with the first documents uploaded, listing each file as it becomes searchable memory
The MemoryLake workspace with the first documents uploaded, listing each file as it becomes searchable memory

Step 3: Connect your AI & agents

Connect ChatGPT, and anything else you write in. The same world arrives in each, and a scene that needs the tavern's history gets it without you rebuilding the tavern from memory.

The MemoryLake integrations screen listing the AI clients and agent frameworks that can be connected to the memory layer
The MemoryLake integrations screen listing the AI clients and agent frameworks that can be connected to the memory layer

What this changes in practice

The first difference is that your world stops being a subscription feature. Lorebooks are in beta and gated to c.ai+; the entries you wrote are yours either way, and once the reasoning lives outside the tool, a change to the tool's tiers is an inconvenience rather than a loss.

The second is that the "sometimes relevant" pile stops decaying. In a keyword system, an entry with a badly chosen keyword is invisible and silent about it — Character.AI says so plainly: "A keyword nobody types never fires at all." When the condition is written as a sentence a person can read, you can audit it. Auditing what your AI remembers is the same discipline applied to a memory store.

The third shows up when you write across tools. A world held in one place reads the same in ChatGPT and in whatever you use next, which is the difference between a library and a save file. Readers who hit this with worldbuilding in another platform will recognise the pattern from when Janitor AI forgets your worldbuilding.

Best practices for moving a structured world

Migrate content, not titles. Character.AI's titles never reached the model. If a title carries meaning, move that meaning into content before you export anything.

Keep the two-column sort forever. It is a genuinely good idea and it is not Character.AI-specific. Knowing which details are always true and which are situational is what keeps any memory store from bloating.

Write the condition as prose. "Applies when the conversation is set in the harbour district" survives a platform change. A keyword list does not.

Check entries that arrived without keywords. Character.AI notes that some tools allow always-on entries with no keywords, and that in its system "entries activate by keywords only." Those entries are the ones most likely to be silently doing nothing right now, and they belong in your always pile.

Expect the destination's list to be incomplete. OpenAI says the memory summary will not include everything ChatGPT remembers, and that if you want to know whether something was retained, you should ask in chat. Treat the visible list as a summary, not an inventory. ChatGPT's memory limitations covers the practical consequences.

Don't rebuild the whole world on day one. Move the entries that are load-bearing in the scenes you actually write. The rest can follow as they come up, and many will turn out not to be needed.

Conclusion

Character.AI built something unusually honest: a memory system that distinguishes between what is always true and what is only sometimes relevant, and told you exactly how to sort your own material. The migration hurts because the destination's documented surfaces are built around the always column — saved memories that are, in OpenAI's words, always considered, and a summary the model maintains on its own.

So carry the sort, not the switch. The keyword was never the valuable part. The decision about when a detail matters was, and that decision is portable the moment you write it down somewhere your assistant can read.

A different take on moving out of Character.AI, focused on chats and personas rather than Lorebooks, is in our guide on migrating Character AI to ChatGPT.

Frequently asked questions

Can I export my Lorebooks directly from Character.AI?

Character.AI documents a general data export — Profile Settings, then Account, then Manage Account & Data, then Export data on web, or Export my data in the mobile app. Its help article covers the steps rather than the file's contents, so open the export and check what is in it. Separately, the import documentation defines the plain-text and JSON shapes Character.AI reads, which tells you how entries are structured.

Does ChatGPT support keyword-activated memories?

OpenAI's documented personalization surfaces are Custom Instructions, the memory summary, and legacy saved memories. It describes saved memories as always considered in future responses unless deleted, and the memory summary as a continually updated synthesis of context from past chats. Its documentation does not describe a keyword-trigger mechanism equivalent to Lorebook activation.

What happens to my keywords?

They do not carry over as a mechanism. The useful move is to rewrite each keyword list as a one-line condition in plain language, which any assistant can act on and which survives your next platform change.

Will my Character Definition transfer?

The content will. Character.AI positions the Definition as the always-relevant material — core identity, motivation, voice — which maps closely onto what OpenAI suggests putting in Custom Instructions. Keep it short, since it is in play on every response in both products.

Do Pinned Memories come with me?

No. Pinned Memories are a per-chat feature capped at five pinned messages in each chat, so they are tied to the conversation rather than to your world. If a pinned message contains a durable fact, move that fact into your entries before you leave.

Can I bring a Lorebook I built in another tool into Character.AI instead?

Yes, with losses Character.AI lists openly. It accepts plain text or JSON up to 10 MB, processed locally on your device, and says that "anything outside our simpler format is left out during import." It specifically calls out entries with no keywords, entries with more than the eight keywords it allows, pattern-based keywords and other special matching rules, and ordering or position settings.