more prep.

This commit is contained in:
ed committed 2026-08-23 13:19:35 -04:00
1 parent c53f40e604
commit 20d5ea092d
10 files changed
+104 -44

No files matched your search

+15 -8
View File
@@ -12,12 +12,15 @@ Open **this repo root** as the Obsidian vault. Quartz is only the publisher; it
```
archive/ # public — primary sources
threads/ # Twitter/X and similar
threads/<handle>/<YYYY-MM-DD-slug>/
# one thread: index.md is the author's chain
sources/ # talks, pages, other records
canvases/ # public — .canvas maps
notes/ # public — authored / distilled writing
templates/ # not published
meta/ # not published — conventions, local attachments
meta/ # not published — conventions
assets/ # not published, gitignored — working media
secrets/ # not published, gitignored — cookies, host keys
private/ # not published, not pushed
publish/ # tracked overlay: quartz.config.yaml
site/ # local Quartz clone (gitignored; own remotes)
@@ -34,7 +37,9 @@ site/ # local Quartz clone (gitignored; own remotes)
| `type` | `archive` \| `canvas` \| `note` |
| `source` | `twitter` \| `youtube` \| `odysee` \| `article` \| `original` \| `other` |
| `source_url` | original URL |
| `author` | original author |
| `author` | original display name |
| `handle` | username without `@` |
| `post_id` | Twitter status id |
| `date` | original date `YYYY-MM-DD` |
| `archived` | capture date |
| `status` | `draft` \| `review` \| `published` |
@@ -50,9 +55,11 @@ Templates: `templates/archive-source.md`, `templates/authored-note.md` (Template
Images: absolute HTTPS URLs on your image host. Do not commit local binaries for published notes.
```md
![](https://YOUR-IMAGE-HOST/archive/slug.png)
![](https://files.catbox.moe/example.png)
```
Keep local copies in `assets/` (not committed). Do not point notes at `assets/` or `./media/`.
YouTube and tweets (Quartz Obsidian-flavored Markdown):
```md
@@ -108,12 +115,12 @@ Open http://localhost:8080
## 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.
1. New thread: create `archive/threads/<handle>/<YYYY-MM-DD-slug>/`. Templater → `archive-source` → save as `index.md` (the author's chain). Off-spine replies get their own notes in that folder. See `notes/How threads are organized.md`.
2. Transcribe posts in order. Upload images to the image host; paste HTTPS URLs. Optional YouTube/Odysee/tweet embeds.
3. Distill in `notes/` with `authored-note`. Wikilink the archive record.
4. Set `draft: false` and `status: published`
4. Set `draft: false` and `status: published` when the capture has been reviewed.
5. Preview: `cd site; npx quartz build -d .. --serve`
6. Commit and push `main` (vault + `publish/`, never `site/`)
6. Commit and push `main` (vault + `publish/`, never `site/`, never `assets/` or `secrets/`)
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`.
+9 -5
View File
@@ -4,6 +4,8 @@ type: archive
source: twitter
source_url: https://x.com/
author: ""
handle: ""
post_id: ""
date: 2026-08-22
archived: 2026-08-22
status: published
@@ -12,13 +14,14 @@ tags:
- archive
- twitter
- how-to
description: Worked example of an archived thread note. Replace this when real threads land.
description: Worked example of a spine note. Real threads use a folder per thread.
aliases:
- example-thread
in_reply_to: ""
---
> [!info] Provenance
> Replace this file with a real thread. The shape is what matters: frontmatter, then posts in order, then optional media.
> Stub for the note shape. A real thread is a folder: `archive/threads/<handle>/<YYYY-MM-DD-slug>/index.md` plus optional branch notes. See [[How threads are organized]].
## Source
@@ -36,13 +39,13 @@ aliases:
## Media
Images use absolute URLs on the image host:
Images use absolute HTTPS URLs:
```md
![](https://YOUR-IMAGE-HOST/archive/example.png)
![](https://files.catbox.moe/example.png)
```
Optional live tweet (not a substitute for the transcript):
A live tweet embed is optional and is not the archive:
```md
![](https://x.com/user/status/123)
@@ -50,4 +53,5 @@ Optional live tweet (not a substitute for the transcript):
## Related
- How folders work: [[How threads are organized]]
- Distilled note: [[What this archive is for]]
+4 -2
View File
@@ -8,6 +8,8 @@ tags:
- archive
---
One note per thread. Transcribe the posts in order. Do not rely on a live embed as the only copy.
Threads are filed by author handle, then by date and title. The main note in each folder is that author's own chain. Replies live beside it.
Example: [[How to archive a thread]]
How to read a folder: [[How threads are organized]].
Example of the note shape (single spine, no branches): [[How to archive a thread]]
+3 -1
View File
@@ -8,6 +8,7 @@
{"id":"canvases","type":"file","file":"canvases/index.md","x":400,"y":-80,"width":280,"height":80},
{"id":"notes","type":"file","file":"notes/index.md","x":400,"y":80,"width":280,"height":100},
{"id":"example-thread","type":"file","file":"archive/threads/How to archive a thread.md","x":760,"y":-40,"width":300,"height":80},
{"id":"how-organized","type":"file","file":"notes/How threads are organized.md","x":1100,"y":-40,"width":320,"height":80},
{"id":"example-note","type":"file","file":"notes/What this archive is for.md","x":760,"y":80,"width":300,"height":80}
],
"edges":[
@@ -19,6 +20,7 @@
{"id":"e6","fromNode":"archive","fromSide":"right","toNode":"sources","toSide":"left"},
{"id":"e7","fromNode":"threads","fromSide":"bottom","toNode":"example-thread","toSide":"top"},
{"id":"e8","fromNode":"notes","fromSide":"right","toNode":"example-note","toSide":"left"},
{"id":"e9","fromNode":"example-thread","fromSide":"bottom","toNode":"example-note","toSide":"top","label":"distills"}
{"id":"e9","fromNode":"example-thread","fromSide":"bottom","toNode":"example-note","toSide":"top","label":"distills"},
{"id":"e10","fromNode":"example-thread","fromSide":"right","toNode":"how-organized","toSide":"left","label":"folder shape"}
]
}
+1
View File
@@ -12,5 +12,6 @@ An archive of material that is not reliably web-indexed: Twitter/X threads, talk
- [[archive/index|Archive]] — objective records of threads and other sources
- [[canvases/index|Canvases]] — maps and relationship diagrams
- [[notes/index|Notes]] — authored essays and syntheses
- [[How threads are organized]] — how a thread folder is laid out
Start a new record from the templates in `templates/`. Public folders publish by default; set `draft: true` to keep a note off the site.
+15 -8
View File
@@ -10,16 +10,20 @@ draft: true
| Field | Values | Notes |
| --- | --- | --- |
| `type` | `archive` \| `canvas` \| `note` | Required |
| `source` | `twitter` \| `youtube` \| `odysee` \| `article` \| `original` \| `other` | Archive + media notes |
| `source_url` | URL | Canonical original |
| `author` | string | Original author, not you |
| `source` | `twitter` \| `discord` \| `youtube` \| `odysee` \| `article` \| `original` \| `other` | Archive + media notes |
| `source_url` | URL | This note's post, not always the thread root |
| `author` | string | Display name |
| `handle` | string | Username without `@` |
| `post_id` | string | Twitter status id (spine root or branch root) |
| `date` | `YYYY-MM-DD` | Original publication date |
| `archived` | `YYYY-MM-DD` | When you captured it |
| `status` | `draft` \| `review` \| `published` | Human workflow |
| `draft` | `true` \| `false` | Quartz omit-from-site flag |
| `tags` | list | Prefer `archive`, `twitter`, `note`, topic slugs |
| `tags` | list | Ingest: `archive`, `twitter`, handle. Topics by hand |
| `description` | string | Search / OG preview |
| `aliases` | list | Extra names |
| `in_reply_to` | string | Foreign parent of a spine, if any |
| `parent_post_id` | string | Branch notes only: post this branch replies to |
`draft: true` hides the page from the built site. It does **not** hide the file from a public GitHub repo. Truly private material goes in `private/` (gitignored).
@@ -28,24 +32,27 @@ draft: true
| Path | Published | Role |
| --- | --- | --- |
| `archive/` | yes | Primary sources |
| `archive/threads/<handle>/<YYYY-MM-DD-slug>/` | yes | One Twitter thread. `index.md` is the author's chain |
| `canvases/` | yes | `.canvas` maps |
| `notes/` | yes | Authored writing |
| `templates/` | no | Templater / core templates |
| `meta/` | no | Vault rules, local attachments |
| `assets/` | no, gitignored | Working media before upload |
| `secrets/` | no, gitignored | Cookies and image-host credentials |
| `private/` | no, gitignored | Never publish, never push |
| `site/` | no, gitignored | Local Quartz clone (own remotes) |
| `publish/` | no | Tracked Quartz overlay |
A thread folder holds `index.md` (spine) and one markdown file per off-spine reply tree. Reading guide: `notes/How threads are organized.md`.
# Images
Always absolute HTTPS URLs on the image host. Do not commit local binaries for published notes.
Always absolute HTTPS URLs on the image host (catbox after upload). Do not commit local binaries for published notes. Working files sit in `assets/` (gitignored), not in `meta/attachments/` except unrelated Obsidian drops.
```md
![](https://YOUR-IMAGE-HOST/archive/slug.png)
![](https://files.catbox.moe/example.png)
```
Scratch files may sit in `meta/attachments/` (gitignored).
# Video
YouTube / tweet (Quartz OFM):
+44
View File
@@ -0,0 +1,44 @@
---
title: How threads are organized
type: note
source: original
date: 2026-08-23
status: published
draft: false
tags:
- note
- how-to
description: How archived Twitter/X threads are filed and read.
---
Threads are grouped by **author handle**, then by **date and a short title**.
```
archive/threads/<handle>/<YYYY-MM-DD-slug>/
index.md ← the author's own chain (the spine)
YYYY-MM-DD-who-slug.md ← one file per reply that left that chain
```
## Spine
`index.md` is only what the author posted as a single chain: each post replies to the previous one of theirs. Posts are numbered **1/** **2/** in that order. Other people do not appear in this numbering.
If the first post is a reply to someone else, that other tweet is quoted at the top as context. It is not numbered as part of the spine.
## Branches
A reply from someone else, or a second chain the author started from an earlier post, is its own note in the same folder. Follow-ups on that reply stay in that note, including if the original author answers there.
The spine links out under the post that grew the branch. Each branch note links back to `index`.
## Tags
Every imported thread starts with `archive`, `twitter`, and the author's handle. Topic tags (`vulkan`, `crt`, `alsa`, …) are added by hand when the thread is reviewed.
## Images
Pictures on the site are ordinary HTTPS URLs. Working copies of files live outside what GitHub Pages serves. A note that is still being prepared is marked `draft: true` and does not appear on the site.
## Reading
Start at [[archive/threads/index|Threads]], pick a handle, then a date. The spine is the essay. Branch files are the conversation around it.
+3 -1
View File
@@ -21,6 +21,8 @@ Threadwell holds material that search engines and platform pages do not keep rel
| `notes/` | Your writing. What it means. |
| `canvases/` | Spatial maps between the two. |
An authored note should [[How to archive a thread|link the archive record]] instead of pasting the thread again.
How a thread is filed: [[How threads are organized]].
An authored note should wikilink the archive record instead of pasting the thread again.
Set `draft: true` until a note is ready. `archive/`, `canvases/`, and `notes/` publish otherwise.
+2
View File
@@ -10,3 +10,5 @@ tags: []
Essays and syntheses. Link back to [[archive/index|archive]] records instead of restating the primary source.
Use the `authored-note` template. Example: [[What this archive is for]]
Convention: [[How threads are organized]]
+8 -19
View File
@@ -4,14 +4,19 @@ type: archive
source: twitter
source_url:
author:
handle:
post_id: ""
date: <% tp.date.now("YYYY-MM-DD") %>
archived: <% tp.date.now("YYYY-MM-DD") %>
status: draft
draft: true
tags:
- archive
- twitter
description:
aliases: []
in_reply_to: ""
parent_post_id: ""
---
> [!info] Provenance
@@ -23,26 +28,10 @@ aliases: []
- Author:
- Posted:
## Record
## Thread
**1/**
## Media
```md
![](https://YOUR-IMAGE-HOST/archive/slug.png)
```
YouTube:
```md
![](https://www.youtube.com/watch?v=VIDEO_ID)
```
Odysee:
```html
<iframe width="560" height="315" src="https://odysee.com/$/embed/SLUG/CLAIM" allowfullscreen></iframe>
```
## Related
- Spine: [[index]]