> ## Documentation Index
> Fetch the complete documentation index at: https://ophel.app/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Conversation Export: Markdown, JSON, zip packages, and asset preservation

> Export AI conversations in Markdown, JSON, plain text, or zip packages — with per-platform support for images, attachments, code artifacts, Deep Research reports, and thinking chains.

export const ShortcutLegend = ({lang = "en"}) => {
  const isZh = lang === "zh";
  return <div className="ophel-shortcut-legend" role="note">
      <div className="ophel-shortcut-legend-title">
        {isZh ? "跨平台按键说明" : "Cross-platform key mapping"}
      </div>
      <div className="ophel-shortcut-legend-body">
        {isZh ? <>
            文档中的快捷键会同时显示 Windows/Linux 与 Mac 写法：
            <code>Ctrl</code> 对应 <code>Command</code>，
            <code>Alt</code> 对应 <code>Option</code>。唯一例外是提示词发送，
            <code>Ctrl+Enter</code> 在 Mac 上也使用 <code>Ctrl+Enter</code>。
          </> : <>
            Shortcuts show both Windows/Linux and Mac keys: <code>Ctrl</code> maps
            to <code>Command</code>, and <code>Alt</code> maps to
            <code>Option</code>. Prompt submit is the only exception:
            <code>Ctrl+Enter</code> remains <code>Ctrl+Enter</code> on Mac.
          </>}
      </div>
    </div>;
};

export const Shortcut = ({combo, mac, sameOnMac = false}) => {
  const keyLabels = {
    arrowup: {
      win: "Up",
      mac: "↑"
    },
    arrowdown: {
      win: "Down",
      mac: "↓"
    },
    arrowleft: {
      win: "Left",
      mac: "←"
    },
    arrowright: {
      win: "Right",
      mac: "→"
    },
    up: {
      win: "Up",
      mac: "↑"
    },
    down: {
      win: "Down",
      mac: "↓"
    },
    left: {
      win: "Left",
      mac: "←"
    },
    right: {
      win: "Right",
      mac: "→"
    },
    esc: {
      win: "Esc",
      mac: "Esc"
    },
    escape: {
      win: "Esc",
      mac: "Esc"
    },
    enter: {
      win: "Enter",
      mac: "Enter"
    },
    shift: {
      win: "Shift",
      mac: "⇧"
    },
    backslash: {
      win: "\\",
      mac: "\\"
    }
  };
  const modifierLabels = {
    ctrl: {
      win: "Ctrl",
      mac: "⌘"
    },
    control: {
      win: "Ctrl",
      mac: "⌘"
    },
    cmd: {
      win: "Ctrl",
      mac: "⌘"
    },
    command: {
      win: "Ctrl",
      mac: "⌘"
    },
    alt: {
      win: "Alt",
      mac: "⌥"
    },
    option: {
      win: "Alt",
      mac: "⌥"
    },
    shift: {
      win: "Shift",
      mac: "⇧"
    }
  };
  const normalizeToken = token => String(token || "").trim();
  const formatKey = (token, platform) => {
    const normalized = normalizeToken(token);
    const key = normalized.toLowerCase();
    const mapped = keyLabels[key];
    if (mapped) return mapped[platform];
    if (normalized.length === 1) return normalized.toUpperCase();
    return normalized;
  };
  const formatCombo = (value, platform) => String(value || "").split("+").map(normalizeToken).filter(Boolean).map(token => {
    const mapped = modifierLabels[token.toLowerCase()];
    return mapped ? mapped[platform] : formatKey(token, platform);
  }).join(platform === "mac" ? "" : "+");
  const windowsLabel = formatCombo(combo, "win");
  const macLabel = sameOnMac ? windowsLabel : mac || formatCombo(combo, "mac");
  const title = windowsLabel === macLabel ? windowsLabel : `Windows/Linux: ${windowsLabel}; Mac: ${macLabel}`;
  return <span className="ophel-shortcut" title={title}>
      <code>{windowsLabel}</code>
      {windowsLabel !== macLabel && <>
          <span className="ophel-shortcut-separator"> / </span>
          <code>{macLabel}</code>
        </>}
    </span>;
};

export const Icon = ({src, alt}) => <img src={typeof window !== "undefined" && typeof src === "string" && src.startsWith("/images/icons/") && (window.location.pathname === "/docs" || window.location.pathname.startsWith("/docs/")) ? `/docs${src}` : src} alt={alt} width="18" height="18" style={{
  display: "inline-block",
  verticalAlign: "-0.2em",
  margin: "0 0.15em"
}} />;

Ophel can export any AI conversation to a file, preserving not just the text but also images, uploaded files, generated assets, code artifacts, and reasoning chains — depending on what the platform exposes. You control the output format, what gets included, and how files are packaged.

## How to export

