
Company News
Socket Named Top Sales Organization by RepVue
Socket won two 2026 Reppy Awards from RepVue, ranking in the top 5% of all sales orgs. AE Alexandra Lister shares what it's like to grow a sales career here.
hexo-generator-json-content
Advanced tools
Hexo plugin to generate a JSON file with the contents of posts and pages to generic use or consumption, like AJAX site search, Twitter typehead or public content API
Hexo (https://hexo.io/) plugin to generate a JSON file for generic use or consumption with the contents of posts and pages.
It's useful to serve compact and agile content data for microservices like AJAX site search, Twitter typeahead or public API.
It is now possible to:
ignore settings are a bit different now. It expects to receive one or two lists: paths and tags.
npm i -S hexo-generator-json-content
Hexo will run the generator automagically when you run hexo serve or hexo generate. :smirk:
Using the default settings, the content.json file looks like the following structure:
meta: {
title: hexo.config.title,
subtitle: hexo.config.subtitle,
description: hexo.config.description,
author: hexo.config.author,
url: hexo.config.url
},
pages: [{ //-> all pages
title: page.title,
slug: page.slug,
date: page.date,
updated: page.updated,
comments: page.comments,
permalink: page.permalink,
path: page.path,
excerpt: page.excerpt, //-> only text ;)
keywords: null, //-> it needs settings
text: page.content, //-> only text minified ;)
raw: page.raw, //-> original MD content
content: page.content, //-> final HTML content
author: page.author
}],
posts: [{ //-> only published posts
title: post.title,
slug: post.slug,
date: post.date,
updated: post.updated,
comments: post.comments,
permalink: post.permalink,
path: post.path,
excerpt: post.excerpt, //-> only text ;)
keywords: null, //-> it needs settings
text: post.content, //-> only text minified ;)
raw: post.raw, //-> original MD content
content: post.content, //-> final HTML content
author: post.author,
categories: [{
name: category.name,
slug: category.slug,
permalink: category.permalink
}],
tags: [{
name: tag.name,
slug: tag.slug,
permalink: tag.permalink
}]
}]
hexo.util.stripHTML is used to get only clean text for excerpt and text fields.
You can customize settings in _config.yml.
Default settings are:
jsonContent:
meta: true
dafts: false
file: content.json
keywords: undefined
dateFormat: undefined
pages:
title: true
slug: true
date: true
updated: true
comments: true
path: true
link: true
permalink: true
excerpt: true
keywords: false
text: true
raw: false
content: false
author: true
posts:
title: true
slug: true
date: true
updated: true
comments: true
path: true
link: true
permalink: true
excerpt: true
keywords: false
text: true
raw: false
content: false
author: true
categories: true
tags: true
keywords options extracts keywords from excerpt.
Setting the root keywords option will automatically reflect to pages.keywords and posts.keywords. But you can ignore one by setting it to false explicitly.
It is powered by michaeldelorenzo/keyword-extractor, NPM package to create a keywords array from a string by removing stopwords.
So, the setting value should be a valid language from its options parameters.
# exemple
jsonContent:
meta: true
keywords: french
If it don't support your language, no worry! It's disabled by default.
dateFormat option sets an output format for datetime objects date and updated.
It is powered by moment, so any string accepted by format method can be used.
# exemple
jsonContent:
meta: true
dateFormat: DD/MM/YYYY
If not defined, default format is the JSON.stringify result for Date objects.
By default, the JSON output includes meta, pages and posts sections. If only one of these sections is enabled by config, the json output will consist of a single array.
For example, the following config enables only posts, showing title, date, path, and text fields:
# exemple
jsonContent:
meta: false
pages: false
posts:
title: true
date: true
path: true
text: true
raw: false
content: false
slug: false
updated: false
comments: false
link: false
permalink: false
excerpt: false
categories: false
tags: false
author: false
The result JSON will look like this:
[{ //-> only published posts
title: post.title,
date: post.date,
text: post.content, //-> only text minified ;)
path: post.path
}]
You can exclude meta, pages or posts contents from output JSON by setting meta, pages, or posts to false.
To exclude individual fields from pages or posts output, set its config values to false.
By default, drafts are automatically skipped from indexing.
If you want to include drafts, set drafts: true:
# exemple
jsonContent:
drafts: true
Any post or page protected with password will be automatically skipped from indexing.
You can also exclude a specific post or page by setting hidden: true on front-matter.
To exclude specific paths or tags, use ignore lists. Any path or tag which contains at least one of the listed substrings will be skipped from indexing. For example:
# exemple
jsonContent:
ignore:
paths:
- path/to/a/page
- url/to/one/post
- an-entire-category
- specific.file
- .ext # a file extension
tags:
- tag1
- tag2
Also, you can set hidden: false to override all the rules mentioned above.
By default, the output file is content.json, but is possible to customize the file name:
# exemple
jsonContent:
file: custom-file-name.json
FAQs
Hexo plugin to generate a JSON file with the contents of posts and pages to generic use or consumption, like AJAX site search, Twitter typehead or public content API
The npm package hexo-generator-json-content receives a total of 1,022 weekly downloads. As such, hexo-generator-json-content popularity was classified as popular.
We found that hexo-generator-json-content demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Company News
Socket won two 2026 Reppy Awards from RepVue, ranking in the top 5% of all sales orgs. AE Alexandra Lister shares what it's like to grow a sales career here.

Security News
NIST will stop enriching most CVEs under a new risk-based model, narrowing the NVD's scope as vulnerability submissions continue to surge.

Company News
/Security News
Socket is an initial recipient of OpenAI's Cybersecurity Grant Program, which commits $10M in API credits to defenders securing open source software.