mirror of
https://github.com/immich-app/static-pages.git
synced 2026-09-30 13:23:05 +08:00
@immich/import-post
Imports an Outline document into the blog. It:
- Fetches the document from the Outline API.
- Downloads every referenced image/video attachment.
- Optimizes each image into a responsive ladder, capped at the source width, and uploads every
rung to R2 as
<hash>-<rung>.<ext>. The hash covers the source bytes and the pipeline version, so an encoder change invalidates what is already in the bucket. - Replaces the markdown image with
<Markdown.Image src srcset width height alt />, so a post keeps the variants it was built with and a later ladder change cannot orphan it. - Writes the updated markdown to disk
- Runs
prettier --writeon the file
Usage
mise import-post "<outline-post-url>"
Required environment variables:
| Variable | Description |
|---|---|
OUTLINE_API_KEY |
Outline API token |
R2_BUCKET_NAME |
Target bucket |
R2_ENDPOINT_URL |
S3-compatible endpoint |
R2_ACCESS_KEY_ID |
Access key |
R2_SECRET_ACCESS_KEY |
Secret key |
R2_PUBLIC_URL |
Public base URL for uploaded assets |
The post URL may also be supplied via OUTLINE_POST_URL instead of an argument.
Cleanup
Imports never delete, so re-imports and pipeline changes leave old objects behind. The
Cleanup bucket workflow runs monthly from main and deletes every object under blog/ that no
post references. Objects uploaded within the last 30 days are kept, since an open import PR
references its uploads only on its branch. To run it by hand:
mise cleanup-bucket