Loading video...

Video Failed to Load

Go Home

This is Knap. It's a new language I created that turns data into Markdown. The syntax should feel familiar and comes with wonderfully pleasant features to modify and format plain text. Knap is open source. Over a million people already use Knap directly or indirectly because it started as...

225,420 views • 3 days ago •via X (Twitter)

41 Comments

kepano's profile picture
kepano3 days ago

Knap: a simple template language that turns data into Markdown using logic, variables, and filters.

Joost Plattel's profile picture
Joost Plattel3 days ago

It also means "pretty" in Dutch ;-)

Ian Maurer 🧬's profile picture
Ian Maurer 🧬3 days ago

I love that the share button now works with Obsidian, but the one feature of Obsidian Web Clipper that I enjoyed was that it kept the URL in the frontmatter. I actually didn't like many more of the properties that were included, but knowing the URL of the source is super helpful.

kepano's profile picture
kepano3 days ago

Just add URL to your template!

Ian Maurer 🧬's profile picture
Ian Maurer 🧬3 days ago

ofc you thought of it.

Pitch's profile picture
Pitch3 days ago

Everyone builds scrapers, but the real bottleneck is clean data-to-Markdown formatting before context hits an LLM. Piping Defuddle into Knap quietly solves that entire ingestion layer.

Spirit of Star's profile picture
Spirit of Star3 days ago

what makes Knap different than Djot?

kepano's profile picture
kepano3 days ago

They are unrelated in purpose. Djot is an alternative to Markdown. Knap is a templating language to generate Markdown. Though it's not really optimized for that, Knap can also generate Djot.

Spirit of Star's profile picture
Spirit of Star3 days ago

Obsidian ecosystem is extremely interesting, how new things keep being added even though Obsidian does serve it's purpose well, now contributions seemingly are going towards Markdown Ecosystem as a whole

Daniel White's profile picture
Daniel White3 days ago

@round This is crazy man, you’re cooking

Sonion Ring's profile picture
Sonion Ring3 days ago

@obsdmd So it’s Tera basically

kepano's profile picture
kepano3 days ago

@obsdmd Knap's syntax is intentionally designed to feel familiar if you've used Twig, Liquid, Jinja, Tera, etc. But Knap is specifically designed for generating Markdown with frontmatter, so it has many more built-in filters for that purpose and different defaults for whitespace.

Kaleb's profile picture
Kaleb3 days ago

Will you be updating your obsidian skills repo to include Knap? 👀🤔

John Rood's profile picture
John Rood3 days ago

this is a sneaky-good agent primitive: keep structured data as truth, compile only the exact Markdown each run needs, and stop burning context on giant raw JSON blobs.

Jonathan Laserson's profile picture
Jonathan Laserson3 days ago

I read your text and watched the video and I still don't understand what knap is doing. How is the output with all the data generated from the input which is just code?

☉ Sunny Operator (sol/acc)'s profile picture
☉ Sunny Operator (sol/acc)3 days ago

Looks like it's heavily inspired by Jinja + Shopify Liquid

R's profile picture
R3 days ago

Love this!!!

Tristan 📚's profile picture
Tristan 📚3 days ago

@obsdmd Reminds me of Nunjucks, which I used to use a lot with the 11ty static site generator. Nice, I’ll check it out.

Thord D. Hedengren⚡️'s profile picture
Thord D. Hedengren⚡️3 days ago

Intriguing!

Anup Chavan's profile picture
Anup Chavan3 days ago

This will be very useful for my Custom Views plugin. Thanks ❤️

Eyayaw Beze's profile picture
Eyayaw Beze3 days ago

why new lang? why not python, r like

kepano's profile picture
kepano3 days ago

it's not trying to be a full programming language, it's designed to be simple and safe

Eyayaw Beze's profile picture
Eyayaw Beze3 days ago

i see. we don't have to learn new lang anyway thanks to ...

🇯🇵 human touched 🇯🇵's profile picture
🇯🇵 human touched 🇯🇵3 days ago

