
In order to import your content into RebelMouse, you must be able to fully parse your site's content. RebelMouse accepts several input formats for content ingestion.
Requirements for Your Feed
First, you must provide an export file/feed of all the content entries and authors on your website through the following fields:
Required Authors Fields to Import
- To import authors, you should provide us with a "main" list of authors, separate from the list of content entries.
- Each author should contain:
- Name: full name of the author
- Email: full email address
- ID: unique identifier for each author
Required Entry Fields to Import
- Pubdate: publication date for the article following the date and time specifications of RFC 822
- Content: full content of your article with HTML semantic
- Headline: string as a title of the article
- Images: list of URLs of featured images and descriptions that represent your article
- URL: full public URL of your article
- Authors: list of author IDs for the given entry, as specified in the "main" authors list outlined above
- Status: "published" or "draft"
Optional Entry Fields to Import
- basename: string with the desired basename to follow in the new RebelMouse URL (no "/" — just alphanumeric characters and "-")
- social_image: image to be used on social networks
- social_headline: headline to be used on social networks
- social_description: description text to be used on social networks
- listicle: if your article contains more than text — such as slides or pagination — using the listicle option might make more sense; a listicle is a list of items, where each item contains the following fields:
- headline: headline for each particular item/slide
- body: content of each item/slide as HTML
- media_html: any representative image or embed code as an HTML embed code
- credit: credits for each particular item/slide
- caption: small description of each item/slide's media
- numeration (optional): stringified version of each slide number
Each article can contain just one listicle. Optionally, you can set the following attributes that control the way the listicle will be rendered: - use_pagination: Boolean 0 or 1; default is 0; turns each listicle's items into a page on the given post
- use_numeration: Boolean 0 or 1; default is 0; turns the listicle into a numerated list
- numeration_sort: ASC or DESC; default is ASC
- body_text_above: Boolean 0 or 1; default is 0; tells whether each listicle item's body text should be placed above or below the listicle item's media_html
- tags: list of strings where each string is a tag to be applied to your article
- media_url: URL of a video/embed which you want to highlight as representative media for your entry; the requirement for this URL is to be usable as an "src" attribute of an <iframe> tag
- subheadline: a string for a second-level headline for your article
- sections: a list of strings, where each string is the name of the RebelMouse section you want the current entry to be a part of; if no sections are set, the entry will go directly to your site's front page; if you want the entry to go to the front page and other sections, then you should name "front page" explicitly and include the names of the other sections; section names must be lowercase: just a–z letters, and spaces should be replaced by underscores (_) (E.g., "front_page," "business," "healthy_living")
To ingest your content into RebelMouse, you must use one of the following formats: JSON, XML, or RSS 2.0.
JSON Format
To provide RebelMouse with a JSON output of your content, provide us with a list of authors and entries as specified in the instructions above, where the items of each list are simple dictionaries defining the given author or entry.
Here's an example of two authors and two entries with just the required fields:
{ "authors": [ {"name": "John Smith", "email": 'smith@domain.com", "id": "123-456"}, {"name": "John Doe", "email": "doe@domain.com", "id": 789-abc"} ], "entries": [ { "headline": "This Is a Headline", "content": "<p>This is an <i>entry</i> with content full of <em>HTML</em> semantics.</p>", "pub_date": "Thu, 30 Jul 2015 15:00:45 +0000", "url": "<a href="http://www.yourdomain.com/path/to/your/article" target="_blank">http://www.yourdomain.com/path/to/your/article</a>", "images": [{"url": "<img src="<img src=" http:="" yourcdn.com="" path="" to="" your="" image.jpg"="">">", "description": 'some text"}, ...], "authors": ["123-456"], "status": "published" }, { "headline": "This Is Another Headline", "content": "<p>I can contain: </p><ul> <li>any</li> <li>semantic</li> </ul>", "pub_date": "Thu, 30 Jul 2015 16:35:00 +0000", "url": "<a href="http://www.yourdomain.com/path/to/another/article" target="_blank">http://www.yourdomain.com/path/to/another/article</a>", "images": [{"url": "<img src="<img src=" http:="" yourcdn.com="" path="" to="" another="" image.jpg"="">">", "description": 'some text"}, ...], "authors": ["123-456", "789-abc"], "status": "published" } ] }
Here's an example of a single entry with both required and optional fields, among them a listicle:
{ "headline": "This Is a Headline", "content": "<p>This is a <i>listicle</i> full of content with <em>HTML</em> semantics.</p>", "pub_date": "Thu, 30 Jul 2015 15:00:45 +0000", "url": "<a href="http://www.yourdomain.com/path/to/your-article" target="_blank">http://www.yourdomain.com/path/to/your-article</a>", "images": [{"urll": "<img src="<img src=" http:="" yourcdn.com="" path="" to="" your="" image.jpg"="">">", "description": 'some text"}, ...], "author": "Homer Simpson", "basename": "your-article", 'social_headline": "You won't believe this is a headline.", 'social_description": "OMG!", "authors": ["123-456"], "media_url": "<a href="https://www.youtube.com/watch?v=-WXAAAdGJ7o" target="_blank">https://www.youtube.com/watch?v=-WXAAAdGJ7o</a>" "tags": ['simpsons", "tv show", "homer"], 'sections": ["frontpage", "the_simpsons"] "listicle": [ {"headline": "item 1 headline", "body": "<p>item 1 content</p>", "media_html": "<img src="<img src=" http:="" path.to="" image.jpg"="">" />"}, {"headline": "item 2 headline", "body": "<p>item 2 content</p>", "media_html": "<iframe src="http://path.to/video"></iframe>"} ], "listicle_settings": { "use_numeration": 1, "numeration_order": "DESC" }, "status": "draft" }
XML Format
To provide RebelMouse with an XML output of your content, provide us with a list of entry and author entities, like the examples below.
Here's an example of two authors and two entries with just the required fields:
<?xml version="1.0"?> <authors> <author> <name><![CDATA[John Smith]]></name> <email>smith@domain.com</email> <id>123-456</id> </author> <author> <name><![CDATA[John Doe]]></name> <email>doe@domain.com</email> <id>789-abc</id> </author> </authors> <entries> <entry> <headline><![CDATA[This Is a Headline]]></headline> <content> <![CDATA[<p>This is an <i>entry</i> full of content with <em>HTML</em> semantics.</p>]]> </content> <pub_date>Thu, 30 Jul 2015 15:00:45 +0000</pub_date> <url>http://www.yourdomain.com/path/to/your/article</url> <authors> <author>123-456</author> </author> <images> <image> <url>http://yourcdn.com/path/to/another/image.jpg</url> <description>Some text</description> </image> </images> <status>published</status> </entry> <entry> <headline><![CDATA[This Is Another Headline]]></headline> <content> <![CDATA[<p>I can contain <ul> <li>any</li> <li>semantic</li> </ul></p>]]> </content> <pub_date>Thu, 30 Jul 2015 16:35:00 +0000</pub_date> <url>http://www.yourdomain.com/path/to/another/article</url> <authors> <author>123-456</author> <author>789-abc</author> </author> <images> <image> <url>http://yourcdn.com/path/to/another/image.jpg</url> <description>Some text</description> </image> </images> <status>published</status> </entry> </entries>
Here's an example of a single entry with both required and optional fields:
<entry> <headline><![CDATA[This Is a Headline]]></headline> <content> <![CDATA[<p>This is an <i>entry</i> full of content with <em>HTML</em> semantics.</p>]]> </content> <pub_date>Thu, 30 Jul 2015 15:00:45 +0000</pub_date> <url>http://www.yourdomain.com/path/to/your-article</url> <basename>your-article</basename> <authors> <author>123-456</author> </authors> <images> <image> <url>http://yourcdn.com/path/to/another/image.jpg</url> <description>Some text</description> </image> </images> <media_url>https://www.youtube.com/watch?v=-WXAAAdGJ7o</media_url> <social_network><![CDATA[You won't believe this is a headline.]]></social_network> <social_description><![CDATA[OMG!]]></social_description> <tags> <tag>simpsons</tag> <tag>tv show</tag> <tag>home</tag> </tags> <sections> <section>frontpage</section> <section>the_simpsons</section> </sections> <listicle use_numeration="1" numeration_order="DESC"> <item> <headline>item 1 headline</headline> <body><![CDATA[<p>item 1 content</p>]]></body> <media_html><![CDATA[<img src="http://path.to/image.jpg" />]]></media_html> </item> <item> <headline>item 2 headline</headline> <body><![CDATA[<p>item 2 content</p>]]></body> <media_html><![CDATA[<iframe src="http://path.to/video"></iframe>]]></media_html> </item> </listicle> <status>draft</status> </entry>He
RSS 2.0 Format
To provide RebelMouse with an RSS Feed of your content, provide us with a list of entry and author entities, like the examples below:
<rss xmlns:rm="http://www.rebelmouse.com/NS/" version="2.0"> <channel> <link>http://homesite.com</link> <rm:authors> <rm:author> <rm:name>author1</rm:name> <rm:email>athour1@homesite.com</rm:email> <rm:id>1<rm:id> </rm:author> <rm:author> <rm:name>author2</rm:name> <rm:email>author2@homesite.com</rm:email> <rm:id>2<rm:id> </rm:author> </rm:authors> <item> <title><![CDATA[This Is a Headline]]></title> <description> <![CDATA[<p>This is an <i>entry</i> full of content with <em>HTML</em> semantics.</p>]]> </description> <pubDate>Thu, 30 Jul 2015 15:00:45 +0000</pubDate> <link>http://www.yourdomain.com/path/to/your-article</link> <guid>post_id1</guid> <rm:images> <rm:image> <rm:url></rm:image_url> <rm:description_url></rm:description> </rm:image> </rm:images> <rm:authors> <rm:author>1</rm:author> <rm:author>2</rm:author> </rm:authors> <rm:status>published</rm:status> </item> <item> …. ... </item> </rss>
Here's an example of a single entry with both required and optional fields:
<item> <title><![CDATA[This Is a Headline]]></title>: <description> <![CDATA[<p>This is an <i>entry</i> full of content with <em>HTML</em> semantics.</p>]]> </description> <pub_date>Thu, 30 Jul 2015 15:00:45 +0000</pub_date> <link>http://www.yourdomain.com/path/to/your-article</link> <rm:basename>your-article</rm:basename> <rm:authors> <rm:author>123-456</rm:author> </rm:authors> <rm:images> <rm:image> <rm:url>http://yourcdn.com/path/to/another/image.jpg</rm:url> <rm:description>Some text</rm:description> </rm:image> </rm:images> <rm:social_network><![CDATA[You won't believe this is a headline.]]></rm:social_network> <rm:social_description><![CDATA[OMG!]]></rm:social_description> <rm:tags> <rm:tag>simpsons</rm:tag> <rm:tag>tv show</rm:tag> <rm:tag>home</rm:tag> </rm:tags> <rm:sections> <rm:section>frontpage</rm:section> <rm:section>the_simpsons</rm:section> </rm:sections> <rm:media_url>https://www.youtube.com/watch?v=-WXAAAdGJ7o</rm:media_url> <rm:listicle use_numeration="1" numeration_order="DESC"> <rm:item> <rm:headline>item 1 headline</rm:headline> <rm:body><![CDATA[<p>item 1 content</p>]]></rm:body> <rm:media_html><![CDATA[<img src="http://path.to/image.jpg" />]]></rm:media_html> <rm:credit><![CDATA[John Nash]]></rm:credit> <rm:caption><![CDATA[a description for that image]]><rm:caption> </rm:item> <rm:item> <rm:headline>item 2 headline</rm:headline> <rm:body><![CDATA[<p>item 2 content</p>]]></rm:body> <rm:media_html><![CDATA[<iframe src="http://path.to/video"></iframe>]]></rm:media_html> <rm:credit><![CDATA[John Brown]]></rm:credit> <rm:caption><![CDATA[a description for that video]]><rm:caption> </rm:item> </rm:listicle> <rm:status>draft</rm:status> </entry>
URL Patterns and Pagination
In order for RebelMouse to be able to ingest your content, you must expose it through a standardized pattern of URLs and pagination.
Depending on your format, you should expose your API endpoint with one of the corresponding file extensions:
- https://example.com/path/to/your/api.json
- https://example.com/path/to/your/api.rss
- https://example.com/path/to/your/api.xml
You should order your items from newest to oldest and paginate through the page GET parameter, starting from 0. Using the JSON format as an example:
- https://example.com/path/to/your/api.json?page=0
- https://example.com/path/to/your/api.json?page=1
- https://example.com/path/to/your/api.json?page=2
Each page should have exactly 10 items.
We recommend that you protect your API with HTTP authentication and HTTPS so that RebelMouse can use your API this way:
- https://user:password@example.com/path/to/your/api.json?page=N