视觉画布设计
canvas-design
基于设计原则创作静态视觉作品,用于海报与品牌图形。
feedback-ls【文档与办公】Send document pages to Label Studio for human review — pre-annotated tasks from ALTO XML, or blank image-only tasks to annotate from scratch. Use when the user wants human review, correction, or quality assurance of transcriptions or line/region segmentation, or wants to build annotation tasks from browse results.
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Send document pages to Label Studio for human annotation and feedback.
label_import_to_label_studio — Import pages to a Label Studio project.
Two modes:
Use when pages already have AI transcriptions. The tool fetches ALTO XML, extracts text line polygons and transcriptions, and creates VectorLabels pre-annotations.
{
"image_urls": [
"https://lbiiif.riksarkivet.se/arkis!30002056_00004/full/max/0/default.jpg"
],
"alto_urls": [
"https://sok.riksarkivet.se/dokument/alto/SE_RA_30002056_00004"
],
"feedback": [["Transcription"]]
}
Use when there are no existing transcriptions — the user wants to annotate
from scratch. Just pass image URLs, omit alto_urls.
{
"image_urls": [
"https://lbiiif.riksarkivet.se/arkis!30002056_00004/full/max/0/default.jpg",
"https://lbiiif.riksarkivet.se/arkis!30002056_00005/full/max/0/default.jpg"
]
}
When the user wants to send pages with pre-annotations, choose the source based on what's available:
| Situation | Source | How |
|---|---|---|
Pages from browse_document results | ALTO XML from Riksarkivet | Pass alto_urls from browse output |
| User has images without transcriptions | No pre-annotations | Omit alto_urls (image-only mode) |
| User has images and wants AI transcription first | HTR transcription | Use htr_transcribe first to generate ALTO XML, then pass the ALTO export URLs as alto_urls |
| User wants to label/annotate themselves | No pre-annotations | Omit alto_urls — blank tasks for manual annotation |
Tip: If the user has untranscribed images and wants pre-annotations, suggest
running htr_transcribe (see /htr-transcription skill) first to generate
ALTO XML, then feed those results into this tool.
From browse results: Call browse_document first (or use results
already in the conversation). Each page includes:
https://sok.riksarkivet.se/dokument/alto/...https://lbiiif.riksarkivet.se/arkis!.../full/max/0/default.jpgFrom any image source: Any publicly accessible image URL works for image-only mode.
| Value | Meaning |
|---|---|
Transcription | Text recognition needs correction |
Segmentation | Line/region boundaries need correction |
Each page gets its own list of feedback values. Use an empty list [] for pages
that need general review without a specific feedback flag.
Pass assign_to with a Label Studio user's email to auto-assign the imported
tasks for annotation. If omitted, tasks are created unassigned.
{
"image_urls": ["..."],
"alto_urls": ["..."],
"assign_to": "reviewer@example.com"
}
Label Studio URL, token, and project ID are configured via environment variables
(LS_URL, LS_TOKEN, LS_PROJECT_ID) — no need to pass them unless overriding.
The tool returns:
assign_to was provided)Share the task links with the user so they can go directly to Label Studio.
Set dry_run=true to see the converted Label Studio JSON without importing.
{
"image_urls": ["..."],
"alto_urls": ["..."],
"dry_run": true
}
When using alto_urls, all lists are paired by index — alto_urls[i],
image_urls[i], and feedback[i] refer to the same page.
| Rule | Detail |
|---|---|
image_urls is always required | One image URL per page |
alto_urls is optional | Omit for image-only tasks |
alto_urls and image_urls must match length | One ALTO XML per image |
feedback must match length if provided | One feedback list per page |
feedback requires alto_urls | Feedback choices attach to ALTO text regions |
The browse_document tool returns per-page links in this format:
🔗 Links:
📝 ALTO XML: https://sok.riksarkivet.se/dokument/alto/SE_RA_30002056_00004
🖼️ Image: https://lbiiif.riksarkivet.se/arkis!30002056_00004/full/max/0/default.jpg
Collect the Image URLs (always needed) and ALTO XML URLs (only if you
want pre-annotations).
| Mistake | Fix |
|---|---|
| Mismatched list lengths | alto_urls and image_urls must be the same length |
| Passing feedback without alto_urls | Feedback requires ALTO (choices attach to text regions) |
| Passing feedback as flat list | Each entry must be a list of strings, e.g. [["Transcription"], []] not ["Transcription", ""] |
| Wrong ALTO URL format | Use the full URL from browse results, not just the page ID |
| Passing Label Studio credentials | Credentials are loaded from env vars — only pass if overriding |
| Variable | Description |
|---|---|
LS_URL | Label Studio instance URL |
LS_TOKEN | Label Studio Personal Access Token (JWT PAT) |
LS_PROJECT_ID | Target project ID |
These are configured in packages/mcps/label-mcp/.env and loaded automatically.