---
title: Import from Medium
description: Bring your Medium history into Scripto with scripto articles import — point it at a single file, the posts/ folder, or the export root.
---

`scripto articles import` brings your existing Medium stories into Scripto, parsing each into Scripto's semantic HTML — headings, code blocks, lists, and figures preserved with their original image URLs.

## Get your Medium export

In Medium: **Settings → Account → Download your information**. The export is a zip; unzipped, each post is one HTML file under a `posts/` folder.

## Import

Point `import` at a single file, the `posts/` folder, or the unzipped export root:

```bash
scripto articles import ./medium-export                 # batch: every story in the export
scripto articles import ./medium-export/posts           # just the posts folder
scripto articles import ./posts/2024-06-25_My-Story-abc123.html   # a single file
```

## Preview first

```bash
scripto articles import ./medium-export --dry-run
```

```text
  Would import 7 stories:
    • My first post
    • A deep dive on …
  Skipping 12 (responses/drafts).
```

A dry run touches the network for nothing — it just reports the plan.

## What's skipped, and how to include it

By default, Medium **responses/comments** and **drafts** are skipped. Override per run:

| Flag | Effect |
|---|---|
| `--include-responses` | Also import responses/comments. |
| `--include-drafts` | Also import Medium drafts. |
| `--publish` | Publish imported stories immediately (default: import as drafts). |

<Note>

Imports land as **drafts** with their original Medium publish date preserved on `createdAt`, so your library reads in chronological order. `updatedAt` is set to now, so a freshly imported story still surfaces at the top of the list. A Medium **draft** can't be published on import (it never had a public date) — it stays a draft even with `--publish`.

</Note>

## After importing

Each imported story is a normal Scripto article — edit it section by section, refine the Brief, and re-publish. Because the original image URLs are already absolute (Medium-hosted), they render and re-import without re-hosting.

<Warning>

`--publish` mints a slug and goes live immediately for every non-draft story in the batch. Use `--dry-run` first to confirm the plan, especially on a large export.

</Warning>

## Next

- **[Import, don't paste](/concepts/import-model)** — the publish-and-import model in the other direction.
- **[POST /api/articles/import](/api-reference/import-article)** — the endpoint behind this command.
- **[The ordered-sections model](/concepts/sections)** — how an imported body is split for editing.
