Migrating from Render Markdown

For Confluence Cloud sites that use the "Render Markdown" macro by StreamlineSoft.

Render Markdown is an Atlassian Connect app that has not been updated since 2021. Atlassian is ending support for Connect apps, so pages that use it will eventually stop rendering. CloudLark Markdown Renderer is a modern Forge replacement. This guide moves your existing pages to it, keeping your Markdown text.

What you get

Render MarkdownCloudLark Markdown Renderer
PlatformConnect (end of support)Forge (runs on Atlassian)
Markdown found by Confluence searchNoYes
Dark modeNoYes
Inline macroNoYes
PDF / Word exportLimitedFormatted content
Code highlighting, tables, task listsPartialYes

Before you start

  1. Install CloudLark Markdown Renderer on your site from the Atlassian Marketplace.
  2. Keep Render Markdown installed until the migration is finished.
  3. Try the migration on a test space or a few pages first.

Option 1: migration script (recommended for many pages)

A small script runs on your computer with your own Confluence API token. It finds every page that uses the old macro, shows what it would change, and then converts the pages. Every change is a normal page version, so it can be undone. The CloudLark app itself never needs permission to read or change your pages.

1. Prepare

# PowerShell
$env:CONFLUENCE_SITE = "https://your-site.atlassian.net"
$env:CONFLUENCE_EMAIL = "you@example.com"
$env:CONFLUENCE_API_TOKEN = "<your token>"

# macOS / Linux
export CONFLUENCE_SITE=https://your-site.atlassian.net
export CONFLUENCE_EMAIL=you@example.com
export CONFLUENCE_API_TOKEN=<your token>

2. Find the old macro's key

Open a page that uses Render Markdown and copy its page ID from the URL (/pages/123456/...). Then run:

node render-markdown-migrate.mjs inspect --page 123456

Note the key= value of the Render Markdown macro and check that markdown= shows a length, not none.

3. Create a template page

Create a page (for example in your personal space), insert one CloudLark Markdown Renderer macro, type exactly CLOUDLARK_TEMPLATE as its Markdown, and publish. Copy this page's ID.

4. Scan and dry run

node render-markdown-migrate.mjs scan --macro <key>
node render-markdown-migrate.mjs migrate --macro <key> --template <template page id>

Nothing is changed yet. Review the list of pages and macro counts.

5. Convert

# try a few pages first
node render-markdown-migrate.mjs migrate --macro <key> --template <template page id> --apply --limit 5

# then everything
node render-markdown-migrate.mjs migrate --macro <key> --template <template page id> --apply

Each converted page gets a new version with the message "Converted Render Markdown to CloudLark Markdown Renderer". The script writes a migration-log-*.jsonl file listing every changed page.

6. Undo (if needed)

node render-markdown-migrate.mjs revert --log migration-log-<date>.jsonl

This restores each page to the version before the migration. Edits made to those pages after the migration are replaced, so revert soon if you need to. You can also restore single pages from Page history.

Option 2: manual (a few pages)

  1. Edit the page and open the Render Markdown macro to copy its Markdown.
  2. Type /markdown and insert CloudLark Markdown Renderer (or the inline variant).
  3. Paste the Markdown, save the macro, then delete the old macro.
  4. Publish the page.

After migrating

Troubleshooting

A macro is reported as "skipped"

The old macro on that page has no Markdown text stored in the page (for example it displayed a file from a URL). Migrate it manually.

The script stops with HTTP 401 or 403

Check the email and API token, and that the account can view and edit the page.

Is my content sent anywhere?

No. The script talks only to your own Confluence site. It is a single readable file; you can review it before running it.

Need help? Write to cloudlark@uttily.com.