Markdown -> Semble Importer#
Static Svelte app to stage Semble bookmark imports from a URL or pasted markdown, enrich with Citoid metadata, compare with existing Semble records, and create only new cards/collections.
Local dev#
npm install
npm run dev
Environment config#
Set OAuth settings via Vite env vars (build-time):
VITE_HANDLE_RESOLVER(default:https://bsky.social)VITE_CLIENT_ID(example:https://md2semble.example.com/client-metadata.json)VITE_REDIRECT_URI(example:https://md2semble.example.com/)VITE_OAUTH_SCOPE(default:atproto)VITE_CLIENT_NAME(default: Markdown Semble Importer)VITE_OAUTH_RESPONSE_MODE(default:query)
Copy .env.example to .env.local and update the values for your deployment.
OAuth setup#
This app uses OAuth PKCE against the ATProto authorization server (default https://bsky.social).
-
Generate
public/client-metadata.jsonusing your env vars:npm run gen:client-metadataThe generated file is ignored in git;
public/client-metadata.json.exampleis the template. -
Deploy the static build to your subdomain.
-
Ensure the deployed origin matches the
client_idand redirect URI.
For example, with https://md2semble.example.com:
client_idshould behttps://md2semble.example.com/client-metadata.jsonredirect_urisshould includehttps://md2semble.example.com/public/client-metadata.json.exampleis committed;public/client-metadata.jsonis generated locally.
If you host your own PDS, set VITE_HANDLE_RESOLVER to its base URL for handle resolution.
Source format#
# Collection name
- https://example.com : optional note
- [Optional title](https://example.com)