| Method                 | Description                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Floating quick buttons | Click the <Icon src="/docs/images/icons/tools.svg" alt="Toolbox icon" /> toolbox icon, then click <Icon src="/docs/images/icons/export.svg" alt="Export icon" /> **Export** to save <Icon src="/docs/images/icons/markdown.svg" alt="Markdown file icon" /> Markdown                                                                                                                                                                                       |
| Keyboard shortcut      | <Shortcut combo="ctrl+shift+e" /> exports the current conversation as <Icon src="/docs/images/icons/markdown.svg" alt="Markdown file icon" /> Markdown                                                                                                                                                                                                                                                                                           |
| Conversations tab      | Click the <Icon src="/docs/images/icons/more-horizontal.svg" alt="Three-dot menu icon" /> three-dot menu on a conversation row, choose <Icon src="/docs/images/icons/export.svg" alt="Export icon" /> **Export**, then select <Icon src="/docs/images/icons/markdown.svg" alt="Markdown file icon" /> Markdown, <Icon src="/docs/images/icons/json-file.svg" alt="JSON file icon" /> JSON, or <Icon src="/docs/images/icons/txt-file.svg" alt="TXT file icon" /> TXT |
| Segmented export       | Click the three-dot menu on a conversation row, choose **Export segments...** to select and export specific parts of a conversation                                                                                                                                                                                                                                                                                                         |

After triggering an export, a full-page progress overlay blocks accidental interaction while Ophel loads history, extracts content, packages assets, saves the file, and restores the page.

## Export formats

| Format                                                                                         | What it preserves                                                                           | Best for                                                             |
| ---------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- |
| <Icon src="/docs/images/icons/markdown.svg" alt="Markdown file icon" /> Markdown (`.md`)            | Speaker labels, headings, lists, code blocks, and image references                          | Notes, wikis, documentation, and AI-to-AI handoff                    |
| <Icon src="/docs/images/icons/zip-file.svg" alt="Zip package icon" /> Markdown zip package (`.zip`) | The Markdown file plus referenced images, attachments, and generated artifacts in `assets/` | Conversations with files, images, Canvas code, or document artifacts |
| <Icon src="/docs/images/icons/json-file.svg" alt="JSON file icon" /> JSON (`.json`)                 | Structured messages with roles, timestamps, model metadata, and content                     | Programmatic processing, indexing, and archival workflows            |
| <Icon src="/docs/images/icons/txt-file.svg" alt="TXT file icon" /> Plain text (`.txt`)              | A clean transcript without Markdown formatting                                              | Searchable text archives and plain text editors                      |

You can also click <Icon src="/docs/images/icons/tools.svg" alt="Toolbox icon" /> **Toolbox** → <Icon src="/docs/images/icons/copy.svg" alt="Copy Markdown icon" /> **Copy Markdown** to copy the entire conversation to your clipboard without saving a file.

## Segmented export

Segmented export lets you select and export specific parts of a conversation instead of exporting the entire thread. This is useful for long conversations where you only need certain sections, or when you want to organize different topics into separate files.

### How to use segmented export

<Steps>
  <Step title="Open the segmented export dialog">
    From the Conversations tab, click the <Icon src="/docs/images/icons/more-horizontal.svg" alt="Three-dot menu icon" /> three-dot menu on any conversation row and choose **Export segments...**
  </Step>

  <Step title="Select segments">
    Ophel automatically detects conversation segments based on user questions. You can:

    * Search for specific segments using the search box
    * Select segments individually by clicking checkboxes
    * Use range selection (e.g., "1-3, 8") to select multiple segments at once
    * Click **Select visible** to select all segments matching your search
    * Click **Invert visible** to flip the current selection
  </Step>

  <Step title="Choose export mode">
    Pick one of three output modes:

    * **ZIP (one Markdown per segment)** — Each selected segment becomes a separate `.md` file inside a zip archive
    * **Merged Markdown** — All selected segments are combined into a single `.md` file
    * **Copy Markdown** — Copies the merged Markdown directly to your clipboard
  </Step>

  <Step title="Export">
    Click **Export selected** to download or copy your selection.
  </Step>
</Steps>

### Segment detection

Ophel treats each user question as the start of a new segment. A segment includes:

* The user's question
* The AI's complete response
* Any nested back-and-forth exchanges before the next top-level user question

Each segment shows a preview with metadata: number of user messages, number of AI messages, and approximate character count.

## Packaging mode

Go to **Settings → Features → Export → Packaging mode** to choose how Markdown exports handle assets:

| Mode              | Behavior                                                                                         |
| ----------------- | ------------------------------------------------------------------------------------------------ |
| **Markdown only** | Exports a single `.md` file. Images and attachments appear as text references or external links. |
| **Zip package**   | Bundles the Markdown file together with all assets in a `.zip` archive.                          |

When zip mode is active, Ophel downloads the archive directly instead of a standalone Markdown file.

### Zip package structure

```
conversation-title.zip
├── conversation-title.md
└── assets/
    ├── images/       ← Generated and embedded images
    ├── files/        ← User-uploaded attachments (PDFs, documents, etc.)
    └── documents/    ← Exported artifacts (Claude documents, Gemini Canvas code)
```

All references inside the Markdown file use stable relative paths, so the zip extracts cleanly into any folder.

## Platform export capabilities

Each AI platform exposes different types of content. The table below shows what Ophel can preserve per platform.

| Platform              | User attachments | Generated images | Thinking chains | Artifacts & reports                |
| --------------------- | :--------------: | :--------------: | :-------------: | ---------------------------------- |
| **ChatGPT**           |         ✅        |         ✅        |        —        | Deep Research reports              |
| **Gemini**            |         ✅        |         ✅        |        ✅        | Canvas code, Deep Research reports |
| **Gemini Enterprise** |         ✅        |         ✅        |        ✅        | Canvas code, Deep Research reports |
| **AI Studio**         |         ✅        |         —        |        —        | —                                  |
| **Claude**            |         ✅        |         —        |        ✅        | Document artifacts                 |
| **Grok**              |         ✅        |         ✅        |        —        | —                                  |
| **DeepSeek**          |         ✅        |         —        |        —        | —                                  |
| **Doubao**            |         ✅        |         ✅        |        —        | —                                  |
| **Kimi**              |         ✅        |         —        |        ✅        | Share page exports                 |
| **Qwen Studio**       |         ✅        |         ✅        |        ✅        | —                                  |
| **Qianwen**           |         ✅        |         ✅        |        —        | —                                  |
| **Yuanbao**           |         ✅        |         ✅        |        ✅        | —                                  |
| **Z.ai**              |         ✅        |         —        |        ✅        | —                                  |
| **ChatGLM**           |         ✅        |         ✅        |        ✅        | —                                  |
| **ima**               |         ✅        |         ✅        |        ✅        | —                                  |

<Note>
  This table reflects what Ophel can extract from each platform's current page
  structure. If a platform redesigns its DOM, some capabilities may need adapter
  updates before they work again.
</Note>

## Platform-specific export details

### ChatGPT

* **Generated images** — AI-generated image-only replies are included in both Markdown and zip exports.
* **Deep Research reports** — When a Deep Research report is available, the export includes the report title and a link. In zip mode, linked report files are preserved under `assets/files/`.
* **User attachments** — Uploaded images and linked files from user prompts are packaged in zip mode.

### Gemini & Gemini Enterprise

* **Canvas code artifacts** — Exports open Canvas artifacts, switches to the code tab, and includes the generated code in the Markdown output. When a Canvas panel is open, **Copy Markdown** and **Download Markdown** buttons appear directly in the Canvas toolbar for quick code export.
* **Deep Research exports** — Covers owned app conversations, share pages, and generated report share pages. Closed report panels are opened during export and restored afterward.
* **Deep Research report actions** — When a Deep Research report panel is open, **Copy Markdown** and **Download Markdown** buttons appear in the report toolbar, exporting only the current report without changing the regular conversation export.

### Claude

* **Document artifacts** — Markdown document artifacts are exported as linked files under `assets/documents/` in zip packages.
* **Thinking chains** — Expanded Claude thinking blocks are included when "Include Thoughts in Export" is enabled.
* **Attachments** — Uploaded images and linked files from user prompts are packaged in zip mode, preserving the original reply order of text and artifact links.

### Kimi

* **Share page export** — Kimi share pages are supported for export, outline extraction, and scroll navigation.
* **Thought chains** — Visible thinking content is included when "Include Thoughts in Export" is enabled.
* **User images** — Uploaded images are preserved in Markdown and zip exports.

### Deep Research report export (Gemini)

Gemini Deep Research reports are handled separately from regular conversation exports:

* The Outline tab shows a **Chat / Document** source switch when a report is open, letting you browse the report outline independently from the conversation outline.
* The report panel toolbar includes **Copy Markdown** and **Download Markdown** buttons for exporting only the report content.
* During a full conversation export, Ophel opens the report panel if it is closed, extracts the content, and restores the panel state afterward.

## Export settings

Configure export behavior in **Settings → Features → Export**:

| Setting                           | Description                                            | Default       |
| --------------------------------- | ------------------------------------------------------ | ------------- |
| Packaging mode                    | Markdown only or zip package                           | Markdown only |
| Custom user name                  | Replaces "User" in the exported output                 | (empty)       |
| Custom AI name                    | Replaces the AI name in the exported output            | (empty)       |
| Include filename timestamp        | Adds a timestamp to the exported filename              | Off           |
| Include thinking/reasoning chains | Exports reasoning steps for platforms that expose them | On            |

## Copy as Markdown

Click <Icon src="/docs/images/icons/tools.svg" alt="Toolbox icon" /> **Toolbox** → <Icon src="/docs/images/icons/copy.svg" alt="Copy Markdown icon" /> **Copy Markdown** to copy the entire conversation to your clipboard in Markdown format. This is faster than exporting a file when you just need to paste the content into a note, email, or another AI chat.

## Export from share pages

Ophel supports exporting from share pages on most platforms. The browser tab title and export filename use the page heading when the conversation title is not exposed on a share page. Platform-specific share page support:

* **Gemini** — owned app conversations, conversation share pages, and report share pages
* **Kimi** — share page conversations with images and file labels
* **Doubao** — share links under `/thread/`
* **Z.ai** — conversation and share pages
* **ChatGLM** — share pages with thinking content
* **Qwen Studio** — regular and share page conversations with thinking details
