GitHub - djakish/obsidian-taqta · GitHub
/" data-turbo-transient="true" />
Skip to content
Search or jump to...
Search code, repositories, users, issues, pull requests...
-->
Search
Clear
Search syntax tips
Provide feedback
--><br>We read every piece of feedback, and take your input very seriously.
Include my email address so I can be contacted
Cancel
Submit feedback
Saved searches
Use saved searches to filter your results more quickly
-->
Name
Query
To see all available qualifiers, see our documentation.
Cancel
Create saved search
Sign in
/;ref_cta:Sign up;ref_loc:header logged out"}"<br>Sign up
Appearance settings
Resetting focus
You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.
Dismiss alert
{{ message }}
djakish
obsidian-taqta
Public
Notifications<br>You must be signed in to change notification settings
Fork
Star
main
BranchesTags
Go to file
CodeOpen more actions menu
Folders and files<br>NameNameLast commit message<br>Last commit date<br>Latest commit
History<br>2 Commits<br>2 Commits
media
media
src
src
.gitignore
.gitignore
LICENSE
LICENSE
README.md
README.md
esbuild.config.mjs
esbuild.config.mjs
manifest.json
manifest.json
package-lock.json
package-lock.json
package.json
package.json
styles.css
styles.css
tsconfig.json
tsconfig.json
versions.json
versions.json
View all files
Repository files navigation
Taqta
Taqta (Kazakh: тақта, "board") is an Are.na-style visual<br>pinboard inside Obsidian. Collect images, video, links and text as square<br>blocks organised into channels — each channel is a single Obsidian note,<br>so everything stays local, portable, syncable and version-controllable.
Not affiliated with are.na — Taqta is a local, offline workspace inspired by<br>Are.na. It does not sync with the are.na service.
Features
Home — every channel as an equal-size card: name + stats (block count,<br>last updated) on the left, a strip of content previews on the right.
Channel — a grid of square blocks. The first cell is the add box: drop or<br>choose files, paste a URL (image, video or link), or type text.
Square blocks — any media is fitted to the square with object-fit: contain: a tall image fills the height, a wide one fills the width — never<br>cropped, stretched, or overflowing.
Real media — paste a URL and the media is downloaded into your assets<br>folder, with the title/headline pulled and the original URL kept as the source.<br>Uses yt-dlp when available (Instagram,<br>TikTok, YouTube, X, Reddit, Vimeo, …), falling back to Open Graph scraping.
Block detail — rename, add alt text, edit tags, see source / format / file<br>size, download the original, or delete.
Tags & filtering — hidden per-block tags; click chips on a channel to<br>filter. Optional lightweight auto-tagging from title + domain.
Reorder — drag blocks to reorder; order is persisted to the channel file.
Export — one click writes a flat CSV + JSON next to the channel.
Native & cross-platform — pure TypeScript, no native deps, themed entirely<br>by your active Obsidian theme. Works on desktop and mobile.
Data model
No separate database. Each channel is one markdown file:
taqta-channel: true<br>title: reno<br>created: 2026-06-01T10:00:00.000Z<br>updated: 2026-06-22T12:30:00.000Z<br>blocks:<br>- id: lz3k9a2b<br>type: image<br>title: curtains<br>source: https://instagram.com/p/…<br>asset: Taqta/Assets/lz3k9a2b.jpg<br>alt: linen curtains in afternoon light<br>tags: [interior, curtains, instagram]<br>width: 1080<br>height: 1350<br>fileSize: 217088<br>contentType: image/jpeg<br>created: 2026-06-01T10:00:00.000Z<br>Free-form channel description goes here.
The order of the blocks array is the display order. Reads/writes go through<br>Obsidian's official processFrontMatter API. Why frontmatter and not SQLite /<br>a table / one big JSON? The file stays a real, navigable Obsidian note (graph,<br>links, body description), the data is structured enough for arrays + multi-line<br>text + nested fields, and it syncs and diffs cleanly. Use Export when you<br>want a flat table for spreadsheets or scripts.
Media extraction (yt-dlp)
When a URL is pasted, the fetcher first tries a locally installed<br>yt-dlp — the de-facto media downloader that<br>already supports Instagram, TikTok, YouTube, X/Twitter, Reddit, Vimeo and<br>~1800 sites, so<br>real videos (not just a preview thumbnail) get saved, and new platforms are<br>supported automatically as yt-dlp adds them.
Install it: brew install yt-dlp / pipx install yt-dlp / winget install yt-dlp.<br>ffmpeg is recommended for high-res merges; Taqta prefers single-file formats<br>so it works without ffmpeg for most social media.
Desktop only: yt-dlp runs as a subprocess (unavailable on mobile). There,<br>and when yt-dlp isn't installed, Taqta falls back to the Open Graph preview.
Set the binary path and verify it in Settings → Taqta → Media download → Check.
For login-walled sites (e.g. Instagram),...