How can I get a post excerpt in Jekyll?

Something like {{ post.content | strip_html | truncatewords: 50 }} produces a more consistent excerpt. It gets the first 50 words and strips any formatting.


Sure, you can use {{ post.excerpt }} in place of {{ post.content }}.

You can also manually override the automatically generated excerpts if you don't like them.

Full documentation on how to do this here: http://jekyllrb.com/docs/posts/#post-excerpts


To get a custom length excerpt for each post, you can add a excerpt_separator variable in front matter of your post. If you set this variable to <!--end_excerpt-->, then post.excerpt will include all content before <!--end_excerpt-->.

---
excerpt_separator: <!--end_excerpt-->
---

This is included in excerpts.

This is also included in excerpts.

<!--end_excerpt-->

But this is not.

To save yourself the effort of adding excerpt_separator to front matter of each post, you can simply set it in _config.yml.


Use

 {{ post.content | markdownify | strip_html | truncatewords: 50 }}

instead of {{ post.excerpt }} or {{ post.content }}.

This will give consistent length blocks of unformatted text with no raw markdown content in them. Tidy.


Thanks to this comment by @karolis-ramanauskas for the answer, I've made it a proper answer so it can get better visibility.