正在加载视频...

视频加载失败

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 次观看 • 3 天前 •via X (Twitter)

41 条评论

kepano 的头像
kepano3 天前

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

Joost Plattel 的头像
Joost Plattel3 天前

It also means "pretty" in Dutch ;-)

Ian Maurer 🧬 的头像
Ian Maurer 🧬3 天前

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 的头像
kepano3 天前

Just add URL to your template!

Ian Maurer 🧬 的头像
Ian Maurer 🧬3 天前

ofc you thought of it.

Pitch 的头像
Pitch3 天前

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 的头像
Spirit of Star3 天前

what makes Knap different than Djot?

kepano 的头像
kepano3 天前

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 的头像
Spirit of Star3 天前

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 的头像
Daniel White3 天前

@round This is crazy man, you’re cooking

Sonion Ring 的头像
Sonion Ring3 天前

@obsdmd So it’s Tera basically

kepano 的头像
kepano3 天前

@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 的头像
Kaleb3 天前

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

John Rood 的头像
John Rood3 天前

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 的头像
Jonathan Laserson3 天前

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) 的头像
☉ Sunny Operator (sol/acc)3 天前

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

R 的头像
R3 天前

Love this!!!

Tristan 📚 的头像
Tristan 📚3 天前

@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⚡️ 的头像
Thord D. Hedengren⚡️3 天前

Intriguing!

Anup Chavan 的头像
Anup Chavan3 天前

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

Eyayaw Beze 的头像
Eyayaw Beze3 天前

why new lang? why not python, r like

kepano 的头像
kepano3 天前

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

Eyayaw Beze 的头像
Eyayaw Beze3 天前

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

🇯🇵 human touched 🇯🇵 的头像
🇯🇵 human touched 🇯🇵3 天前

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

AutoDoc 的头像
AutoDoc3 天前

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

Gregor 的头像
Gregor3 天前

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 的头像
Kevin3 天前

@obsdmd We don’t deserve you

Silas 的头像
Silas3 天前

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

Lux Moreau ✨ 的头像
Lux Moreau ✨3 天前

nice

Remi 的头像
Remi3 天前

i think my claude will like this

beto.group 的头像
beto.group3 天前

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

Mikhail Kashkin 的头像
Mikhail Kashkin3 天前

Love new Jinja templates!

tolliko 的头像
tolliko3 天前

@obsdmd will it be part of obsidian?

Fluxo Consciente 的头像
Fluxo Consciente3 天前

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

François Vaux 的头像
François Vaux3 天前

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 的头像
keshav3 天前

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

Matt Miller 的头像
Matt Miller3 天前

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 的头像
peculiarnewbie3 天前

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

Ian Maurer 🧬 的头像
Ian Maurer 🧬3 天前

Prfect timing! Thsnks :)

Martin Navrátil 的头像
Martin Navrátil3 天前

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

meowy catgirl 的头像
meowy catgirl3 天前

good choice of name

相关视频

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 次观看 • 6 个月前