it can be hard to truly blow our minds in this day and age, but Klap will blow millions... 🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯

AutoDoc's profile picture
AutoDoc3 days ago

Welp, that's more or less what I have been looking for. Seems great!

Gregor's profile picture
Gregor3 days ago

When I built markdown generation for transaction summaries, conditional logic crept into every template until nothing was maintainable. Rewrote it three times before settling on a dumb string builder.

Kevin's profile picture
Kevin3 days ago

@obsdmd We don’t deserve you

Silas's profile picture
Silas3 days ago

This is amazing. Will definitely try and use this in some apps I'm working on.

Lux Moreau ✨'s profile picture
Lux Moreau ✨3 days ago

nice

Remi's profile picture
Remi3 days ago

i think my claude will like this

beto.group's profile picture
beto.group3 days ago

Game changer, most data won't always need to be store location simply knap it Keep up the great work 🫡

Mikhail Kashkin's profile picture
Mikhail Kashkin3 days ago

Love new Jinja templates!

tolliko's profile picture
tolliko3 days ago

@obsdmd will it be part of obsidian?

Fluxo Consciente's profile picture
Fluxo Consciente3 days ago

I cannot find words to describe the amount of amazement i get from kepano... omg

François Vaux's profile picture
François Vaux3 days ago

Any plan on adding custom blocks à-la Nunjucks/Jinja through the API? If so, I'd definitely switch to Knap for my Blueprint Obsidian plugin :D

keshav's profile picture
keshav3 days ago

might as well throw in support to knap on my markdown-graphs lol

Matt Miller's profile picture
Matt Miller3 days ago

dude this is incredibly cool. one thing i love about vue is how conditionals are scoped to the element, so instead of: {% if cast %} {{ cast | sort:"Actor" | table }} {% endif %} it's: {{ if cast | sort:"Actor" | table }} would love a shorthand :)

peculiarnewbie's profile picture
peculiarnewbie3 days ago

Jfc only you will make a language just to make a web clipper. No wonder it's the best web clipper around

Ian Maurer 🧬's profile picture
Ian Maurer 🧬3 days ago

Prfect timing! Thsnks :)

Martin Navrátil's profile picture
Martin Navrátil3 days ago

Bro, that is just jinja with compilation target set to markdown instead of html...

meowy catgirl's profile picture
meowy catgirl3 days ago

good choice of name

Related Videos

I asked Garry Tan how to use meta prompting to get better at AI: "My partners at YC Jared Friedman and Pete Koomen showed me how to do this. You can take almost anything that you do all the time and just drop it into a context window. And then say, “Here’s a bunch of inputs and outputs." And maybe you also add a bunch of notes. And then you tell it, “Write me a prompt that can act as an agent that takes this input and makes this output over here.” You can do this for almost any type of knowledge work. And you can even introspect. "What are things you notice that I did to convert this from the input to the output?”. And then you can just start using the prompt. Initially, it’s going to suck. Because it’s just not that smart yet. But what’s funny is now, I also use it to Iterate my writing. You can be very direct, "I would never say that", "Don’t say it like this", or "Oh, you used the long word there, use the short word". Just speak to it conversationally. And then when you're happy with the output, you can use that new output to make a new prompt. "Based on this conversation, give me a better initial prompt that incorporates all the things we talked about." And you can do this with literally everything. And in theory, there’s so much it applies to that people do day-to-day. You could use it for tweets. You could use it for editing podcasts. You can use it for pretty much everything. I have a folder of prompts that I use all the time. My YouTube prompt is on v27 or something. I'll go through this process with all the different max models. I'll use GPT 5.2 Pro. I’ll use Grok. I'll use Claude. Then, I’ll take all the outputs from all the models and put them into Claude and say "Here’s my prompt, here’s the output from four LLMs, including yourself. Rate each response and tell me what the pros and cons of each approach are." And I usually say "give it to me in numbered form". And then you can agree with one, disagree with two, tell it three is this or that. And then after that, you say given all of this, synthesize it."

The Peel

51,632 views • 6 months ago