いらすとや MCP
by scatjay
README.md
# いらすとや MCP
**替助人工作者在日本免費插圖庫「いらすとや」找圖**,用來做衛教單、學習單、簡報。
台灣的醫院診所衛教單大量在用這個圖庫。問題是 **它只吃日文關鍵字** ——
你想找「注意力不集中」的插圖,站上要打的是 `集中` 或 `気が散る`,
而你不會知道要打什麼。
這支 MCP 的價值不在幫你連網,在 **幫你跨過那道語言牆**。
```
你說:幫我找「注意力不集中」的插圖
它做:認出「注意力」→ 展開成日文「集中」「気が散る」→ 去搜 → 回圖檔網址
```
---
## 五分鐘裝好
### 1. 拉下來
```bash
git clone https://github.com/scatjay/kxmind-irasutoya-mcp.git
```
### 2. 裝相依套件
```bash
pip install -r requirements.txt
```
### 3. 接進 Claude
在 Claude Desktop 的設定檔 `claude_desktop_config.json` 裡加:
```json
{
"mcpServers": {
"irasutoya": {
"command": "python",
"args": ["C:/你的路徑/kxmind-irasutoya-mcp/server.py"]
}
}
}
```
把 `C:/你的路徑/` 換成你剛才 clone 下來的實際位置。
### 4. 重開 Claude
**沒有帳號要註冊,沒有金鑰要申請,沒有環境變數要設。** 這支就這樣。
---
## 這個圖庫有多大
實測(2026-08-27):
| | |
|---|---|
| 素材總數 | **25,419 張** |
| 分類數 | **239 個** |
| 最後更新 | 2026-08-25(還在持續增加) |
隨時可以用 `library_stats` 自己查最新數字。
---
## 九支工具
### 查詢層
| 工具 | 做什麼 |
|---|---|
| `search` | **最常用的一支。** 打中文,它自動翻成日文去搜 |
| `search_ja` | 直接用日文搜(你自己知道要打什麼的時候) |
| `list_topics` | 列出助人者常用主題的中日對照,不知道找什麼時先看這個 |
| `browse_label` | 依 いらすとや 自己的分類瀏覽(例如 `棒人間`、`医療`、`家族`) |
| `list_labels` | 列出分類(預設只列助人者用得到的,**附中譯**) |
| `library_stats` | 圖庫規模、分類數、最後更新時間 |
### 分析層
這一層才是 MCP 跟「自己開瀏覽器去搜」的真正差別。
| 工具 | 做什麼 |
|---|---|
| `suggest_for_worksheet` | **描述一個狀況,一次配好整份衛教單要用的插圖** |
| `license_check` | 算一下用幾張會不會超過免費額度 |
### 產出層
| 工具 | 做什麼 |
|---|---|
| `worksheet_template` | 產生**可列印 A4 + 手機可讀**的衛教單骨架 |
| `inline_images` | **把圖就地內嵌**,解決 Artifact 擋外部圖的問題 |
---
## 做一份衛教單的完整流程
```
1. worksheet_template("我的衛教單.html")
→ A4 骨架,列印與手機的坑都填好了
2. search("讀字會跳行") 或 suggest_for_worksheet("…")
→ 拿到圖檔網址,貼進 HTML 的 <img src>
(這一步刻意用真實網址,檔案才是人看得懂、改得動的)
3. inline_images("我的衛教單.html")
→ 把圖就地換成內嵌,檔案變成自包含
4. 發布成 Artifact
→ 有公開網址可以傳給家長,家長按 Ctrl+P 就能印
```
### 為什麼第 2、3 步要分開
**Artifact 有嚴格的 CSP,會擋掉所有外部主機的圖片**(唯一例外是 Google Fonts)。
いらすとや 的圖在 `blogger.googleusercontent.com`,直接連一定載不出來。
那為什麼不一開始就內嵌?因為一張 400px 的圖轉成 base64 大約 **148 KB**,
三張就是 445 KB —— 那些字元如果經過對話,會吃掉大量的額度,而且你完全看不懂。
所以:**寫的時候用網址(可讀),最後一步才內嵌(自包含)。
那幾十萬個字元只存在檔案裡,從頭到尾不進對話。**
### 版面已經處理好的事
`worksheet_template` 產生的骨架,這些坑都填過了(實測過三種寬度):
| | 手機 375px | 桌機 1280px | 列印 |
|---|---|---|---|
| 版面 | 滿版、零橫向捲動 | **210mm 精準 A4** | A4 + 14mm 邊界 |
| 圖文 | 上下堆疊、圖放大置中 | 並排 | 不會被切在兩頁中間 |
| 字級 | 17px | 16px | 12pt |
| 工具列 | 精簡 | 完整 | **自動隱藏** |
另外:列印時自動轉白底(深色底吃碳粉,家長也看不清楚),
頁尾的連結會把網址一起印出來(拿到紙本才知道去哪)。
`suggest_for_worksheet` 是這支的核心。你不用自己拆關鍵字,直接講狀況:
> 一個小三的孩子,讀字會跳行、抄聯絡簿抄不完,家長很焦慮
它會自己拆出「兒童 / 學習障礙 / 聯絡簿 / 焦慮 / 家長」這幾條線,
每條線各配一張,湊成一份版面用得上的組合 —— 而不是同一個概念塞五張。
> ⚠️ 你描述的是**狀況**,不是**個案**。
> 沒有姓名、沒有病歷、沒有可辨識資訊 —— **這本來就是去識別化的**,
> 不需要額外的合規動作。
---
## 🔴 授權:這一段請務必讀完
いらすとや 的規定原文:
> 商用目的の場合、一つの作成物の中に **20点まで** は無料でご利用いただけます。
> それ以上の点数をご希望される場合は **有償** となります。
**【繁體中文】** 商業用途時,同一件作品中最多可免費使用 **20 張**;
超過就要付費,**每張 1,100 日圓(含稅)**。
還有一條同樣重要:
> **素材そのものの販売・再配布は禁止。**
>
> **【繁體中文】** 素材本身不可販售、不可再散布。
### 這對你的實際意義
| 你要做的 | 結果 |
|---|---|
| 一份衛教單用 1–3 張 | ✅ **完全免費**,這正是醫院診所在做的事 |
| 一份簡報用 10 張 | ✅ 免費 |
| 一套 20 張以上的系列教材 | ⚠️ **要付費**,而且是全部計價 |
| 把圖檔重新打包分享給別人 | ❌ **禁止** |
### 「內嵌進作品」和「再散布」是兩件不同的事
這個區別很重要,因為 `inline_images` 確實會下載圖片:
| 行為 | 這是什麼 |
|---|---|
| 把插圖放進**你自己做的衛教單**裡(不管是 Word、PPT、還是內嵌成 data: URI) | **正常使用**,就是圖庫本來預期的用途,受 20 張規則規範 |
| 把圖檔本身重新打包、當素材集發給別人 | **再散布**,這是被禁止的 |
`inline_images` 做的是前者 —— 跟你把圖貼進 Word 是同一件事,
只是換成 HTML 的寫法。
### 這支程式為此做的設計
- **搜尋類的工具只回傳網址**,不下載任何東西
- **`inline_images` 只在你明講的時候才下載**,而且只處理**你自己那個 HTML 檔**裡已經出現的圖
- **預設上限 20 張**,剛好等於授權的免費上限 —— 這不是技術限制,是刻意擋在這裡的
- **repo 本身不夾帶任何素材檔**
- 每次搜尋與內嵌的結果,最後都會附上剩餘額度提醒
> ⚠️ 診所免費發送的衛教單算不算「商用」,是灰色地帶。
> **作者不是律師。** 實務上的安全線:單張沒問題,成套要留意。
> 真的要大量使用,請直接洽詢 いらすとや 官方。
官方說明:<https://www.irasutoya.com/p/terms.html>
---
## 技術筆記
いらすとや 是 Blogger 架的,有標準 feed API,**不用爬 HTML**:
```
GET https://www.irasutoya.com/feeds/posts/default?alt=json&q=<日文關鍵字>&max-results=N
```
回傳的每一筆有:
- `title.$t` — 標題(日文)
- `link[rel=alternate].href` — 頁面網址
- `content.$t` — 內含圖檔的 `<img src>`
- `category[].term` — 標籤
`robots.txt` 是空的(0 bytes),沒有任何爬取限制。
即使如此,這支還是加了 **0.8 秒的請求間隔、序列不並發** ——
這是免費資源,不要把人家打掛。
---
## 中日對照表
目前收了 **167 個中文詞**,涵蓋:
情緒(含細緻版)/ 兒童與發展 / 學校 / 家庭 / 心理與助人 / 醫療 / 長照與高齡 /
生活與 3C / 版面裝飾 / **助人者自己的處境** / **臨床議題** / **介入與技巧**
其中 65 個詞是 **實際打過 API 驗證過的** —— 候選詞全部拿去真的搜一次,
搜不到的直接剔掉。「選擇性緘默」就是這樣被剔掉的:概念存在,但圖庫裡沒有對應素材。
意外撈到的好東西:`沙盤→箱庭`、`桌遊→ボードゲーム`、`繪本→絵本`、
`藝術治療→お絵かき`、`代幣→シール`、`耗竭→燃え尽き症候群`。
一個中文詞會對到多個日文詞,因為日文同一個概念常有
**漢字、假名、外來語** 三種寫法,只打一種會漏掉一大半素材。
```python
"注意力": ["集中", "気が散る"],
"諮商": ["カウンセリング", "相談"],
"放鬆": ["リラックス", "深呼吸", "瞑想"],
```
覺得少了什麼詞,直接改 `server.py` 裡的 `ZH_TO_JA` 就行 —— 這就是給你改的。
---
## 授權
**程式碼**:MIT(見 LICENSE)
**插圖素材**:版權屬 いらすとや,本專案不擁有、不散布任何素材,
使用時請遵守上方的授權規定。
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues