
jekyll-structured-content
A Jekyll plugin that generates structured data JSON-LD for posts, pages, projects, and FAQ content — without touching your theme markup.
jekyll-structured-content is a Jekyll plugin that emits clean, standards-compliant JSON-LD structured data from your existing frontmatter — no theme changes required. It handles BlogPosting, WebPage, ProfilePage, CreativeWork, and FAQPage schema types.
Why This Exists
Structured data helps search engines and AI systems understand what your content is, who wrote it, and what questions it answers. Most full SEO plugins bring too much with them — meta tag management, Open Graph, sitemaps. This plugin does one thing: emit valid JSON-LD from your Jekyll frontmatter and leave everything else alone.
Source Code
- GitHub: github.com/jchance/jekyll-structured-content
- RubyGems: rubygems.org/gems/jekyll-structured-content
Installation
Add to your Gemfile:
gem "jekyll-structured-content", "~> 0.2.0"
Add to _config.yml:
plugins:
- jekyll-structured-content
Then run bundle install.
Usage
Place the tag inside a <script> block in your layout:
<script type="application/ld+json">{% schema_json_ld post %}</script>
Supported types: post, page, project.
For FAQ schema, add an faq array to your frontmatter and emit it separately:
<script type="application/ld+json">{% faq_json_ld %}</script>
faq:
- question: "What does this plugin do?"
answer: "It emits JSON-LD structured data from Jekyll frontmatter."
What It Emits
| Tag | Schema type |
|---|---|
{% schema_json_ld post %} |
BlogPosting |
{% schema_json_ld page %} |
WebPage (or ProfilePage for /about/) |
{% schema_json_ld project %} |
CreativeWork |
{% faq_json_ld %} |
FAQPage |
Live Example
This site uses the plugin on every post and project page. Example with both BlogPosting and FAQPage schema:
