matmar10 / webflow-json-dump

Simple script that dumps all items in a Webflow CMS Collection to JSON. Useful for creating a file-system based cache of your CMS or other hackery.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Webflow JSON dump

Why?

Because (choose one or more)

  1. Webflow doesn't have a public GraphQL API yet, and
  2. Webflow's REST API is very chatty, requiring many round trips
  3. You want to cache some infrequently changing content used someplace
  4. You need a quick & simple way to cache or backup content
  5. You cringe at the idea of parsing CSV files

How

# Install it globally, if you like)
npm install -g webflow-json-dump

webflow-json-dump Posts --api-key [your API key] --site-id [your site ID]

# or use env variables to make it easier
export WEBFLOW_API_TOKEN="[your Webflow API token]"
export WEBFLOW_SITE_ID="[your Webflow site ID]"
webflow-json-dump Posts

You can redirect stdout to a file to create an instantly, usable JSON cache version:

webflow-json-dump Posts > posts.json

CLI Usage

Basic usage:

# this will show you how:
webflow-json-dump Posts

Change some of the output property names:

# this would move the "alt" property of each image
# to the "altText" property
webflow-json-dump Posts --map.image.alt image.altText

This is useful for sometimes when webflow creates annoying names like "summary_2" due to merge conflict.

API & Programmatic Usage

const webflowJsonDump = require('webflow-json-dump');

(async () => {
  // bootstrap the lib
  const { getCollectionByName, getItemsForCollectionById, getPopulatedItems } = webflowJsonDump({
    apiKey: '[your api key]',
    siteId: '[your site ID]'
  });

  // use it
  const collection = await getCollectionByName('Posts');
  const items = await getItemsForCollectionById(collection._id);
  const populatedItems = await getPopulatedItems(items, collection._id);
})();

About

Simple script that dumps all items in a Webflow CMS Collection to JSON. Useful for creating a file-system based cache of your CMS or other hackery.

License:MIT License


Languages

Language:JavaScript 100.0%