Tetromino
approvedby Jonathan 'frostmute' Wagner
One-way import Are.na blocks and attachments into your vault as Markdown notes. - This plugin has not been manually reviewed by Obsidian staff.
Tetromino for Obsidian
Deterministic, one-way import from Are.na into your Obsidian vault.
One-way only: Are.na → Obsidian • Manual runs • Dry-run previews • User-controlled output
Tetromino brings channels, blocks, metadata, and attachments into your vault as stable Markdown notes. It is designed for clarity and control: same input, same output, no automatic imports, and no push-back to Are.na. Optional sync-on-startup / interval settings exist but stay off until you enable them.
API compatibility targets the current Are.na REST API v3 documentation: https://www.are.na/developers/explore.
Published docs: https://frostmute.github.io/Tetromino/
Quick Navigation
- Docs site: https://frostmute.github.io/Tetromino/
- For users: User Guide | Settings Reference | FAQ | Troubleshooting
- For developers: Developer Guide | API Design | ADRs
- Project docs: CHANGELOG | ROADMAP | PHILOSOPHY | SECURITY | CONTRIBUTING | FIRST_CONTRIBUTION | CODE OF CONDUCT | CONTRIBUTORS | MAINTAINERS | COMMUNITY HEALTH | COMMUNITY CELEBRATION | COMMUNITY SURVEY
- CI and releases: CI workflow | Release workflow | Pages workflow | Release template
- Planning and reporting: Project board | Bug report template
- Community: GitHub Discussions
What This Plugin Is (and Is Not)
- It is a deterministic importer from Are.na to Obsidian.
- It is vault-first, manual, and transparent: nothing imports unless you run a command (or click the ribbon).
- It is not a two-way sync engine.
- It does not auto-delete local notes when remote blocks disappear.
- Optional sync-on-startup and sync-interval exist for power users, but both are off by default (
syncOnStartup: false,syncInterval: 0).
Feature Highlights
Import Engine
- Imports mapped Are.na channels into mapped vault folders.
- Supports full pagination for large channels (not limited to the first 100 blocks).
- Retries transient upstream failures (
429,500,502,503,504) with backoff. - Shows status bar progress for channels and block pages.
- Learn more: User Guide — First Import | API Design — Retry Budget
Deterministic Writing
- Writes stable Markdown notes for blocks.
- Rewrites existing notes when remote block content changes.
- Writes channel index notes and a master overview note (
Are.na/overview.md). - Supports channel index naming mode for Folder Note compatibility (
index.mdor folder-name note). - Sync summary modal with per-file diff viewer after every import or dry-run.
- Learn more: ADR-003 — Deterministic Output | User Guide — Dry-Run
Block Enrichment (Optional)
- Banner frontmatter field for Banners plugin compatibility (
enabled, custom key, source priority). - Block description in frontmatter (
arena_description). - Block comments in a dedicated
Commentssection. - Connected channel list (
This block appears in) with external links. - Best-effort preview image for Channel blocks.
- Learn more: Settings Reference — Enrichments
Template Engine
- Optional custom template system for full control over generated Markdown.
- Handlebars-like syntax:
{{title}},{{#if image}}...{{/if}},{{#each comments}}...{{/each}}. - Template variables include:
title,id,class,content,description,image,arena_url,source_url,channel_title,channel_slug,comments,connected_channels. - Enabled via plugin data (
templateEnabled/templateString); not yet exposed in the Settings tab UI. - Learn more: Settings Reference — Custom Templates
Attachments and Media
- Image handling modes:
download,embed,link. - Non-image attachment handling modes:
download,link. - Downloaded attachment rendering:
linkorembed. - Storage modes: channel-local, global folder, custom folder.
- Per-channel storage overrides.
- Migration tools with preview, diff, execution, and history logging.
- Learn more: Settings Reference — Content Rendering | Settings Reference — Attachment Migration
Channel Management
Import my channelsto bulk-create mappings from your Are.na account.Auto-enable imported channelstoggle for granular control.- Backup, restore, and reset tools for channel mappings.
Restore from file...to pick a specific historical backup instead of only the latest.- Default mapping target folder:
Are.na/<channel-slug>unless overridden. - Learn more: User Guide — Channel Management | Settings Reference — Channel Management
Commands
Available from the Obsidian Command Palette (Ctrl/Cmd + P):
Import all channels nowPreview import (dry-run)Import current channelPreview current channel import (dry-run)Open channel on Are.naPreview attachment migrationRun attachment migration
Settings Overview
- API token with verify action.
- Block file naming (
title,id,title-id). - Banner frontmatter options (
enabled, field name, image source priority). - Optional enrichments (description, comments, connected channels, channel preview image).
- Image and attachment rendering controls.
- Attachment storage controls (global defaults and per-channel overrides).
- Optional enrichments and channel index naming.
- Exclude block classes (skip selected Are.na block types).
- Template engine via plugin data (advanced; not yet in Settings UI).
- Frontmatter, notifications, and debug logging toggles.
- Channel mapping management and migration actions.
- Full reference: Settings Reference
How Import Works
- Create mappings manually or use
Import my channelsin settings. - Run
Import all channels nowor a dry-run preview command. - The plugin fetches channel metadata and all paginated blocks from Are.na.
- It normalizes each block into deterministic Markdown output.
- It compares planned output against existing vault files.
- It writes updated notes, indexes, and overview files.
- It shows a sync summary with diffs for changed files.
- It records import state and timestamps in plugin data.
Detailed walkthrough: User Guide — First Import
Documentation
Docs site
Browse the published documentation: https://frostmute.github.io/Tetromino/
For Users
New to Tetromino? Start here:
- User Guide — Overview, installation, first import walkthrough, dry-run explanation, settings overview, troubleshooting, and FAQ.
- Settings Reference — Every setting explained with defaults, examples, and advanced template syntax.
- Troubleshooting — Common errors, solutions, and how to collect logs for bug reports.
- FAQ — Answers to the most common questions about sync behavior, security, and offline usage.
For Developers
Want to contribute or understand the internals?
- Developer Guide — Architecture overview, module guide, code style, and how to add features or tests.
- API Design — Are.na API integration details, pagination, rate limiting, retry logic, and response normalization.
- ADRs — Architecture Decision Records documenting key design choices (one-way import, manual triggers, deterministic output, Markdown-only format, dry-run previews).
Installation
From Obsidian Community Plugins (Recommended)
- Open Settings → Community Plugins in Obsidian.
- Search for "Tetromino" in the Community Plugins browser.
- Click Install, then Enable.
- Open Tetromino settings and add your Are.na API token.
- Add at least one channel mapping, or run
Import my channels.
Plugin directory: https://community.obsidian.md/plugins/tetromino
Manual Installation
- Download
main.js,manifest.json, andstyles.cssfrom the latest release. - Place them into
<your-vault>/.obsidian/plugins/tetromino/. - Enable Tetromino in Obsidian Community Plugins.
- Open settings and add your API token.
- Add at least one channel mapping, or run
Import my channels.
Development
npm install
npm run dev
Build:
npm run build
Build output:
main.jsin the repository root.dist/<plugin-id>-<version>.zipwithmain.js,manifest.json, andstyles.css.
Quality checks:
npm run lint
npm test
Contributor resources: Developer Guide | CONTRIBUTING | First-Time Contributor Guide
Companion Tools
If you are looking for a similar tool that imports Raindrop.io bookmarks instead of Are.na blocks, check out Make It Rain, the sister-tool to this plugin built on the same core sync engine and template parsing logic.
Security
- API tokens are masked in the UI and stored in Obsidian plugin data.
- The plugin collects no telemetry.
- External requests are limited to Are.na API and direct file URLs required for configured downloads.
For details, see SECURITY.md.
Troubleshooting
Invalid API token
- Generate a token at https://www.are.na/developers/personal-access-tokens.
- Paste it into settings and click
Verify. - Ensure the token includes read access.
Slow imports or timeouts
- Large channels can take several minutes due to API rate limits and pagination.
- Enable debug logging to monitor progress.
- Start with a smaller channel to verify configuration.
Notes are not updating
- Run
Import all channels nowfrom the Command Palette. - Confirm the channel mapping is enabled in settings.
Assets are not downloading
- Set image or attachment handling to
Download to vault. - Confirm attachment folders are valid and writable.
- Verify disk space.
Fewer blocks than expected
- Verify the channel mapping is enabled in settings.
- Check that the channel is public (or your token has access to private channels).
- Enable debug logging to see pagination progress in the console.
Full troubleshooting guide: docs/TROUBLESHOOTING.md
Contributors
Tetromino is maintained by Jonathan J Wagner. We welcome contributions of all kinds — code, documentation, bug reports, and community support.
- Want to contribute? See FIRST_CONTRIBUTION.md for a step-by-step guide.
- Looking for a first issue? Browse
good first issuelabels. - All contributors: See CONTRIBUTORS.md for the full list.
First-time contributors are thanked by name in release notes.
License
MIT
Release History
See CHANGELOG.md for a complete version history.
- v1.1.1 (2026-07-16) — Version bump for Obsidian community plugins directory re-scan (no source changes).
- v1.1.0 (2025-06-26) — Sync summary modal, overview note generation, attachment migration, channel management tools, banner frontmatter, block enrichment, channel index enhancements, optional background sync, and numerous security and performance fixes.
- v1.0.0 (2025-01-15) — Initial stable release with deterministic Are.na → Obsidian import, pagination, retries, stable Markdown output, and attachment support.
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.