Export content from HubSpot using their API, and generate a zip
file you can import into a Ghost installation.
See how to get your API key.
To install the CLI, which is required for the Usage commands below:
npm install --global @tryghost/migrate
To use this package in your own project:
npm install @tryghost/mg-hubspot-api --save
or
yarn add @tryghost/mg-hubspot-api
To run a Ghost API migration, the required command is:
migrate hubspot --url https://example.com --hapikey 1234abcd
It's possible to pass more options, in order to achieve a better migration file for Ghost:
-
--url
(required)- URL of the blog you want to migrate
- string - default:
null
-
--hapikey
(required)- Hubspot API Key (hapikey)
- string - default:
null
-
-V
--verbose
- bool - default:
false
- Show verbose output
- bool - default:
-
--zip
- bool - default:
true
- Create a zip file
- bool - default:
-
-s
--scrape
- Configure scraping tasks
- string - default:
all
- Choices:
all
,img
,web
,media
,files
,none
-
--sizeLimit
- number - default:
false
- Media files larger than this size (defined in MB [i.e.
5
]) will be flagged as oversize
- number - default:
-
-e
--email
- string - default:
false
- Provide an email domain for users e.g. example.com
- string - default:
-
-I
--info
- bool - default:
false
- Show initalisation info only
- bool - default:
-
-b
--batch
- number - default:
0
- Batch number to run (defaults to running all)
- number - default:
-
-l
--limit
- number - default:
100
- Number of items fetched in a batch i.e. batch size
- number - default:
-
--fallBackHTMLCard
- bool - default:
true
- Fall back to convert to HTMLCard, if standard Mobiledoc convert fails
- bool - default:
-
--cache
- Persist local cache after migration is complete (Only if
--zip
istrue
) - bool - default:
true
- Persist local cache after migration is complete (Only if
A more complex migration command could look like this:
migrate hubspot --url https://example.com --hapikey 1234abcd --email example.com --batch 2 --limit 50
This will get 100 posts in 2 batches of 50, and all authors will have an email address ending in 'example.com'
This is a mono repository, managed with lerna.
Follow the instructions for the top-level repo.
-
git clone
this repo &cd
into it as usual - Run
yarn
to install top-level dependencies.
To run a local development copy, cd
into this directory, and use yarn dev
instead of migrate
like so:
yarn dev hubspot --url https://example.com --hapikey 1234abcd
-
yarn lint
run just eslint -
yarn test
run lint and tests
Copyright (c) 2013-2025 Ghost Foundation - Released under the MIT license.