126 lines
4.6 KiB
Markdown
126 lines
4.6 KiB
Markdown
# Threadwell
|
|
|
|
Recovered threads and submerged records.
|
|
|
|
An [Obsidian](https://obsidian.md) vault published with [Quartz 5](https://quartz.jzhao.xyz) to GitHub Pages. The site is a convenient host for Twitter/X threads and other material that is not reliably web-indexed.
|
|
|
|
Live (after Pages is enabled): https://ed94.github.io/Threadwell
|
|
|
|
## Layout
|
|
|
|
Open **this repo root** as the Obsidian vault. Quartz is only the publisher; it lives in `site/`.
|
|
|
|
```
|
|
archive/ # public — primary sources
|
|
threads/ # Twitter/X and similar
|
|
sources/ # talks, pages, other records
|
|
canvases/ # public — .canvas maps
|
|
notes/ # public — authored / distilled writing
|
|
templates/ # not published
|
|
meta/ # not published — conventions, local attachments
|
|
private/ # not published, not pushed
|
|
publish/ # tracked overlay: quartz.config.yaml
|
|
site/ # local Quartz clone (gitignored; own remotes)
|
|
.obsidian/
|
|
.github/workflows/deploy.yml
|
|
```
|
|
|
|
`archive/`, `canvases/`, and `notes/` are public by default. `site/` is a separate git checkout of Quartz (`origin` → `jackyzha0/quartz`). Threadwell's only remote is `Ed94/Threadwell`.
|
|
|
|
## Frontmatter
|
|
|
|
| Field | Values |
|
|
| --- | --- |
|
|
| `type` | `archive` \| `canvas` \| `note` |
|
|
| `source` | `twitter` \| `youtube` \| `odysee` \| `article` \| `original` \| `other` |
|
|
| `source_url` | original URL |
|
|
| `author` | original author |
|
|
| `date` | original date `YYYY-MM-DD` |
|
|
| `archived` | capture date |
|
|
| `status` | `draft` \| `review` \| `published` |
|
|
| `draft` | `true` omits the page from the site |
|
|
| `tags`, `description`, `aliases` | as usual |
|
|
|
|
`draft: true` only hides a page from the **site**. A public GitHub repo still contains the file. Use `private/` for anything that must not be pushed.
|
|
|
|
Templates: `templates/archive-source.md`, `templates/authored-note.md` (Templater placeholders).
|
|
|
|
## Images and embeds
|
|
|
|
Images: absolute HTTPS URLs on your image host. Do not commit local binaries for published notes.
|
|
|
|
```md
|
|

|
|
```
|
|
|
|
YouTube and tweets (Quartz Obsidian-flavored Markdown):
|
|
|
|
```md
|
|

|
|

|
|
```
|
|
|
|
Odysee (iframe; copy the embed URL from Odysee share):
|
|
|
|
```html
|
|
<iframe width="560" height="315" src="https://odysee.com/$/embed/SLUG/CLAIM" allowfullscreen></iframe>
|
|
```
|
|
|
|
Remote URLs and iframes are left as-is in the static build.
|
|
|
|
## Obsidian plugins
|
|
|
|
| Plugin | Why |
|
|
| --- | --- |
|
|
| **Templater** | Fills dates/titles in the starter templates |
|
|
| **Dataview** | Local queries by `type` / `source` / `status` (not rendered on the site) |
|
|
| **Linter** | Consistent YAML |
|
|
| **Media Extended** | Better in-vault YouTube playback |
|
|
| **Advanced Canvas** | Stronger canvas editing; site still uses stock JSON Canvas |
|
|
|
|
Core: Canvas, Templates (folder `templates`), Backlinks, Graph, Properties, Page preview.
|
|
|
|
See `meta/obsidian-setup.md` and `meta/conventions.md`.
|
|
|
|
## Local preview
|
|
|
|
Needs Node 22+ and npm 10.9.2+.
|
|
|
|
```powershell
|
|
cd C:\projects\Threadwell
|
|
.\publish\setup.ps1
|
|
cd site
|
|
npx quartz build -d .. --serve
|
|
```
|
|
|
|
Open http://localhost:8080
|
|
|
|
`publish/setup.ps1` clones Quartz into `site/` if needed, then copies `publish/quartz.config.yaml` over the stock config.
|
|
|
|
## GitHub Pages
|
|
|
|
1. Repo Settings → Pages → Source: **GitHub Actions**
|
|
2. If an old `github-pages` environment blocks the first deploy, delete it under Settings → Environments. The workflow recreates it.
|
|
3. Push `main`. CI clones Quartz into `site/`, applies `publish/quartz.config.yaml`, builds with `-d ..`.
|
|
4. Site: `https://ed94.github.io/Threadwell`
|
|
|
|
`baseUrl` lives in `publish/quartz.config.yaml`. Change it if you attach a custom domain.
|
|
|
|
## Add content and republish
|
|
|
|
1. New thread: Templater → `archive-source` → save under `archive/threads/`
|
|
2. Transcribe posts in order. Host images. Optional YouTube/Odysee/tweet embeds.
|
|
3. Distill in `notes/` with `authored-note`. Wikilink the archive record.
|
|
4. Set `draft: false` and `status: published`
|
|
5. Preview: `cd site; npx quartz build -d .. --serve`
|
|
6. Commit and push `main` (vault + `publish/`, never `site/`)
|
|
|
|
Threadwell remotes: `origin` → https://github.com/Ed94/Threadwell.git only.
|
|
Quartz remotes live in `site/` (`cd site; git pull`). After a Quartz pull, re-copy `publish/quartz.config.yaml`.
|
|
|
|
## Quartz notes
|
|
|
|
Current major is **Quartz 5**. Edit `publish/quartz.config.yaml`, not the clone. Canvas uses `@quartz-community/canvas-page`. Drafts use `@quartz-community/remove-draft`.
|
|
|
|
Engine license: MIT (Quartz). Vault content: Unlicense (`LICENSE`).
|