Get up and running with Memspan in minutes
This guide will help you extract your identity, memories, and conversations from ChatGPT and load them into Claude Code sessions.
- Overview
- Data Types from Other LLMs
- Extracting Data
- Using cc-memspan
- Using the Makefile
- Creating Aliases
Memspan is a file-system based memory archive that helps you maintain continuity across AI assistant sessions. It solves a fundamental problem: LLMs don't remember across sessions, and platform-specific memory features (like ChatGPT's memory) don't transfer to other tools.
Memspan uses a three-tier memory model:
-
Core Identity (~2-4KB): Always-available personal context
- Who you are, your preferences, communication style
- Stored in
claude-memory/memory/identity/core-identity.json
-
Project/Framework Memory (~10-50KB per domain): Session-selectable deep context
- Project-specific context, decisions, conversation history
- Stored in
claude-memory/memory/projects/<project-name>/
-
Historical Archive: Indexed, retrieved on-demand
- Full conversation history, indexed for search
- Stored in
claude-memory/memory/chatgpt/and project directories
ChatGPT (Web Interface)
↓ Extract
Identity, Memories, Conversations
↓ Organize
Memspan Memory Files
↓ Load
Claude Code Sessions
- File-based: No databases, just files you control
- Portable: Works across different LLM tools
- Selective: Load only what you need per session
- Opt-in: You choose what context to load
Memspan currently supports extracting three types of data from OpenAI ChatGPT:
What it is: A comprehensive personal profile including:
- Personal information (name, location, career)
- Personality traits and cognitive styles
- Communication preferences
- Technology stack and tools
- Professional context
- Goals and motivations
- Values and philosophy
- And much more (18 major sections total)
Source: ChatGPT's internal memory and conversation history
Format: Structured JSON with deeply nested sections
Size: Full archive can be large; condensed version ~2-4KB
What it is: Saved facts and preferences that ChatGPT remembers about you:
- Biographical facts
- Preferences (coding style, communication, tools)
- Important relationships
- Recurring themes and patterns
Source: ChatGPT Settings → Memory (web interface only)
Format: Markdown or structured JSON
Size: Varies based on how many memories you've saved
Note: The OpenAI API does not support memory features—this is only available through the web interface.
What it is:
- Conversations: Full chat history with messages
- Projects: ChatGPT Projects (organized conversation groups) with metadata
Source:
- ChatGPT Data Export (conversations)
- ChatGPT API (project metadata—not included in standard export)
Format: JSON with conversation trees and project mappings
Size: Can be very large (thousands of conversations)
Note: The standard ChatGPT export doesn't include project metadata—you need separate tools to correlate conversations with projects.
This section covers how to extract each type of data and where it gets saved in Memspan.
Identity extraction is a manual process using a specialized prompt in ChatGPT's web interface.
- No API Support: The OpenAI API doesn't support memory features like the web interface
- User Control: You decide when and how to extract your identity
- Quality Review: You can review and refine the output before saving
-
Enable ChatGPT Memory:
- Log in to ChatGPT (chat.openai.com)
- Go to Settings → Personalization & Memory
- Ensure memory is enabled
-
Run the Identity Prompt:
- Open a new ChatGPT conversation
- Copy the entire prompt from
identity-archive/identity-archive-prompt.md - Paste it into ChatGPT and send
-
Review the Output:
- ChatGPT will generate a comprehensive JSON profile
- Review it for accuracy (hallucinations are possible)
- The output includes 18 major sections with rich details
- Tip: Compare with
core-identity-example.jsonto see the expected structure
-
Save to Memspan:
# Copy the JSON output and save it to: ./claude-memory/memory/identity/core-identity.json
The identity JSON includes:
personal_info- Name, location, career, companies, life eventspersonality_traits- Cognitive style, creativity, leadership, ambitioncommunication_style- Tone, collaboration preferencestechnology_and_tools- Programming languages, frameworks, projectsprofession_and_work- Career trajectory, work philosophygoals_and_motivations- Short-term and long-term goalsfitness_and_health- Health metrics, training strategiesinterests_and_learning- Intellectual pursuits, learning methodsvalues_and_philosophy- Privacy views, economic beliefs, ethicsemotional_and_cognitive_patterns- Stress response, thinking stylesrelationships_and_social_dynamics- Team roles, collaboration beliefslegacy_and_identity- Long-term vision, desired impactmemories_and_stories- Personal stories with emotional contextdaily_routines_and_habits- Morning/evening rituals, productivity practicestools_and_systems_used- Productivity tools, development environmentsenvironmental_preferences- Work settings, workspace setupself_reflection_and_growth- Introspection approaches, growth systemspersonality_type_assessments- MBTI, Big Five, CliftonStrengths
The quality depends on:
- Interaction History: More conversations = richer profile
- Memory Enablement: Memory must be enabled and active
- Conversation Depth: Detailed conversations lead to comprehensive profiles
Important: Always review the output for accuracy—hallucinations are possible.
claude-memory/
└── memory/
└── identity/
├── core-identity.json ← Save your identity here
└── core-identity-example.json ← Example structure (fake data)
Example File: See claude-memory/memory/identity/core-identity-example.json for a complete example of the expected JSON structure with placeholder data. This can help you understand the format and depth of information to include.
Memories are saved facts and preferences that ChatGPT remembers about you. The extraction process is simple: cut & paste from ChatGPT, then optionally structure them.
-
Copy from ChatGPT:
- Log in to ChatGPT (chat.openai.com)
- Go to Settings → Personalization & Memory
- View your saved memories
- Copy all the text and paste it into
export-chatgpt-memories/memories.md
-
Add Additional Memories (Optional):
- You can also manually add any additional memories you want to include
- Just add them to the same
memories.mdfile
-
Structure the Memories (Optional):
- The
export_prompt.mdadds structure and metadata to your raw memories - Copy the prompt from
export-chatgpt-memories/export_prompt.md - Paste your
memories.mdcontent into ChatGPT/Claude - Save the structured output
- The
-
Save to Memspan:
# Save the structured export to: ./claude-memory/memory/chatgpt/memories_export.md
Raw memories (memories.md):
- Simple text format
- One memory per line or paragraph
- Can be used directly as context
Structured memories (memories_export.md):
- Organized with IDs and summaries
- Includes topics, entities, and dates
- Better organized for loading as context
See export-chatgpt-memories/memories-example.md for an example of what raw memories look like when copied from ChatGPT.
claude-memory/
└── memory/
└── chatgpt/
└── memories_export.md ← Save structured memories here
Note: The OpenAI API does not support memory features—this is only available through the ChatGPT web interface.
This process exports your ChatGPT conversations and optionally correlates them with Projects (if you use ChatGPT Projects). The process has two parts:
- Export conversations from ChatGPT (manual download)
- Extract project metadata from Chrome DevTools (if you use Projects)
- Correlate conversations with projects
ChatGPT allows you to export all your data as a zip file:
- Log in to ChatGPT (chat.openai.com)
- Go to Settings → Data Controls → Export Data
- Click Request Data Export or similar button
- You'll receive an email with a download link (may take a few minutes)
- Download and extract the zip file
Important: The zip file contains conversations.json - this is your complete conversation history. Extract this file and save it as conversations.json in your working directory.
Note: The official export does not include project metadata. If you use ChatGPT Projects, you'll need Step 2 to correlate conversations with projects.
If you use ChatGPT Projects, you need to extract project metadata separately because it's not included in the official export. This uses Chrome DevTools to capture an API call.
Detailed Chrome DevTools Steps:
-
Open ChatGPT in Chrome:
- Log in to chat.openai.com
- Make sure you're on the main chat interface
-
Open Chrome DevTools:
- Press
F12orCmd+Option+I(Mac) /Ctrl+Shift+I(Windows/Linux) - Or right-click the page → Inspect
- Press
-
Open the Network Tab:
- Click the Network tab in DevTools
- Make sure the network log is recording (red circle should be active, or click the record button)
-
Trigger the Projects API Call:
- Click on Projects in the ChatGPT sidebar (or refresh the page)
- This will generate network requests
-
Find the Projects Request:
- In the Network tab, look for a request to
/backend-api/gizmos/snorlax/sidebar - You can filter by typing "gizmos" or "snorlax" in the filter box
- The request should be a
GETrequest
- In the Network tab, look for a request to
-
Copy as cURL:
- Right-click on the
/gizmos/snorlax/sidebarrequest - Select Copy → Copy as cURL (or Copy → Copy as cURL (bash))
- This copies the full cURL command with all headers and authentication
- Right-click on the
-
Save the cURL Command:
- Paste the copied cURL command into a file:
export-chatgpt-conversations/curl.txt - Or save it anywhere and reference it with
--curl-file
- Paste the copied cURL command into a file:
What This Does:
- The cURL command contains your authentication cookies and headers
- The script replays this API call to get your projects list
- This is the same API call ChatGPT uses to populate the Projects sidebar
Extract Projects Metadata:
cd export-chatgpt-conversations
python3 chatgpt_projects_dump.py --curl-file curl.txtThis creates:
projects.json- Cleaned project metadataprojects_raw.json- Full API responses (for debugging)
Correlate Conversations with Projects:
# Make sure conversations.json is in the same directory or specify the path
python3 chatgpt_project_conversations.py exportThis correlates conversations with projects using the gizmo_id field and creates:
- Project-to-conversation mappings
- Categorized exports (project conversations, regular conversations, orphaned projects)
Common Commands:
# List all projects
python3 chatgpt_project_conversations.py list-projects
# Export all with full message content (warning: large files)
python3 chatgpt_project_conversations.py export --with-messages
# Export a specific project
python3 chatgpt_project_conversations.py export-project "Project Name"- Project conversations: Conversations linked to active projects
- Regular conversations: Standard ChatGPT chats without projects
- Orphaned conversations: Conversations from deleted projects
- Project metadata: Names, creation dates, memory settings
Note: The export scripts create conversations.json files, but you'll need to:
- Copy exported project conversations to
memory/projects/<project>/conversations.jsonif you want to use--project - Manually create
context.mdin each project directory (see project context section below)
export-chatgpt-conversations/
├── conversations.json ← From ChatGPT data export (.zip file)
├── projects.json ← Generated from API call (save to memory/projects/)
└── project_conversations.json ← Generated correlation output
Important: After generating projects.json, save it to claude-memory/memory/projects/projects.json to enable the lightweight --projects-index option in cc-memspan.
Note: If you don't use ChatGPT Projects, you can skip Step 2 and just use conversations.json directly. The correlation script will still work and categorize your conversations.
The cc-memspan script is a wrapper that loads your identity, memories, and project context into Claude Code sessions. It works from any directory and uses absolute paths. This is part of the memspan project for portable, file-based memory.
Ensure the claude CLI is installed and on your PATH:
# Check if claude is available
which claude
# If not installed, install it (see Claude Code documentation)# From any directory, use the full path:
bash ~/path/to/memspan/claude-memory/bin/cc-memspan [options]| Option | Description |
|---|---|
--identity |
Load identity from memory/identity/core-identity.json (or .md) |
--memories |
Load ChatGPT memories from memory/chatgpt/memories_export.md |
--project NAME |
Load project bundle (context.md, conversations.json) |
--projects-index |
Load global projects list from memory/projects/projects.json |
--full NAME |
Shorthand: --identity --memories --project NAME |
--use-current |
Use project from memory/current-project file |
--dry-run |
Print the command without running |
-h, --help |
Show help message |
bash claude-memory/bin/cc-memspan --identity --memoriesRecommended for most sessions. Loads your core identity and saved ChatGPT memories. This is the essential context without project overhead.
bash claude-memory/bin/cc-memspan --identity --memories --projects-indexOr using the Makefile:
make memspan-projects-indexAdds project awareness by loading projects.json (generated by export-chatgpt-conversations). Claude knows about your projects (names, metadata) but without full conversation history—much lower token usage.
Note: This requires projects.json to be saved to claude-memory/memory/projects/projects.json from your conversation export.
bash claude-memory/bin/cc-memspan --project mindjotLoads project context from memory/projects/<project>/:
context.md- Primary context (lightweight, ~2-5KB) - Recommended for most sessionsconversations.json- Full conversation history (optional, load ad-hoc when needed)
Setting up project files:
-
Generate context.md (Recommended):
- Export project conversations using
export-chatgpt-conversations - Use the prompt in
export-chatgpt-conversations/generate-context-prompt.mdwith Claude to generatecontext.md - Or create manually with project overview, architecture, goals, and current state
- Save to
memory/projects/<project>/context.md - Note: Future release will automate this process
- Export project conversations using
-
Export conversations.json (Optional):
- Use
export-chatgpt-conversationsto export a project - Copy to
memory/projects/<project>/conversations.json - Use sparingly - only when you need to reference specific historical conversations
- Use
Usage pattern:
- Most sessions: Load
context.mdonly (lightweight, current state) - Deep historical work: Load
conversations.jsonad-hoc when needed - Note: Loading
conversations.jsonsignificantly increases token usage
bash claude-memory/bin/cc-memspan --identityLoads just your identity—useful for quick questions where memories aren't needed.
bash claude-memory/bin/cc-memspanLoads only CLAUDE.md (data-free control file with instructions). Minimal context.
# Set current project
echo mindjot > claude-memory/memory/current-project
# Use it
bash claude-memory/bin/cc-memspan --use-current --identityUse -- to pass extra arguments to the claude command:
bash claude-memory/bin/cc-memspan --identity -- "help me refactor this code"See what command would be executed:
bash claude-memory/bin/cc-memspan --identity --memories --dry-run- Reads Context Files: The script reads selected context files (identity, memories, projects)
- Combines into System Prompt: Files are combined into a system prompt block
- Launches Claude: Runs
claudewith--append-system-prompt
This means the context is sent with every message, so Claude has access to your identity and memories throughout the session.
CLAUDE.md is a data-free control file that provides instructions to Claude:
- Where context files live - Points to identity, memories, and project files
- Memory precedence rules - Claude memories > ChatGPT memories > identity
- Memory saving behavior - How Claude should save new memories during sessions
- Historical data loading - Instructions to ask before loading conversation history
Key behaviors:
- Claude does not assume identity or memories unless files are explicitly loaded via
cc-memspan - If asked about prior decisions/history without context, Claude will ask whether to load specific files
- Historical conversations are loaded ad-hoc when needed (not automatically)
Claude can proactively save memories during sessions to memory/claude/entries/. The system supports:
ask-first(current): Claude asks before savingsave-and-notify(planned): Claude saves and mentions itsilent(planned): Claude saves without mention
What triggers memory saving:
- New biographical facts or corrections
- Stated preferences or changes to preferences
- Significant insights or self-observations
- Goal updates or life context changes
- Decisions or commitments made during conversation
- Explicit user request ("remember this", "save this")
Example Files:
- See
claude-memory/memory/claude/index-example.jsonfor the complete index structure with config and entry metadata - See the
claude-memory/memory/claude/entries/directory for example entry files showing the markdown format - See
claude-memory/memory/claude/README.mdfor full documentation on the memory system
Claude's Built-in Memory:
- Managed by Anthropic, stored on their servers
- Automatic and opaque (you don't see what's stored)
- Platform-locked to Claude/Anthropic
- Not portable to other LLMs or systems
Memspan's File-Based Memory:
- You control everything - files on your system
- Transparent - you can see and edit all memories
- Portable - standard formats work with any LLM
- Selective - you choose what to load per session
- Independent - doesn't interfere with Claude's built-in memory
Advantages:
- Portability: Your data works with GPT-4, local models, or future LLMs
- Control: See, edit, and version-control your memories
- Ownership: Files on your system, not locked to a vendor
- Future-proof: Foundation for digital twins or custom AI agents
The script looks for files in this order:
Identity:
memory/identity/core-identity.md(if present)memory/identity/core-identity.json(primary format from export)../identity-archive/core-identity.json(fallback)
Memories:
memory/chatgpt/memories_export.md
Projects:
memory/projects/<project>/context.mdmemory/projects/<project>/conversations.json
Projects Index:
memory/projects/projects.json
Missing files are warned about but skipped (the script continues).
The project includes a Makefile that provides convenient shortcuts for common tasks. This is especially useful if you prefer using make commands over typing full paths or remembering exact command syntax.
From the project root directory, you can use make commands:
# Show all available commands
make help
# Check prerequisites (Claude CLI, Python, etc.)
make check
# Show status of all memory files
make status# Create directory structure (idempotent - safe to run multiple times)
make setup
# Validate all required files exist
make validate
# Check if identity file exists
make identity-check
# Validate identity JSON format
make identity-validate
# Check if memories file exists
make memories-check# Show location of identity extraction prompt and instructions
make identity-promptThis will display:
- The location of the identity extraction prompt
- Step-by-step instructions for extracting your identity from ChatGPT
- Where to save the output file
The Makefile provides convenient shortcuts for launching Claude with different context combinations:
# Launch with identity only
make memspan-identity
# Launch with identity + memories (recommended starting point)
make memspan-identity-memories
# Launch with identity + memories + projects index (lightweight project awareness)
make memspan-projects-index
# Launch with full context for a specific project
make memspan-full PROJECT=project-name
# Check what context files would be loaded (dry run)
make memspan-checkNote: The memspan-full target requires specifying a project name:
make memspan-full PROJECT=mindjotIf you don't specify a project, it will show available projects and exit.
# List all available projects
make projects-listThis shows:
- All projects in
memory/projects/ - Which files exist for each project (context.md, conversations.json, decisions.json)
- Project status indicators
The Makefile can help you set up shell aliases:
# Show example aliases (doesn't modify anything)
make aliases-show
# Interactive alias installation
make aliases-installThe aliases-install command will:
- Ask which shell config file to use (~/.bash_profile or ~/.zshrc)
- Add memspan aliases automatically
- Show you how to reload your shell configuration
Initial Setup:
# 1. Create directory structure
make setup
# 2. Check prerequisites
make check
# 3. Extract identity (shows instructions)
make identity-prompt
# 4. After extracting identity, validate it
make identity-validate
# 5. Check overall status
make statusDaily Usage:
# Quick check of what's available
make status
# Launch Claude with identity and memories (recommended)
make memspan-identity-memories
# Launch with lightweight project awareness (identity + memories + projects index)
make memspan-projects-index
# Work on a specific project with full context
make memspan-full PROJECT=my-projectTroubleshooting:
# Check if everything is set up correctly
make check
make validate
# See what would be loaded
make memspan-check
# List available projects
make projects-list| Target | Description |
|---|---|
help |
Show all available commands |
setup |
Create directory structure |
check |
Check prerequisites |
status |
Show status of all memory files |
validate |
Validate all required files exist |
identity-prompt |
Show identity extraction instructions |
identity-check |
Check if identity file exists |
identity-validate |
Validate identity JSON format |
memories-check |
Check if memories file exists |
projects-list |
List available projects |
memspan-identity |
Launch Claude with identity |
memspan-identity-memories |
Launch Claude with identity + memories |
memspan-projects-index |
Launch Claude with identity + memories + projects index (lightweight project awareness) |
memspan-full PROJECT=name |
Launch Claude with full context |
memspan-check |
Check what context files would be loaded |
aliases-show |
Show example shell aliases |
aliases-install |
Interactive alias installation |
clean |
Clean up temporary files |
- Consistent commands: Same commands work regardless of your working directory
- Less typing: Short commands like
make statusvs full paths - Built-in help:
make helpshows all available commands - Error checking: Targets validate prerequisites before running
- Documentation: Each target has a description visible in
make help
Use Make when:
- You're in the project root directory
- You want quick shortcuts for common tasks
- You prefer consistent, documented commands
- You want built-in validation and error checking
Use direct commands when:
- You're in a different directory and don't want to
cdback - You need to pass custom arguments to
cc-memspan - You're scripting or automating workflows
- You prefer explicit control over exact command syntax
Both approaches work equally well—choose what feels most comfortable for your workflow.
To avoid typing the full path every time, create shell aliases. Here are examples for macOS/Linux using ~/.bash_profile or ~/.zshrc:
# Add to ~/.bash_profile or ~/.zshrc
alias cc-memspan='bash ~/path/to/memspan/claude-memory/bin/cc-memspan'Now you can use:
cc-memspan --identityCreate shortcuts for common patterns:
# Add to ~/.bash_profile or ~/.zshrc
# Base alias
alias cc-memspan='bash ~/path/to/memspan/claude-memory/bin/cc-memspan'
# Claude CLI shortcut
alias cc='claude'
# Common patterns
alias cc-me='cc-memspan --identity --memories'
alias cc-project='cc-memspan --identity --memories --projects-index'# Load identity and memories
cc-me
# Load identity, memories, and projects index (lightweight project awareness)
cc-project
# Load full context for a project (ad-hoc, higher token usage)
cc-memspan --project mindjot
# Just identity
cc-memspan --identityAfter adding aliases, reload your shell configuration:
# For bash
source ~/.bash_profile
# For zsh
source ~/.zshrcOr open a new terminal window.
Here's a complete example for ~/.bash_profile:
# Memspan aliases
alias cc-memspan='bash ~/path/to/memspan/claude-memory/bin/cc-memspan'
alias cc='claude'
alias cc-me='cc-memspan --identity --memories'
alias cc-project='cc-memspan --identity --memories --projects-index'If your Memspan directory is in a different location, adjust the path:
# Example: if memspan is in ~/Projects/memspan
alias cc-memspan='bash ~/Projects/memspan/claude-memory/bin/cc-memspan'You can also set CLAUDE_CMD if your Claude CLI has a different name:
# In ~/.bash_profile or ~/.zshrc
export CLAUDE_CMD="claude" # or whatever your CLI is named- Extract Your Identity: Follow the Identity Extraction steps
- Set Up Aliases: Create convenient aliases for
cc-memspan - Try It Out: Run
cc-memspan --identityand start a conversation - Extract Memories: See
export-chatgpt-memories/README.mdfor memory export - Export Conversations: See
export-chatgpt-conversations/README.mdfor conversation export and project correlation
- Main README: Complete project overview
- Main README: Complete project overview and architecture
- Claude Memory README: Detailed usage guide
- Identity Archive README: Identity extraction details
- ChatGPT Memories README: Memory export guide
- Conversation Export README: Conversation export and project correlation guide
# Check if claude is installed
which claude
# If not, install Claude Code CLI (see Claude documentation)# Check if identity file exists
ls -la claude-memory/memory/identity/
# If missing, extract identity first (see Extracting Identity section)# Make script executable
chmod +x claude-memory/bin/cc-memspan# Reload shell configuration
source ~/.bash_profile # or ~/.zshrc
# Or check alias is defined
alias cc-memspanMemspan gives you:
✅ Portable Memory: Extract identity, memories, and conversations from ChatGPT
✅ Selective Loading: Choose what context to load per session
✅ File-Based: No databases, just files you control
✅ Tool-Agnostic: Works with any LLM interface
Start by extracting your identity, then use cc-memspan to load it into Claude Code sessions. Create aliases for convenience, and gradually add memories and project context as needed.