prepping
Deploy Quartz site to GitHub Pages / build (push) Canceled after 0s
Deploy Quartz site to GitHub Pages / deploy (push) Canceled after 0s

This commit is contained in:
ed
2026-08-22 18:09:02 -04:00
parent 9761fee1f7
commit c53f40e604
28 changed files with 1012 additions and 0 deletions
+1
View File
@@ -0,0 +1 @@
* text=auto eol=lf
+74
View File
@@ -0,0 +1,74 @@
name: Deploy Quartz site to GitHub Pages
on:
push:
branches:
- main
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout vault
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Checkout Quartz
uses: actions/checkout@v6
with:
repository: jackyzha0/quartz
ref: v5
path: site
- name: Apply publish overlay
run: cp publish/quartz.config.yaml site/quartz.config.yaml
- uses: actions/setup-node@v6
with:
node-version: 24
- name: Cache dependencies
uses: actions/cache@v5
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('site/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- name: Cache Quartz plugins
uses: actions/cache@v5
with:
path: site/.quartz/plugins
key: ${{ runner.os }}-plugins-${{ hashFiles('site/package-lock.json') }}
restore-keys: |
${{ runner.os }}-plugins-
- name: Install Dependencies
working-directory: site
run: npm ci
- name: Install Quartz plugins
working-directory: site
run: npx quartz plugin install --from-config
- name: Build Quartz
working-directory: site
run: npx quartz build -d ..
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: site/public
deploy:
needs: build
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
+17
View File
@@ -0,0 +1,17 @@
.DS_Store
.trash/
.replit
replit.nix
site/
private/*
!private/.gitkeep
meta/attachments/*
!meta/attachments/.gitkeep
.obsidian/workspace.json
.obsidian/workspace-mobile.json
.obsidian/plugins/
.obsidian/themes/
.obsidian/snippets/
+14
View File
@@ -0,0 +1,14 @@
{
"alwaysUpdateLinks": true,
"newFileLocation": "folder",
"newFileFolderPath": "notes",
"attachmentFolderPath": "meta/attachments",
"newLinkFormat": "shortest",
"useMarkdownLinks": false,
"showUnsupportedFiles": true,
"promptDelete": true,
"userIgnoreFilters": [
"site/",
".github/"
]
}
+7
View File
@@ -0,0 +1,7 @@
{
"accentColor": "",
"baseFontSize": 16,
"theme": "obsidian",
"cssTheme": "",
"nativeMenus": false
}
+7
View File
@@ -0,0 +1,7 @@
[
"templater-obsidian",
"dataview",
"obsidian-linter",
"media-extended",
"advanced-canvas"
]
+29
View File
@@ -0,0 +1,29 @@
{
"file-explorer": true,
"global-search": true,
"switcher": true,
"graph": true,
"backlink": true,
"canvas": true,
"outgoing-link": true,
"tag-pane": true,
"footnotes": true,
"properties": true,
"page-preview": true,
"templates": true,
"note-composer": true,
"command-palette": true,
"markdown-importer": true,
"word-count": true,
"file-recovery": true,
"sync": false,
"publish": false,
"webviewer": false,
"slides": false,
"audio-recorder": false,
"workspaces": false,
"slash-command": false,
"editor-status": true,
"bookmarks": true,
"outline": true
}
+32
View File
@@ -0,0 +1,32 @@
{
"collapse-filter": false,
"search": "",
"showTags": true,
"showAttachments": false,
"hideUnresolved": false,
"showOrphans": true,
"collapse-color-groups": false,
"colorGroups": [
{
"query": "path:archive",
"color": {
"a": 1,
"rgb": 14701138
}
},
{
"query": "path:notes",
"color": {
"a": 1,
"rgb": 5431473
}
},
{
"query": "path:canvases",
"color": {
"a": 1,
"rgb": 5431378
}
}
]
}
+3
View File
@@ -0,0 +1,3 @@
{
"folder": "templates"
}
+16
View File
@@ -0,0 +1,16 @@
{
"types": {
"aliases": "aliases",
"tags": "multitext",
"cssclasses": "multitext",
"type": "text",
"source": "text",
"source_url": "text",
"author": "text",
"date": "date",
"archived": "date",
"status": "text",
"draft": "checkbox",
"description": "text"
}
}
+125
View File
@@ -0,0 +1,125 @@
# 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
![](https://YOUR-IMAGE-HOST/archive/slug.png)
```
YouTube and tweets (Quartz Obsidian-flavored Markdown):
```md
![](https://www.youtube.com/watch?v=VIDEO_ID)
![](https://x.com/user/status/ID)
```
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`).
+16
View File
@@ -0,0 +1,16 @@
---
title: Archive
type: note
status: published
draft: false
description: Primary-source records. Not commentary.
tags:
- archive
---
Objective references: scrapes, transcripts, and source notes. Distilled writing lives in [[notes/index|Notes]].
- [[archive/threads/index|Threads]] — Twitter/X and similar sequential posts
- [[archive/sources/index|Sources]] — talks, essays, pages, and other records
Use the `archive-source` template. Keep the source text here; put interpretation in a linked note.
+11
View File
@@ -0,0 +1,11 @@
---
title: Sources
type: note
status: published
draft: false
description: Non-thread primary sources — talks, pages, videos, documents.
tags:
- archive
---
Talks, essays, videos, and other records that are not sequential threads. Same `archive-source` template; set `source` to `youtube`, `odysee`, `article`, or `other`.
@@ -0,0 +1,53 @@
---
title: How to archive a thread
type: archive
source: twitter
source_url: https://x.com/
author: ""
date: 2026-08-22
archived: 2026-08-22
status: published
draft: false
tags:
- archive
- twitter
- how-to
description: Worked example of an archived thread note. Replace this when real threads land.
aliases:
- example-thread
---
> [!info] Provenance
> Replace this file with a real thread. The shape is what matters: frontmatter, then posts in order, then optional media.
## Source
- URL:
- Author:
- Posted:
## Thread
**1/** First post. Copy the text. Do not summarize here.
**2/** Next post. Keep numbering. Preserve links as written.
**3/** Last post.
## Media
Images use absolute URLs on the image host:
```md
![](https://YOUR-IMAGE-HOST/archive/example.png)
```
Optional live tweet (not a substitute for the transcript):
```md
![](https://x.com/user/status/123)
```
## Related
- Distilled note: [[What this archive is for]]
+13
View File
@@ -0,0 +1,13 @@
---
title: Threads
type: note
status: published
draft: false
description: Archived Twitter/X threads and similar sequential posts.
tags:
- archive
---
One note per thread. Transcribe the posts in order. Do not rely on a live embed as the only copy.
Example: [[How to archive a thread]]
+13
View File
@@ -0,0 +1,13 @@
---
title: Canvases
type: note
status: published
draft: false
description: Public JSON Canvas maps.
tags:
- canvas
---
Obsidian `.canvas` files in this folder render as pannable pages on the site.
Starter map: [[overview.canvas|overview]]
+24
View File
@@ -0,0 +1,24 @@
{
"nodes":[
{"id":"title","type":"text","text":"# Threadwell\nRecovered threads and submerged records.","x":-360,"y":-80,"width":320,"height":140,"color":"5"},
{"id":"home","type":"file","file":"index.md","x":40,"y":-160,"width":260,"height":80},
{"id":"archive","type":"file","file":"archive/index.md","x":400,"y":-280,"width":280,"height":100},
{"id":"threads","type":"file","file":"archive/threads/index.md","x":760,"y":-360,"width":260,"height":80},
{"id":"sources","type":"file","file":"archive/sources/index.md","x":760,"y":-220,"width":260,"height":80},
{"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":"example-note","type":"file","file":"notes/What this archive is for.md","x":760,"y":80,"width":300,"height":80}
],
"edges":[
{"id":"e1","fromNode":"title","fromSide":"right","toNode":"home","toSide":"left"},
{"id":"e2","fromNode":"home","fromSide":"right","toNode":"archive","toSide":"left"},
{"id":"e3","fromNode":"home","fromSide":"right","toNode":"canvases","toSide":"left"},
{"id":"e4","fromNode":"home","fromSide":"right","toNode":"notes","toSide":"left"},
{"id":"e5","fromNode":"archive","fromSide":"right","toNode":"threads","toSide":"left"},
{"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"}
]
}
+16
View File
@@ -0,0 +1,16 @@
---
title: Threadwell
type: note
status: published
draft: false
description: Recovered threads and submerged records.
tags: []
---
An archive of material that is not reliably web-indexed: Twitter/X threads, talks, and other primary sources, plus the notes distilled from them.
- [[archive/index|Archive]] — objective records of threads and other sources
- [[canvases/index|Canvases]] — maps and relationship diagrams
- [[notes/index|Notes]] — authored essays and syntheses
Start a new record from the templates in `templates/`. Public folders publish by default; set `draft: true` to keep a note off the site.
View File
+65
View File
@@ -0,0 +1,65 @@
---
title: Conventions
type: note
status: draft
draft: true
---
# Frontmatter
| 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 |
| `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 |
| `description` | string | Search / OG preview |
| `aliases` | list | Extra names |
`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).
# Folders
| Path | Published | Role |
| --- | --- | --- |
| `archive/` | yes | Primary sources |
| `canvases/` | yes | `.canvas` maps |
| `notes/` | yes | Authored writing |
| `templates/` | no | Templater / core templates |
| `meta/` | no | Vault rules, local attachments |
| `private/` | no, gitignored | Never publish, never push |
| `site/` | no, gitignored | Local Quartz clone (own remotes) |
| `publish/` | no | Tracked Quartz overlay |
# Images
Always absolute HTTPS URLs on the image host. Do not commit local binaries for published notes.
```md
![](https://YOUR-IMAGE-HOST/archive/slug.png)
```
Scratch files may sit in `meta/attachments/` (gitignored).
# Video
YouTube / tweet (Quartz OFM):
```md
![](https://www.youtube.com/watch?v=VIDEO_ID)
![](https://youtu.be/VIDEO_ID)
![](https://x.com/user/status/ID)
```
Odysee (raw iframe; survives the static build):
```html
<iframe width="560" height="315" src="https://odysee.com/$/embed/SLUG/CLAIM" allowfullscreen></iframe>
```
Get the embed URL from Odysee share → embed. Do not use the watch URL as the iframe `src`.
+40
View File
@@ -0,0 +1,40 @@
---
title: Obsidian setup
type: note
status: draft
draft: true
---
Open **`C:\\projects\\Threadwell`** as the vault (the repo root). `site/` is a local Quartz checkout and is hidden from the file explorer.
# Core plugins
Enable: Files, Search, Quick switcher, Graph, Backlinks, Canvas, Outgoing links, Tags, Page preview, Templates, Note composer, Command palette, Properties, Word count, File recovery.
Templates folder: `templates`.
# Community plugins
| Plugin | Why |
| --- | --- |
| Templater | Date/title fill-in for the two starter templates |
| Dataview | Local queries over `type`, `source`, `status` (not rendered by Quartz) |
| Linter | YAML key order and tag consistency |
| Media Extended | Better YouTube/timestamp playback inside Obsidian |
| Advanced Canvas | Groups, presentation, nicer maps; Quartz still reads stock JSON Canvas |
Install from Community Plugins using `.obsidian/community-plugins.json`.
# Templater
Template folder: `templates`. Enable "Trigger Templater on new file creation" if you want folder templates later.
# Linter (suggested)
- YAML: insert `date` as `YYYY-MM-DD`
- Deduplicate and sort tags
- Do not rewrite wikilinks to markdown links
# Link settings
Already set in `app.json`: wikilinks, shortest path, update links on rename.
+26
View File
@@ -0,0 +1,26 @@
---
title: What this archive is for
type: note
source: original
date: 2026-08-22
status: published
draft: false
tags:
- note
- how-to
description: Why Threadwell exists and how archive notes relate to authored notes.
aliases:
- about-threadwell
---
Threadwell holds material that search engines and platform pages do not keep reliably. The split is strict:
| Folder | Role |
| --- | --- |
| `archive/` | Primary source. What was said. |
| `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.
Set `draft: true` until a note is ready. `archive/`, `canvases/`, and `notes/` publish otherwise.
+12
View File
@@ -0,0 +1,12 @@
---
title: Notes
type: note
status: published
draft: false
description: Authored and distilled writing.
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]]
+1
View File
@@ -0,0 +1 @@
This folder is gitignored except this file. Put unpublished private notes here.
+319
View File
@@ -0,0 +1,319 @@
# yaml-language-server: $schema=./quartz/plugins/quartz-plugins.schema.json
configuration:
pageTitle: Threadwell
pageTitleSuffix: " · recovered threads"
enableSPA: true
enablePopovers: true
analytics: null
locale: en-US
baseUrl: ed94.github.io/Threadwell
ignorePatterns:
- site
- .github
- .git
- private
- templates
- meta
- .obsidian
- publish
- README.md
- LICENSE
- .gitignore
- .gitattributes
theme:
fontOrigin: googleFonts
cdnCaching: true
typography:
header: Schibsted Grotesk
body: Source Sans Pro
code: IBM Plex Mono
colors:
lightMode:
light: "#faf8f8"
lightgray: "#e5e5e5"
gray: "#b8b8b8"
darkgray: "#4e4e4e"
dark: "#2b2b2b"
secondary: "#284b63"
tertiary: "#84a59d"
highlight: rgba(143, 159, 169, 0.15)
textHighlight: "#fff23688"
darkMode:
light: "#161618"
lightgray: "#393639"
gray: "#646464"
darkgray: "#d4d4d4"
dark: "#ebebec"
secondary: "#7b97aa"
tertiary: "#84a59d"
highlight: rgba(143, 159, 169, 0.15)
textHighlight: "#b3aa0288"
plugins:
- source: "@quartz-community/created-modified-date"
enabled: true
options:
defaultDateType: modified
priority:
- frontmatter
- git
- filesystem
order: 10
- source: "@quartz-community/syntax-highlighting"
enabled: true
options:
theme:
light: github-light
dark: github-dark
keepBackground: false
order: 20
- source: "@quartz-community/obsidian-flavored-markdown"
enabled: true
options:
comments: true
highlight: true
wikilinks: true
callouts: true
mermaid: true
parseTags: true
parseArrows: true
parseBlockReferences: true
enableInHtmlEmbed: false
enableYouTubeEmbed: true
enableTweetEmbed: true
enableVideoEmbed: true
enableCheckbox: true
order: 30
- source: "@quartz-community/github-flavored-markdown"
enabled: true
order: 40
- source: "@quartz-community/table-of-contents"
enabled: true
order: 50
layout:
position: right
priority: 30
- source: "@quartz-community/crawl-links"
enabled: true
options:
markdownLinkResolution: shortest
order: 60
- source: "@quartz-community/description"
enabled: true
order: 70
- source: "@quartz-community/latex"
enabled: true
options:
renderEngine: katex
order: 80
- source: "@quartz-community/citations"
enabled: false
order: 85
- source: "@quartz-community/hard-line-breaks"
enabled: true
order: 90
- source: "@quartz-community/ox-hugo"
enabled: false
order: 91
- source: "@quartz-community/roam"
enabled: false
order: 92
- source: "@quartz-community/quartz-fonts"
enabled: true
- source: "@quartz-themes/core"
enabled: false
options:
theme: default
mode: both
- source: "@quartz-community/remove-draft"
enabled: true
- source: "@quartz-community/explicit-publish"
enabled: false
- source: "@quartz-community/unlisted-pages"
enabled: true
options: {}
order: 45
- source: "@quartz-community/encrypted-pages"
enabled: true
options:
iterations: 600000
passwordField: password
unlistWhenEncrypted: false
outputPath: static/encryptedContentIndex.json
- source: "@quartz-community/stacked-pages"
enabled: false
layout:
position: afterBody
priority: 50
display: all
- source: "@quartz-community/alias-redirects"
enabled: true
- source: "@quartz-community/content-index"
enabled: true
options:
enableSiteMap: true
enableRSS: true
- source: "@quartz-community/favicon"
enabled: true
- source: "@quartz-community/og-image"
enabled: true
- source: "@quartz-community/cname"
enabled: true
- source: "@quartz-community/canvas-page"
enabled: true
options:
enableInteraction: true
initialZoom: 1
defaultFullscreen: false
- source: "@quartz-community/content-page"
enabled: true
- source: "@quartz-community/folder-page"
enabled: true
- source: "@quartz-community/tag-page"
enabled: true
- source: "@quartz-community/explorer"
enabled: true
layout:
position: left
priority: 50
- source: "@quartz-community/graph"
enabled: true
layout:
position: right
priority: 10
- source: "@quartz-community/search"
enabled: true
layout:
position: left
priority: 20
group: toolbar
groupOptions:
grow: true
- source: "@quartz-community/backlinks"
enabled: true
layout:
position: right
priority: 50
- source: "@quartz-community/article-title"
enabled: true
layout:
position: beforeBody
priority: 10
- source: "@quartz-community/content-meta"
enabled: true
layout:
position: beforeBody
priority: 20
- source: "@quartz-community/tag-list"
enabled: true
layout:
position: beforeBody
priority: 30
- source: "@quartz-community/page-title"
enabled: true
layout:
position: left
priority: 10
- source: "@quartz-community/darkmode"
enabled: true
layout:
position: left
priority: 30
group: toolbar
- source: "@quartz-community/reader-mode"
enabled: true
layout:
position: left
priority: 35
group: toolbar
- source: "@quartz-community/breadcrumbs"
enabled: true
layout:
position: beforeBody
priority: 5
condition: not-index
- source: "@quartz-community/comments"
enabled: false
options:
provider: giscus
options: {}
layout:
position: afterBody
priority: 10
- source: "@quartz-community/footer"
enabled: true
options:
links:
GitHub: https://github.com/Ed94/Threadwell
layout:
position: footer
priority: 50
- source: "@quartz-community/recent-notes"
enabled: true
layout:
position: left
priority: 60
- source: "@quartz-community/spacer"
enabled: true
options: {}
order: 25
layout:
position: left
priority: 25
display: mobile-only
- source: "@quartz-community/bases-page"
enabled: true
options: {}
order: 50
- source: "@quartz-community/note-properties"
enabled: true
options:
includeAll: false
includedProperties:
- type
- source
- status
- date
- tags
- description
- aliases
excludedProperties: []
hidePropertiesView: false
delimiters: ---
language: yaml
order: 5
layout:
position: beforeBody
priority: 15
display: all
- source: "@quartz-community/obsidian-plugin-excalidraw"
enabled: false
options:
enableInteraction: true
darkMode: auto
exportPadding: 20
order: 50
layout:
groups:
toolbar:
priority: 35
direction: row
gap: 0.5rem
byPageType:
"404":
positions:
beforeBody: []
left: []
right: []
content: {}
folder:
exclude:
- reader-mode
positions:
right: []
tag:
exclude:
- reader-mode
positions:
right: []
canvas: {}
bases: {}
+12
View File
@@ -0,0 +1,12 @@
$root = Split-Path -Parent $PSScriptRoot
$site = Join-Path $root "site"
$config = Join-Path $PSScriptRoot "quartz.config.yaml"
if (-not (Test-Path -LiteralPath (Join-Path $site ".git"))) {
git clone --branch v5 --single-branch https://github.com/jackyzha0/quartz.git $site
}
Copy-Item -LiteralPath $config -Destination (Join-Path $site "quartz.config.yaml") -Force
Set-Location -LiteralPath $site
npm ci
npx quartz plugin install --from-config
+48
View File
@@ -0,0 +1,48 @@
---
title: <% tp.file.title %>
type: archive
source: twitter
source_url:
author:
date: <% tp.date.now("YYYY-MM-DD") %>
archived: <% tp.date.now("YYYY-MM-DD") %>
status: draft
draft: true
tags:
- archive
description:
aliases: []
---
> [!info] Provenance
> Primary source record. Do not editorialize here. Interpretation goes in a `notes/` page.
## Source
- URL: <% tp.file.cursor() %>
- Author:
- Posted:
## Record
**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
+18
View File
@@ -0,0 +1,18 @@
---
title: <% tp.file.title %>
type: note
source: original
date: <% tp.date.now("YYYY-MM-DD") %>
status: draft
draft: true
tags:
- note
description:
aliases: []
---
<% tp.file.cursor() %>
## Sources
-