Install
openclaw skills install remarkable-syncBidirectional sync with reMarkable tablet via Cloud API (rmapi). Fetch handwritten notes/sketches, process with AI, and push content back. Use for sketch enhancement, journal extraction, or sending documents/images to the tablet.
openclaw skills install remarkable-syncBidirectional sync with reMarkable tablet via Cloud API. Fetch sketches and notes, process them (AI enhancement, text extraction), and push content back to the tablet.
┌─────────────────────────────────────────────────────────────────┐
│ FETCH (tablet → agent) │
├─────────────────────────────────────────────────────────────────┤
│ reMarkable → Cloud sync → rmapi get → .rmdoc │
│ ↓ │
│ unzip → .rm file → rmc → SVG │
│ ↓ │
│ cairosvg → PNG │
│ ↓ │
│ ┌──────────┴──────────┐ │
│ Text content? Visual/sketch? │
│ ↓ ↓ │
│ OCR/interpret AI image editing │
│ ↓ ↓ │
│ Add to memory Enhanced image │
└─────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────┐
│ PUSH (agent → tablet) │
├─────────────────────────────────────────────────────────────────┤
│ Image/document → Convert to PDF (if needed) → rmapi put │
│ ↓ │
│ Cloud sync → tablet │
└─────────────────────────────────────────────────────────────────┘
Download the latest release from juruen/rmapi (ddvk fork recommended):
# Example for Linux amd64
curl -L https://github.com/ddvk/rmapi/releases/latest/download/rmapi-linux-amd64 -o ~/bin/rmapi
chmod +x ~/bin/rmapi
pip install --user rmc cairosvg pillow
.rm stroke files to SVGrmapi and paste the code when prompted~/.rmapi — future runs are automatic# List files/folders
rmapi ls
rmapi ls -l -t # Long format, sorted by time
# Refresh from cloud
rmapi refresh
# Navigate
rmapi cd "folder name"
# Find files
rmapi find --starred / # Starred items
rmapi find --tag="my-tag" / # By tag
rmapi find / ".*sketch.*" # By regex
# Download single file
rmapi get "filename"
rmapi get "Folder/Notebook"
# Download with annotations (best for handwritten content)
rmapi geta "filename"
# Bulk download folder
rmapi mget -o ./sync-folder/ "/My Folder"
# Upload single file (PDF or EPUB only)
rmapi put document.pdf
rmapi put document.pdf "Target Folder/"
# Bulk upload
rmapi mput ./local-folder/ "Remote Folder/"
# Create folder on tablet
rmapi mkdir "New Folder"
Supported formats: PDF, EPUB
reMarkable notebooks download as .rmdoc (a ZIP archive containing stroke data):
# 1. Download the notebook
rmapi get "Folder/MyNotebook"
# 2. Extract (it's a zip)
unzip "MyNotebook.rmdoc" -d extracted/
# 3. Find the .rm stroke file(s)
# Structure: extracted/<doc-uuid>/<page-uuid>.rm
find extracted -name "*.rm"
# 4. Convert .rm → SVG
rmc -t svg -o page.svg "extracted/<doc-uuid>/<page-uuid>.rm"
# 5. Convert SVG → PNG (reMarkable dimensions: 1404×1872)
python3 -c "
import cairosvg
cairosvg.svg2png(url='page.svg', write_to='page.png', output_width=1404, output_height=1872)
"
reMarkable only accepts PDF/EPUB, so convert images first:
from PIL import Image
img = Image.open('image.png')
rgb = img.convert('RGB')
rgb.save('image.pdf', 'PDF', resolution=150)
Then push:
rmapi put image.pdf "My Folder/"
Sketch enhancement loop:
# 1. Fetch sketch from tablet
rmapi get "Sketches/MyDrawing"
# 2. Extract and convert to PNG
unzip MyDrawing.rmdoc -d MyDrawing_extracted/
RM_FILE=$(find MyDrawing_extracted -name "*.rm" | head -1)
rmc -t svg -o sketch.svg "$RM_FILE"
python3 -c "import cairosvg; cairosvg.svg2png(url='sketch.svg', write_to='sketch.png', output_width=1404, output_height=1872)"
# 3. [Your AI enhancement step here]
# Example: use any image-to-image AI tool to enhance sketch.png → enhanced.png
# 4. Convert to PDF and push back
python3 -c "from PIL import Image; Image.open('enhanced.png').convert('RGB').save('enhanced.pdf', 'PDF', resolution=150)"
rmapi put enhanced.pdf "Sketches/"
Create a dedicated sync folder on your tablet, or use:
rmapi find --tagrmapi find --starred.rmdoc is a ZIP containing JSON metadata + .rm binary stroke filesrmc may show warnings about newer format versions — usually still works| Issue | Solution |
|---|---|
rmapi not connecting | Re-authenticate: delete ~/.rmapi and run rmapi again |
| File not found after upload | Wait for cloud sync, or refresh tablet manually |
rmc format warnings | Usually safe to ignore; output still generated |
| SVG looks empty | Check if the correct .rm file was used (multi-page notebooks have multiple) |