{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreihkrlvcn7244uv6veaksq2zlzf2usqvf5vbhaptvrsn7jcshuk7rq",
"commit": {
"cid": "bafyreidjl5eqvghheeekdpincct5hfe65gqnocxvrgaaukhsr2abagprne",
"rev": "3mmrr72cyz52o"
},
"uri": "at://did:plc:6z5botgrc5vekq7j26xnvawq/app.bsky.feed.post/3mmrr72bbds2k",
"validationStatus": "valid"
},
"content": {
"$type": "pub.leaflet.content",
"pages": [
{
"$type": "pub.leaflet.pages.linearDocument",
"blocks": [
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.image",
"alt": "lego bricks - source: https://p.kagi.com/proxy/178378-colorful-LEGO-bricks-toys.jpg?c=5Y3nJsRGiNoV2MxZNTLMPwUrxfq9AOV9shuawkoyocY1L_xvfXoD3C7IG17yz3dZx8bbJwz4sar9EXquMueo3WSXfd8qq3r-KXayZFoeBUmN8zxRNsRaPSx0uCZV0RovZRhL5ssJTi6PMX0-OXlE4A%3D%3D",
"aspectRatio": {
"height": 1080,
"width": 1920
},
"image": {
"$type": "blob",
"ref": {
"$link": "bafkreibxmcg3nf7aiouqefa2ybfqg27ijvnryml555gil46ujj7idioemu"
},
"mimeType": "image/webp",
"size": 454688
}
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"alignment": "lex:pub.leaflet.pages.linearDocument#textAlignCenter",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
],
"index": {
"byteEnd": 35,
"byteStart": 0
}
},
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
},
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://p.kagi.com/proxy/178378-colorful-LEGO-bricks-toys.jpg?c=5Y3nJsRGiNoV2MxZNTLMPwUrxfq9AOV9shuawkoyocY1L_xvfXoD3C7IG17yz3dZx8bbJwz4sar9EXquMueo3WSXfd8qq3r-KXayZFoeBUmN8zxRNsRaPSx0uCZV0RovZRhL5ssJTi6PMX0-OXlE4A%3D%3D"
}
],
"index": {
"byteEnd": 41,
"byteStart": 35
}
},
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
],
"index": {
"byteEnd": 42,
"byteStart": 41
}
}
],
"plaintext": "Lego - the ultimate plugin system (source)",
"textSize": "small"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
],
"index": {
"byteEnd": 109,
"byteStart": 105
}
}
],
"plaintext": "I've recently been getting back into using Obsidian after a years long hiatus mostly using Logseq and -- gulp -- Apple Notes."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "While Obsidian comes with some great features and \"core plugins\" out-of-the-box, a big part of my re-onboarding experience has been customizing the environment with community plugins to fit my specific needs: exporting flashcards to anki with custom templates, converting kindle highlights to obsidian notes, setting up kanban boards, directory navigation enhancements, etc."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
],
"index": {
"byteEnd": 144,
"byteStart": 136
}
},
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://notes.wesleyfinck.org/3mljuu3o43k2k"
}
],
"index": {
"byteEnd": 190,
"byteStart": 157
}
},
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
],
"index": {
"byteEnd": 265,
"byteStart": 258
}
}
],
"plaintext": "This process is trial-and-error: I search for existing plugins and test them out to see how they work. If I like them, I'll continue to practice using them (tools are best paired with habits). If not, I remove it and look for another. If I really can't find exactly what I'm looking for it's not a deal-breaker for Obsidian. I could always try building my own obsidian plugin or, since all the data in stored locally and formatted as (obsidian-flavoured) markdown, I could build/use any kind of program that can access local, easy-to-read/manipulate files."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "The key point is that much of the functionality that makes Obsidian so valuable doesn't come from the core Obsidian team."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
],
"index": {
"byteEnd": 223,
"byteStart": 205
}
}
],
"plaintext": "I expect that if the atproto ecosystem continues to mature, we'll find ourselves in an analogous situation as the Obsidian ecosystem does -- except the community plugins won't be for a single app, but the ecosystem at large."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "We're already catching glimpses of this future."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#didMention",
"did": "did:plc:7qktq2csymlprtxrkgdchy3s"
}
],
"index": {
"byteEnd": 32,
"byteStart": 20
}
},
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://bsky.app/profile/vicwalker.dev.br/post/3ml5mdg2yrk2f"
}
],
"index": {
"byteEnd": 142,
"byteStart": 132
}
},
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#didMention",
"did": "did:plc:fip3nyk6tjo3senpq4ei2cxw"
}
],
"index": {
"byteEnd": 203,
"byteStart": 186
}
},
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://airglow.run/u/accio.blue/3mmiupbwykk22"
}
],
"index": {
"byteEnd": 247,
"byteStart": 239
}
},
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#didMention",
"did": "did:plc:rljif32vldjxbs3guprqal6h"
}
],
"index": {
"byteEnd": 302,
"byteStart": 291
}
}
],
"plaintext": "Emerging tools like @airglow.run allow anyone to create atproto automations -- protocol plugins, really. For example, automatically converting stars of Tangled repos to Semble cards (by @vicwalker.dev.br) or taking any liked bsky post and creating Semble cards for any links in the post (by @accio.blue)."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://notes.wesleyfinck.org/3maq3h26ook2h"
}
],
"index": {
"byteEnd": 109,
"byteStart": 54
}
},
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#didMention",
"did": "did:plc:re3ebnp5v7ffagz6rb6xfei4"
}
],
"index": {
"byteEnd": 261,
"byteStart": 247
}
}
],
"plaintext": "These kinds of conversions enable customized forms of interoperability without apps needing to share lexicons or coordinate on standards, which can be a time consuming and difficult process (especially if the domain is not yet well established -- @standard.site being a great example of when lexicon standardization makes sense)."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#link",
"uri": "https://webtil.es/"
}
],
"index": {
"byteEnd": 114,
"byteStart": 105
}
},
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#didMention",
"did": "did:plc:mdg3w2kpadcyxy33pizokzf3"
}
],
"index": {
"byteEnd": 128,
"byteStart": 119
}
}
],
"plaintext": "On top of tools like airglow, there are emerging tools around interactive embeddings and components like webtil.es and @inlay.at. Both of which can empower community members to not only build protocol plugins at the data-layer, but at the interface-layer -- whether completely separate apps or embedded widgets in existing apps."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "It's not hard to imagine a future where new users of the open social web can be greeted with countless plugins to customize their own information environments, just like with Obsidian. Except they aren't limited to a single app but instead an entire protocol-based ecosystem."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"facets": [
{
"features": [
{
"$type": "pub.leaflet.richtext.facet#italic"
}
],
"index": {
"byteEnd": 7,
"byteStart": 5
}
}
],
"plaintext": "This is a post-app paradigm."
}
}
],
"id": "019e65ce-775a-7bb5-bf1e-fcadc82fca12"
}
]
},
"description": "Bridging the interop gap and addressing the long-tail of user needs",
"path": "/3mmrr6uuqtk2k",
"publishedAt": "2026-05-26T19:49:03.314Z",
"site": "at://did:plc:6z5botgrc5vekq7j26xnvawq/site.standard.publication/3ly4c4cmyn22t",
"tags": [],
"title": "Ecosystem Plugins"
}