Files
plainleaf/docs/Knowledge Base.md

81 lines
3.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
tags: guide
references:
- libraries/Library/Std/Pages/Space Overview.md
---
This guide walks you through building a personal knowledge base with SilverBullet. You’ll learn how pages, links, tags, queries, and transclusions work together to create an interconnected web of knowledge.
> **note** Note
> This workflow works well with [[Journal]], where you link out to knowledge base topic pages from your journal pages.
# Create your first topic pages
Start with 3–4 “topic pages” on topics you know well: a programming language, a recipe, a book you've read. Open the [[Page Picker]] (`Cmd-k` / `Ctrl-k`), type a name, and press Enter.
Keep each page focused on one topic. A page about “Rust” covers Rust. A page about “Ownership” covers ownership. This topic page approach makes pages easy to link and reuse.
Write freely — a paragraph or two is enough to get started.
# Link as you write
As you write on one page, naturally reference another. Type `[[` and SilverBullet autocompletes page names:
```markdown
Rust's [[Ownership]] model prevents data races at compile time.
```
Don’t worry about organizing pages into a folder structure, just put everything at the top level (see [[Best Practices]]). Just write and link. Structure emerges from connections.
# Discover connections via backlinks
Navigate to one of your linked pages (click a `[[link]]` or use the Page Picker). Scroll to the bottom and look for the [[Linked Mention]] section.
This shows every page that links _to_ the current page — connections you didn't have to manually create. For example, your “Ownership” page will show that your “Rust” page mentions it.
This is how a knowledge base builds itself: write naturally, link as you go, and let linked mentions surface the connections.
# Add structure when useful
When you want to categorize or query pages, add some structure.
[[Markdown/Hashtags]] on an empty line tag the page (see [[Markdown/Hashtags#Scope rules]]):
```markdown
#concept
```
**[[Frontmatter]]** at the top of a page adds structured data and also be used as an alternative way to attach tags to a page:
```yaml
---
tags: book
author: Italo Calvino
status: reading
---
```
Now this page is tagged `book` and has queryable `author` and `status` attributes. You can add tags to a page either with the `#book` syntax, or via a [[Frontmatter]] attribute.
# Query your knowledge
[[Space Lua/Integrated Query]] lets you pull live data from your pages. Create a “Currently Reading” page with a query:
```lua
${query[[
from b = index.pages("book")
where b.status == "reading"
order by b.lastModified desc
select templates.pageItem(b)
]]}
```
See [[Template]] for more rendering options.
# Embed content across pages
Use [[Transclusions]] to pull content from one page into another. For instance on your [[Index Page]], transclude your “Currently Reading” page:
```markdown
![[Currently Reading]]
```
# What's next?
You now have the core pattern: create pages, link them, add structure with tags and frontmatter, and query across your space.
* [[Journal]] — set up a daily journal
* [[Guide/Task Management]] — track projects and tasks
* [[Manual]] — the full user manual