label-studio
label-studioは、機械学習プロジェクト向けに、テキスト、画像、音声など様々な種類のデータに対して、柔軟な設定が可能なインターフェースでアノテーション作業を効率化し、チームでの共同作業や自動化されたワークフローを実現するSkill。
📜 元の英語説明(参考)
Open-source data labeling and annotation platform for ML projects. Supports text, image, audio, video, and time-series data. Features configurable labeling interfaces, ML-assisted labeling, team collaboration, and API integration for automated workflows.
🇯🇵 日本人クリエイター向け解説
label-studioは、機械学習プロジェクト向けに、テキスト、画像、音声など様々な種類のデータに対して、柔軟な設定が可能なインターフェースでアノテーション作業を効率化し、チームでの共同作業や自動化されたワークフローを実現するSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o label-studio.zip https://jpskill.com/download/15050.zip && unzip -o label-studio.zip && rm label-studio.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/15050.zip -OutFile "$d\label-studio.zip"; Expand-Archive "$d\label-studio.zip" -DestinationPath $d -Force; ri "$d\label-studio.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
label-studio.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
label-studioフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
Label Studio
インストール
# Label Studio をインストール
pip install label-studio
# サーバーを起動
label-studio start --port 8080
# http://localhost:8080 にアクセスしてアカウントを作成し、最初のプロジェクトを作成します
Docker デプロイメント
# docker-compose.yml — PostgreSQL を使用した本番環境 Label Studio
version: "3.9"
services:
label-studio:
image: heartexlabs/label-studio:latest
ports:
- "8080:8080"
environment:
DJANGO_DB: default
POSTGRE_NAME: labelstudio
POSTGRE_USER: labelstudio
POSTGRE_PASSWORD: labelstudio
POSTGRE_HOST: db
POSTGRE_PORT: 5432
LABEL_STUDIO_LOCAL_FILES_SERVING_ENABLED: "true"
LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT: /label-studio/files
volumes:
- ls-data:/label-studio/data
- ./files:/label-studio/files
depends_on:
- db
db:
image: postgres:15
environment:
POSTGRES_DB: labelstudio
POSTGRES_USER: labelstudio
POSTGRES_PASSWORD: labelstudio
volumes:
- pg-data:/var/lib/postgresql/data
volumes:
ls-data:
pg-data:
ラベリング設定 (XML テンプレート)
<!-- text_classification.xml — 感情分類ラベリングインターフェース -->
<View>
<Header value="このテキストの感情を分類してください:"/>
<Text name="text" value="$text"/>
<Choices name="sentiment" toName="text" choice="single" showInline="true">
<Choice value="Positive"/>
<Choice value="Negative"/>
<Choice value="Neutral"/>
</Choices>
</View>
<!-- ner_labeling.xml — 固有表現認識ラベリングインターフェース -->
<View>
<Labels name="label" toName="text">
<Label value="Person" background="#FF0000"/>
<Label value="Organization" background="#00FF00"/>
<Label value="Location" background="#0000FF"/>
<Label value="Date" background="#FFA500"/>
</Labels>
<Text name="text" value="$text"/>
</View>
<!-- image_bbox.xml — バウンディングボックスによる画像オブジェクト検出 -->
<View>
<Image name="image" value="$image"/>
<RectangleLabels name="label" toName="image">
<Label value="Car" background="#FF0000"/>
<Label value="Person" background="#00FF00"/>
<Label value="Bicycle" background="#0000FF"/>
</RectangleLabels>
</View>
API: タスクのインポート
# import_tasks.py — API 経由でのラベリングタスクのインポート
import requests
LS_URL = "http://localhost:8080"
API_KEY = "your-api-key-from-account-settings"
PROJECT_ID = 1
headers = {"Authorization": f"Token {API_KEY}"}
# テキスト分類タスクのインポート
tasks = [
{"data": {"text": "This product is amazing! I love it."}},
{"data": {"text": "Terrible experience, would not recommend."}},
{"data": {"text": "It's okay, nothing special."}},
]
response = requests.post(
f"{LS_URL}/api/projects/{PROJECT_ID}/import",
headers=headers,
json=tasks,
)
print(f"Imported {response.json()['task_count']} tasks")
API: アノテーションのエクスポート
# export_annotations.py — モデル学習のために完了したアノテーションをエクスポート
import requests
import json
LS_URL = "http://localhost:8080"
API_KEY = "your-api-key"
PROJECT_ID = 1
headers = {"Authorization": f"Token {API_KEY}"}
response = requests.get(
f"{LS_URL}/api/projects/{PROJECT_ID}/export?exportType=JSON",
headers=headers,
)
annotations = response.json()
for task in annotations:
text = task["data"]["text"]
label = task["annotations"][0]["result"][0]["value"]["choices"][0]
print(f"Text: {text[:50]}... → Label: {label}")
# 学習用に保存
with open("labeled_data.json", "w") as f:
json.dump(annotations, f, indent=2)
Label Studio SDK
# sdk_usage.py — プログラムによるアクセスに Python SDK を使用
from label_studio_sdk import Client
ls = Client(url="http://localhost:8080", api_key="your-api-key")
# 新しいプロジェクトを作成
project = ls.start_project(
title="Customer Reviews",
label_config="""
<View>
<Text name="text" value="$text"/>
<Choices name="sentiment" toName="text" choice="single">
<Choice value="Positive"/>
<Choice value="Negative"/>
</Choices>
</View>
""",
)
# タスクのインポート
project.import_tasks([
{"text": "Great product!"},
{"text": "Not worth the money."},
])
# アノテーションされたタスクを取得
labeled = project.get_labeled_tasks()
print(f"Completed annotations: {len(labeled)}")
ML バックエンド (事前ラベリング)
# ml_backend.py — 事前ラベリング/アクティブラーニングのための ML バックエンド
from label_studio_ml import LabelStudioMLBase
class SentimentPredictor(LabelStudioMLBase):
def setup(self):
from transformers import pipeline
self.classifier = pipeline("sentiment-analysis")
def predict(self, tasks, **kwargs):
predictions = []
for task in tasks:
text = task["data"]["text"]
result = self.classifier(text)[0]
predictions.append({
"result": [{
"from_name": "sentiment",
"to_name": "text",
"type": "choices",
"value": {"choices": [result["label"].capitalize()]},
}],
"score": result["score"],
})
return predictions
# ML バックエンドを起動
label-studio-ml start ./ml_backend --port 9090
# 設定 > 機械学習 から Label Studio プロジェクトに接続します
主要な概念
- Labeling configs: アノテーションインターフェースを定義する XML テンプレート — 非常にカスタマイズ可能
- Tasks: ラベル付けされるデータ項目。API または UI 経由でインポートされます
- Annotations: タスクに対する人間のラベル。複数の形式 (JSON, CSV, COCO など) でエクスポート可能
- ML backends: 事前ラベリングおよびアクティブラーニングワークフローのためのモデルを接続
- Webhooks: アノテーションが作成または更新されたときに通知を受け取る
- Multi-type: テキスト、画像、オーディオ、ビデオ、HTML、および時系列を 1 つのプラットフォームでサポート
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
Label Studio
Installation
# Install Label Studio
pip install label-studio
# Start the server
label-studio start --port 8080
# Visit http://localhost:8080 to create account and first project
Docker Deployment
# docker-compose.yml — Production Label Studio with PostgreSQL
version: "3.9"
services:
label-studio:
image: heartexlabs/label-studio:latest
ports:
- "8080:8080"
environment:
DJANGO_DB: default
POSTGRE_NAME: labelstudio
POSTGRE_USER: labelstudio
POSTGRE_PASSWORD: labelstudio
POSTGRE_HOST: db
POSTGRE_PORT: 5432
LABEL_STUDIO_LOCAL_FILES_SERVING_ENABLED: "true"
LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT: /label-studio/files
volumes:
- ls-data:/label-studio/data
- ./files:/label-studio/files
depends_on:
- db
db:
image: postgres:15
environment:
POSTGRES_DB: labelstudio
POSTGRES_USER: labelstudio
POSTGRES_PASSWORD: labelstudio
volumes:
- pg-data:/var/lib/postgresql/data
volumes:
ls-data:
pg-data:
Labeling Configuration (XML Templates)
<!-- text_classification.xml — Sentiment classification labeling interface -->
<View>
<Header value="Classify the sentiment of this text:"/>
<Text name="text" value="$text"/>
<Choices name="sentiment" toName="text" choice="single" showInline="true">
<Choice value="Positive"/>
<Choice value="Negative"/>
<Choice value="Neutral"/>
</Choices>
</View>
<!-- ner_labeling.xml — Named entity recognition labeling interface -->
<View>
<Labels name="label" toName="text">
<Label value="Person" background="#FF0000"/>
<Label value="Organization" background="#00FF00"/>
<Label value="Location" background="#0000FF"/>
<Label value="Date" background="#FFA500"/>
</Labels>
<Text name="text" value="$text"/>
</View>
<!-- image_bbox.xml — Image object detection with bounding boxes -->
<View>
<Image name="image" value="$image"/>
<RectangleLabels name="label" toName="image">
<Label value="Car" background="#FF0000"/>
<Label value="Person" background="#00FF00"/>
<Label value="Bicycle" background="#0000FF"/>
</RectangleLabels>
</View>
API: Import Tasks
# import_tasks.py — Import labeling tasks via the API
import requests
LS_URL = "http://localhost:8080"
API_KEY = "your-api-key-from-account-settings"
PROJECT_ID = 1
headers = {"Authorization": f"Token {API_KEY}"}
# Import text classification tasks
tasks = [
{"data": {"text": "This product is amazing! I love it."}},
{"data": {"text": "Terrible experience, would not recommend."}},
{"data": {"text": "It's okay, nothing special."}},
]
response = requests.post(
f"{LS_URL}/api/projects/{PROJECT_ID}/import",
headers=headers,
json=tasks,
)
print(f"Imported {response.json()['task_count']} tasks")
API: Export Annotations
# export_annotations.py — Export completed annotations for model training
import requests
import json
LS_URL = "http://localhost:8080"
API_KEY = "your-api-key"
PROJECT_ID = 1
headers = {"Authorization": f"Token {API_KEY}"}
response = requests.get(
f"{LS_URL}/api/projects/{PROJECT_ID}/export?exportType=JSON",
headers=headers,
)
annotations = response.json()
for task in annotations:
text = task["data"]["text"]
label = task["annotations"][0]["result"][0]["value"]["choices"][0]
print(f"Text: {text[:50]}... → Label: {label}")
# Save for training
with open("labeled_data.json", "w") as f:
json.dump(annotations, f, indent=2)
Label Studio SDK
# sdk_usage.py — Use the Python SDK for programmatic access
from label_studio_sdk import Client
ls = Client(url="http://localhost:8080", api_key="your-api-key")
# Create a new project
project = ls.start_project(
title="Customer Reviews",
label_config="""
<View>
<Text name="text" value="$text"/>
<Choices name="sentiment" toName="text" choice="single">
<Choice value="Positive"/>
<Choice value="Negative"/>
</Choices>
</View>
""",
)
# Import tasks
project.import_tasks([
{"text": "Great product!"},
{"text": "Not worth the money."},
])
# Get annotated tasks
labeled = project.get_labeled_tasks()
print(f"Completed annotations: {len(labeled)}")
ML Backend (Pre-labeling)
# ml_backend.py — ML backend for pre-labeling / active learning
from label_studio_ml import LabelStudioMLBase
class SentimentPredictor(LabelStudioMLBase):
def setup(self):
from transformers import pipeline
self.classifier = pipeline("sentiment-analysis")
def predict(self, tasks, **kwargs):
predictions = []
for task in tasks:
text = task["data"]["text"]
result = self.classifier(text)[0]
predictions.append({
"result": [{
"from_name": "sentiment",
"to_name": "text",
"type": "choices",
"value": {"choices": [result["label"].capitalize()]},
}],
"score": result["score"],
})
return predictions
# Start the ML backend
label-studio-ml start ./ml_backend --port 9090
# Connect it to Label Studio project via Settings > Machine Learning
Key Concepts
- Labeling configs: XML templates defining the annotation interface — highly customizable
- Tasks: Data items to be labeled, imported via API or UI
- Annotations: Human labels on tasks, exportable in multiple formats (JSON, CSV, COCO, etc.)
- ML backends: Connect models for pre-labeling and active learning workflows
- Webhooks: Get notified when annotations are created or updated
- Multi-type: Supports text, images, audio, video, HTML, and time-series in one platform