A long-lived project that still receives updates
Embed beautiful, responsive post cards in your Jekyll site using a simple Liquid tag. Works with both internal Jekyll posts and external URLs. Automatically fetches metadata including title, description, and images.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
 Dependencies

Development

~> 2.0
~> 5.0
~> 13.0
~> 3.18

Runtime

>= 3.7, < 5.0
~> 1.5
~> 1.15
 Project Readme

Jekyll Post Card

Gem Version Demo

A Jekyll plugin to display beautiful, responsive post cards in your Markdown. Works with both internal Jekyll posts and external URLs.

📺 View Live Demo

Features

  • 📝 Internal Posts - Link to posts within your Jekyll site using permalinks
  • 🌐 External URLs - Automatically fetches metadata (title, description, image) from any URL
  • 🎨 Multiple Variants - Default, compact, and vertical card layouts
  • 🌙 Theme Support - Built-in light and dark theme CSS variables
  • 📱 Responsive - Cards look great on all screen sizes
  • Open Graph & Twitter Cards - Extracts metadata from standard meta tags

Installation

Add this line to your application's Gemfile:

gem 'jekyll-post-card'

And then execute:

bundle install

Or install it yourself:

gem install jekyll-post-card

Then add the plugin to your _config.yml:

plugins:
  - jekyll-post-card

Usage

Basic Usage

Internal post (by permalink):

{% post_card /2024/01/15/my-awesome-post %}

External URL:

{% post_card https://dev.to/example/great-article %}

Variants

Compact card:

{% post_card /my-post variant:compact %}

Vertical card:

{% post_card /my-post variant:vertical %}

Options

Hide the image:

{% post_card /my-post hide_image:true %}

You can combine options:

{% post_card /my-post variant:compact hide_image:true %}

Styling

The plugin automatically copies post-card.css to your site's assets/css/ folder during build.

Add the CSS to your layout:

<link rel="stylesheet" href="{{ '/assets/css/post-card.css' | relative_url }}">

Or import it in your main SCSS file:

@import "post-card";

The CSS uses CSS variables for easy theming:

:root {
  --post-card-bg: #ffffff;
  --post-card-bg-hover: #fff8f0;
  --post-card-text: #2d2a26;
  --post-card-text-secondary: #5a5650;
  --post-card-text-muted: #8a8680;
  --post-card-accent: #d35400;
  --post-card-border: rgba(211, 84, 0, 0.15);
  --post-card-shadow: rgba(45, 42, 38, 0.12);
  --post-card-placeholder-bg: #f0ebe3;
}

For dark mode, add the .dark class to your body or a parent element, or override the variables.

Post Front Matter

For internal posts, the plugin reads these front matter fields:

---
title: "My Post Title"
excerpt: "A short description of the post"
image: "/images/featured.jpg"  # or thumbnail, og_image
date: 2024-01-15
---

Grid Layouts

Display multiple cards side by side using CSS Grid:

<div style="display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px;">
  {% post_card /post-one %}
  {% post_card /post-two %}
</div>

Demo

View the live demo →

Or open demo.html locally in your browser to see all card variants and layouts.

Development

After checking out the repo, run bundle install to install dependencies.

Run tests:

bundle exec rake test

Build the gem:

gem build jekyll-post-card.gemspec

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/r0x0d/jekyll-post-card.

License

The gem is available as open source under the terms of the MIT License.