README file from
GithubMemos Card View
Desktop Obsidian plugin that connects to a Memos instance and shows memos as editable cards.
Features
- Configure Memos base URL, PAT, page size, and default publish visibility in Obsidian settings.
- Open a dedicated card view from the ribbon or command palette.
- Refresh, page through, create, edit, delete, and choose private/public visibility for memos.
- Create and edit memos with live Markdown preview.
- Upload files as Memos attachments when creating or editing memos.
- Clip web pages by URL, using Obsidian desktop's embedded browser when needed, summarize them with a local OpenAI-compatible LLM, and save the summary plus source link to Memos.
- Clip the current browser page with the companion Chromium extension, sending extracted page text and visible images directly to Obsidian.
- Render memo Markdown content and show tags, visibility, pinned state, timestamps, and attachment links.
Install Locally
- Run
npm install. - Run
npm run build. - Create
<vault>/.obsidian/plugins/memos-card-view. - Copy the generated files from
dist/into that folder. - Enable the plugin in Obsidian community plugin settings.
- Open plugin settings and enter your Memos personal access token.
- For web clipping, configure a local OpenAI-compatible LLM base URL and model name.
- If a site rejects anonymous clipping, paste the site's browser Cookie header into
Web clip cookie.
The default server URL is the placeholder https://memos.example.com; replace it with your own Memos instance in settings.
This plugin is desktop-only because browser clipping and protected-page fallbacks use local Node/Electron APIs. The plugin only writes to the system clipboard when you click a visible copy action, such as copying memo text or the browser clip bridge token.
Browser Extension
- In Obsidian plugin settings, enable
Browser clip bridge. - Copy the
Browser clip bridge token. - Open Chrome or Edge extension management, enable developer mode, and load
browser-extension/as an unpacked extension. - Open the extension options, confirm the bridge URL is
http://127.0.0.1:27124, paste the token, and save. - On any page, click the extension and choose
Clip current page.
The extension sends extracted title, URL, readable text, description, and visible page images to Obsidian. Obsidian still performs the local LLM summary, optional hero-image selection from those candidates, and Memos creation.
Development
npm run devstarts esbuild watch mode and writes generated files intodist/.npm run buildruns TypeScript checking and writes production plugin files intodist/.npm run packagebuilds the Obsidian plugin and writes release artifacts intorelease/; for local testing, you can copy the three files fromrelease/obsidian/into your vault plugin folder.
Release Packaging
Community releases require a public GitHub repository, a GitHub Release whose
tag exactly matches manifest.json version, and the three Obsidian release
assets attached to that release. Initial community-directory submission is done
from https://community.obsidian.md after signing in and linking GitHub.
Run:
npm run package
The script validates version consistency across package.json, the Obsidian
manifest, the browser extension manifest, and versions.json. It then creates:
release/obsidian/main.jsrelease/obsidian/manifest.jsonrelease/obsidian/styles.cssrelease/memos-card-view-<version>-obsidian.ziprelease/memos-obsidian-clipper-<version>-chrome.ziprelease/README-release.md
For Obsidian Community Plugin GitHub releases, upload the three files under
release/obsidian/ as release assets. For Chrome or Edge extension stores,
upload release/memos-obsidian-clipper-<version>-chrome.zip.
For repeatable GitHub releases, run one of:
npm run release:patch
npm run release:minor
npm run release:major
Then push the default branch and the generated version tag:
git push origin main
git push origin <version>
Pushing the tag triggers the Release workflow, which builds the plugin, uploads
only main.js, manifest.json, and styles.css, and generates artifact
attestations for those files.
Do not commit personal access tokens or Obsidian data.json.