Write
Use the reMarkable exactly as you normally would. Handwriting remains the source.
Write by hand. Send it to the web.
Write on reMarkable, edit its transcription if you want to, then send. Writing Hand cleans up the email and turns your words — and, when you choose them, the original handwritten pages — into a Micro.blog post.
From paper to web at the push of a pen.
Set up Writing Hand ↓Use the reMarkable exactly as you normally would. Handwriting remains the source.
Use reMarkable’s Send by email. Include transcription, original PNG pages, or both.
Writing Hand removes the transport clutter and creates a Micro.blog draft — or publishes only when you explicitly ask.
How it works
The native-feeling reMarkable route is deliberately simple: write by hand, optionally edit reMarkable's transcription, send the page, and let Writing Hand do the mechanical bit.
Status: published in the leading metadata block.For text posts, the reMarkable notebook/document name is transport metadata, not a Micro.blog title. Text posts stay untitled unless you add Title:. Image-only sends keep the filename/notebook-name fallback.
Put metadata at the very start of the transcription. These lines are stripped from the final post:
Title: A proper long-post title
Categories: reMarkable, micropost
Status: published
This is the actual post text.
Title: is optional. Categories: is comma-separated and only matches categories that already exist on that Micro.blog destination. Status: accepts exactly draft or published, case-insensitively.
If Status: is missing, the post is a draft. Unknown or misspelled values stay in the body and force draft behaviour. A typo must never accidentally publish.
You can also use a leading hashtag-only line as category shorthand:
#reMarkable #micropost
How cool is that?!
Ordinary hashtags later in the post remain ordinary post text. reMarkable's own notebook/page tags are not transmitted by Send by email, so they cannot currently map automatically to Micro.blog categories.
For original handwritten pages, choose PNG. The email path currently supports PNG pages directly; PDF email attachments are not yet supported. Browser PDF import is separate and still works in Publish Hand.
Technical setup
This is a personal publishing bridge, not an account service. Your private receiving address, Micro.blog token and Resend configuration live in your own deployment.
Enable inbound email in Resend. The simplest form is an address on a Resend-managed inbound domain:
<anything>@<id>.resend.app
Choose a private, high-entropy local part, for example:
blog-f7c2a91d@<id>.resend.app
Status: published syntax.Create a separate Micro.blog app token specifically for unattended email publishing. Add it to Netlify as:
MICROBLOG_EMAIL_TOKEN
Create a Resend API key that can read received email bodies and attachments, then add it to Netlify as:
RESEND_API_KEY
Recommended: set POST_BY_EMAIL_ROUTES to a JSON object mapping each exact private receiving address to the Micro.blog Micropub destination UID/blog URL:
{
"blog-f7c2a91d@abc123.resend.app": "https://example.micro.blog/"
}
For several blogs:
{
"personal-f7c2a91d@abc123.resend.app": "https://personal.example/",
"project-82d4b610@abc123.resend.app": "https://project.example/"
}
POST_BY_EMAIL_ROUTES is authoritative when present and fails closed if malformed. Older single-destination installs can instead use POST_BY_EMAIL_ADDRESS plus MICROBLOG_EMAIL_DESTINATION.
Create a Resend webhook for the email.received event using:
https://YOUR-SITE.example/api/post-by-email
Copy the webhook signing secret into Netlify as:
RESEND_WEBHOOK_SECRET
Then redeploy so the function receives the final configuration.
| Variable | Purpose |
|---|---|
RESEND_API_KEY | Fetch received email content and attachment URLs. |
RESEND_WEBHOOK_SECRET | Verify signed Resend webhooks. |
MICROBLOG_EMAIL_TOKEN | Dedicated Micro.blog token for unattended publishing. |
POST_BY_EMAIL_ROUTES | Recommended JSON map of private receiving addresses to Micro.blog destinations. |
POST_BY_EMAIL_ADDRESS | Legacy single-route receiving address. |
MICROBLOG_EMAIL_DESTINATION | Legacy single-route Micro.blog destination. |
Status: field.Status: published with a disposable post.Check RESEND_API_KEY, RESEND_WEBHOOK_SECRET, MICROBLOG_EMAIL_TOKEN and the route configuration.
Check that the exact recipient in Resend matches a key in POST_BY_EMAIL_ROUTES, and that the destination value is the correct Micropub destination UID.
The value must be exactly published and must be in the leading metadata block. Unknown values deliberately remain body text and stay draft.
Send original pages as PNG. PDF email attachments are not yet supported.
The category must already exist on the selected Micro.blog destination. Matching is case-insensitive; unknown categories are ignored.
That is safe. The email ID is recorded in Netlify Database and stale/interrupted jobs are reconciled before a replacement post is created.