株式会社明正 様|AI業務内製化 1DAY合宿 例題1 手順書
上から順に読んで、そのとおりに進めてください。貼るもの・押すボタンは、すべてこのページに入っています。 画面の見た目がこのページと違っていたら、探し回らずに手を挙げてください。すぐに伺います。
やることは1つだけです。Outlook に届いている輸出依頼のメールをコピーして、n8n に貼り付けます。 すると、そのメールに書かれている内容が自動で読み取られて、Google スプレッドシートの案件台帳に1行追加されます。
当日は、お預かりしている5案件のうち MASS360008(輸出案件・当社にて本船手配) のスレッドを使います。 このスレッドは何往復もしていますが、使うのは いちばん下にある、最初の依頼メール です。
図1 スレッドのいちばん下(=いちばん古い6/8のメール)が、新しい案件の依頼メールです。ここに案件の条件が全部書かれています。
これが今日貼り付けるメールです。実物を開いて、同じものが表示されているか確かめてください。
図2 貼り付けるメールの全体。署名部分(会社の住所・電話)は貼り付けても構いません。AIが読み飛ばします。
ここがこの例題の心臓部です。同じメールに色を付けました。 この色の付いた部分が、そのままスプレッドシートの列に入っていきます。先にこの対応を目で見ておいてください。
図3 色の付いた18か所が、スプレッドシートの18列に入ります。件名の中にも情報が入っている点に注目してください(搬入日・依頼種別・建値・参照番号・荷受人)。
このメールを1回貼り付けると、台帳はこうなります。これがゴールです。
| 受信日時 | 依頼元 | 担当者 | 依頼種別 | 荷主参照番号 | 荷受人 | 建値 | 積地(POL) | 揚地(POD) | |
|---|---|---|---|---|---|---|---|---|---|
| 2 | 2026-06-08 14:29 | M商事株式会社 | 相澤様 | 通関・輸出依頼 | MTS-226399 | 〇〇 MOTOR (VIETNAM) CORPORATION | CIF | YOKOHAMA, JAPAN | HOCHIMINH, VIETNAM |
| 品名 | 数量・重量 | 梱包 | コンテナ | 搬入日 | 納入先 | 依頼されていること | 要返信 | 期限 | |
|---|---|---|---|---|---|---|---|---|---|
| 2 | リフロー炉(SOLSYS-8031) | 1台 L3,650×D855×H1,410mm / 1t | 木枠梱包済み | 20ft FCL ×1 | 2026-06-19 | ㈱明正 出田町営業所 | ターゲットスケジュールの連絡 | 要 | 記載なし |
図4 列が18あるので、上下2段に分けて表示しています。実際は横に1行で並びます。
ここから実際の作業です。全部で6ステップ、33分ほどを見込んでいます。
列名を入れた雛形をご用意しています。開くとコピーを作るか聞かれますので、そのまま作成してください。ご自身のドライブに、18列の見出しが入ったシートができます。
① 下のボタンから雛形を開く
② 「コピーを作成」を押す
③ A1 から R1 まで、18個の列名が横に並んでいることを目で確かめる
ブラウザのアドレス欄に sheets.new と入力して Enter。 左上の A1 をクリックし、下のブロックを貼り付けます。
受信日時 依頼元 担当者 依頼種別 荷主参照番号 荷受人 建値 積地(POL) 揚地(POD) 品名 数量・重量 梱包 コンテナ 搬入日 納入先 依頼されていること 要返信 期限
最後に、画面上部のファイル名をクリックして、案件台帳 という名前に変えておきます。
図5 左上のファイル名の部分をクリックすると、その場で書き換えられます。この名前は、あとで n8n から書き込み先を選ぶときに使います。
まず n8n を開きます。ご登録のときに届いたメールに、ご自身の n8n のリンクが載っています。
https://(ご自身の名前).app.n8n.cloud/home/workflows のような形です。
ブックマークに入れておくと、当日「どこから入るのだったか」で迷いません。
図6 この画面が出れば n8n に入れています。右上の Create workflow を押すと、何も置かれていない広い画面(キャンバス)になります。
① 下のブロックの「コピー」を押す
② n8n の何もない画面の上でクリックしてから、⌘+V(Windows は Ctrl+V)を押す
③ ノードが並べば成功です
{
"name": "案件メール → 案件台帳",
"nodes": [
{
"parameters": {
"formTitle": "案件メールを貼り付ける",
"formDescription": "Outlook のメールをコピーして、下の欄に貼り付けてください。",
"formFields": {
"values": [
{ "fieldLabel": "件名", "requiredField": true },
{ "fieldLabel": "本文", "fieldType": "textarea", "requiredField": true }
]
},
"options": {}
},
"id": "n1",
"name": "メールを貼り付ける",
"type": "n8n-nodes-base.formTrigger",
"typeVersion": 2.2,
"position": [0, 0]
},
{
"parameters": {
"promptType": "define",
"text": "=あなたは国際物流の営業事務担当です。次の依頼メールを読み、案件台帳に載せる項目を抜き出してください。\n\n必ず次の JSON だけを返してください。前後に説明文を書かないでください。\n読み取れない項目は空文字にしてください。推測で埋めないでください。\n\n{\n \"依頼元\": \"差出人の会社名\",\n \"担当者\": \"差出人の氏名(敬称付き)\",\n \"依頼種別\": \"通関・輸出依頼 / 通関・輸入依頼 / 見積依頼 / 連絡 のいずれか\",\n \"荷主参照番号\": \"件名や本文にある取引先側の管理番号\",\n \"荷受人\": \"CONSIGNEE の正式名称\",\n \"建値\": \"CIF / FOB / EXW など\",\n \"積地\": \"POL。都市名と国名\",\n \"揚地\": \"POD。都市名と国名\",\n \"品名\": \"貨物の名称と型式\",\n \"数量重量\": \"個数・寸法・重量をまとめて\",\n \"梱包\": \"木枠 / パレット / 裸 など\",\n \"コンテナ\": \"20ft FCL / 40HQ / LCL など。本数も\",\n \"搬入日\": \"YYYY-MM-DD 形式。年がなければ受信年を補う\",\n \"納入先\": \"搬入先の営業所名や倉庫名\",\n \"依頼されていること\": \"先方が求めているアクションを1文で\",\n \"要返信\": \"要 または 不要\",\n \"期限\": \"返信や対応の期限。書かれていなければ 記載なし\"\n}\n\n--- 件名 ---\n{{ $json['件名'] }}\n\n--- 本文 ---\n{{ $json['本文'] }}",
"options": {}
},
"id": "n2",
"name": "Claudeに読ませる",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"typeVersion": 1.5,
"position": [240, 0]
},
{
"parameters": { "options": {} },
"id": "n3",
"name": "Claude",
"type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
"typeVersion": 1.3,
"position": [280, 200]
},
{
"parameters": {
"jsCode": "const t = $input.first().json.text || $input.first().json.output || '';\nconst m = t.match(/\\{[\\s\\S]*\\}/);\nconst d = m ? JSON.parse(m[0]) : {};\nconst pad = (n) => String(n).padStart(2, '0');\nconst now = new Date();\nreturn [{ json: {\n '受信日時': `${now.getFullYear()}-${pad(now.getMonth()+1)}-${pad(now.getDate())} ${pad(now.getHours())}:${pad(now.getMinutes())}`,\n '依頼元': d['依頼元'] || '',\n '担当者': d['担当者'] || '',\n '依頼種別': d['依頼種別'] || '',\n '荷主参照番号': d['荷主参照番号'] || '',\n '荷受人': d['荷受人'] || '',\n '建値': d['建値'] || '',\n '積地(POL)': d['積地'] || '',\n '揚地(POD)': d['揚地'] || '',\n '品名': d['品名'] || '',\n '数量・重量': d['数量重量'] || '',\n '梱包': d['梱包'] || '',\n 'コンテナ': d['コンテナ'] || '',\n '搬入日': d['搬入日'] || '',\n '納入先': d['納入先'] || '',\n '依頼されていること': d['依頼されていること'] || '',\n '要返信': d['要返信'] || '',\n '期限': d['期限'] || ''\n} }];"
},
"id": "n4",
"name": "列に整える",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [480, 0]
},
{
"parameters": {
"operation": "append",
"documentId": { "__rl": true, "value": "", "mode": "list" },
"sheetName": { "__rl": true, "value": "", "mode": "list" },
"columns": {
"mappingMode": "autoMapInputData",
"value": {},
"matchingColumns": []
},
"options": {}
},
"id": "n5",
"name": "台帳に1行追加",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.5,
"position": [720, 0]
}
],
"connections": {
"メールを貼り付ける": { "main": [[{ "node": "Claudeに読ませる", "type": "main", "index": 0 }]] },
"Claudeに読ませる": { "main": [[{ "node": "列に整える", "type": "main", "index": 0 }]] },
"Claude": { "ai_languageModel": [[{ "node": "Claudeに読ませる", "type": "ai_languageModel", "index": 0 }]] },
"列に整える": { "main": [[{ "node": "台帳に1行追加", "type": "main", "index": 0 }]] }
},
"pinData": {}
}
貼り付けると、画面はこうなります。
図7 4つのノードが左から右に一列に並びます。下にぶら下がっている小さい「Claude」は、どのAIを使うかを指定する部品です。
図8 貼り付け直後はこの形です。右端のスプレッドシートのノードに赤い印が出ていますが、これは正常です。つなぎ先をまだ選んでいないだけで、次の手順で消えます。
貼り付けたばかりのノードには、赤い印が付いています。「どのアカウントで動かすか」がまだ決まっていないためです。2か所だけ設定します。
下にぶら下がっている Claude のノードをダブルクリックして、2つの欄を設定します。
Credential の欄で Gateway credits を選びます。これは n8n に付いてくる無料の枠です。 ご自身で API キーを用意する必要はありません。
続いて Model の欄で Claude Sonnet 4.6 を選びます。
図9 この2つの欄だけを触ります。
図10 Model を Claude Sonnet 4.6 にした状態。
台帳に1行追加 のノードをダブルクリックして、上から順に設定します。
こちらは Claude と違い、ご自身の Google アカウントとつなぐ作業がいります。 Credential の欄で新しく作成を選び、Google でサインインしてください。
図11 Credential の欄から新規作成に進みます。
図12 ふだんお使いの Google アカウントでサインインします。
途中で「このアプリを信頼しますか」といった確認が出ます。「続行」を押し、チェックマークが並ぶ画面が出たら、すべてにチェックを入れて先へ進みます。
図13 ここですべてにチェックを入れてください。1つでも外れていると、書き込みのときに失敗します。
つながったら、書き込み先を選びます。Document で手順1の 案件台帳、Sheet で Sheet1 を選びます。
図14 一覧から 案件台帳 を選びます。
図15 続いて Sheet1 を選びます。
最後に Mapping Column Mode を Map Automatically にします。
図16 Map Automatically は「前から来たデータの名前と、シートの列名が同じなら勝手に入れる」という設定です。手順1の18個の列名と、ワークフローが作る18個の名前が同じなので、1つずつ指定する必要がありません。
Outlook に戻ります。Step 0 で確認した 6/8 の依頼メール を開いてください。
① 件名をドラッグして選択 → ⌘+C でコピー
② n8n のフォーム(次のStepで開きます)の「件名」欄に貼る
③ 本文に戻り、「株式会社明正 石田様」から「以上、何卒宜しくお願い申し上げます。」までを選択してコピー
④ フォームの「本文」欄に貼る
図17 まずこの件名の行をコピーします。搬入日・依頼種別・建値・参照番号・荷受人が、この1行に入っています。
図18 実際のメールの本文です。本資料では取引先名・担当者名・メーカー名を伏せていますが、当日は実物をそのままお使いいただきます。赤い枠の範囲をコピーしてください。
n8n の画面に戻り、下の方にある Execute workflow を押します。 すると 「メールを貼り付ける」 の画面(フォーム)が別のタブで開きます。
図19 画面のいちばん下にあります。
図20 この画面に貼り付けて Submit を押します。ここが「メールを n8n に入れる」ところです。
図21 実際の画面です。別のタブで開きます。
Submit を押すと、n8n の画面に戻って処理が走ります。すべてのノードに緑のチェックが付けば成功です。
図22 緑のチェックが4つ。どこかで赤くなったら、そのノードをダブルクリックすると理由が書いてあります。読めなければ手を挙げてください。
Step 1 で作った 案件台帳 を開いてください。2行目に、いま貼り付けたメールの内容が入っています。
図3の色分けを思い出しながら、メールのどの文字が、どの列に入ったかを1つずつ目で追ってください。 「件名の中の 6/19 が、搬入日の列に入っている」——これが分かれば、この例題の目的は達成です。
図23 成功すると、すべてのノードの右下に緑のチェックが付き、線の上に 1 item と出ます。
図24 スプレッドシートを開くと、2行目が増えています。これがこの例題のゴールです。本資料では取引先名・担当者名・荷受人・メーカー名を伏せています。
6ステップが終わった方は、こちらに進んでください。ここからが本当の練習です。
同じ手順で、他の4案件の依頼メールも貼り付けてください。CBC340018・CBC350011・OCEN360005・OWEL36J003 です。 それぞれスレッドのいちばん下のメールを使います。
| 依頼元 | 依頼種別 | 荷主参照番号 | 建値 | 積地(POL) | 揚地(POD) | コンテナ | 要返信 | |
|---|---|---|---|---|---|---|---|---|
| 2 | M商事株式会社 | 通関・輸出依頼 | MTS-226399 | CIF | YOKOHAMA, JAPAN | HOCHIMINH, VIETNAM | 20ft FCL ×1 | 要 |
| 3 | C社 | 通関・輸出依頼 | P7406-01 | — | — | — | — | 要 |
| 4 | C社 | 通関・輸出依頼 | — | CIF | — | — | — | 要 |
| 5 | O社 | 通関・輸入依頼 | — | FOB | — | — | — | 要 |
| 6 | W社 | 通関・輸出依頼 | — | CIF | — | — | — | 要 |
図25 5件入れると、「—」(空欄)がどこに多く出るかが見えてきます。空欄が多い項目ほど、メールの書き方がばらついている項目です。
Claudeに読ませる のノードをダブルクリックすると、長い日本語の文章が入っています。これが「AIへの指示(プロンプト)」です。 間違っていた箇所を、ここに書き足して直します。
図26 ノードを開くと、真ん中の大きな欄に指示文が入っています。項目を足したいときは、この中の JSON に1行足して、スプレッドシート側にも同じ名前の列を足します。
・日付が「6/19」のように年がない場合は、メールの受信年を補って YYYY-MM-DD にしてください。
・コンテナは本数まで書いてください。本数の記載がなければ「×1」としてください。
・依頼種別は、件名の【 】の中に書かれている言葉を優先してください。
・荷受人は CONSIGNEE の正式名称をそのまま書き、日本語訳はしないでください。
・弊社の営業所名(出田町営業所など)は「納入先」に入れ、「荷受人」には入れないでください。
書き足したら、もう一度 Execute workflow から同じメールを入れ直して、直ったかどうかを確かめます。 直っていなければ、書き方を変えてもう一度。この繰り返しが「AIに仕事を教える」という作業の実体です。
株式会社明正 様|AI業務内製化 1DAY合宿 例題2 手順書
例題1の続きです。新しく覚えるのは「2つの入力を扱う」と「条件で枝を分ける」の2つだけ。 ノードの置き方・つなぎ方は例題1と同じですので、操作を覚え直す必要はありません。
社内指示書(SI)と、インボイス・パッキングリスト(IV/PL)を貼り付けます。 すると、同じ項目が左右に並び、一致・不一致・片方にしかないに仕分けられて、 不一致が1件でもあれば「要確認リスト」が出てきます。
当日は CBC350011(輸出・インドヨウ素) の通関用書類2点を使います。 こちらで先に突き合わせてみたところ、反応の異なる食い違いが一通り含まれていました。1案件で論点がすべてカバーできます。
図1 赤が本当の食い違い、黄が「AIは不一致と言うが、運用上は正しいかもしれない」もの。灰色は指示書にしか無い項目で、インボイスが持たない情報です。黄と灰色をどう扱うかが、この例題の本題です。
全部で4ステップ、35分ほどを見込んでいます。今回は Claude の「プロジェクト」だけで進みます。
Claude を開き、左のメニューから 「プロジェクト」を選んで、右上の 「新規プロジェクト」を押します。
図2 左のメニューの「プロジェクト」と、右上の「新規プロジェクト」。
作成の画面で2つ聞かれます。下のとおりに入れてください。3つ目の公開設定は 「プライベート」のままで結構です。
① 何に取り組んでいますか? … 書類突合プロジェクト
② 何を達成しようとしていますか? … 複数のファイルを比較して、差異を一覧化します。
③ 公開設定 … プライベート
図3 この2つは、あとから変えられます。迷わず進めてください。
作ったプロジェクトの画面が開きます。右側に 「指示」という欄がありますので、その + を押します。
図4 右側の「指示」の+を押します。下の「コンテキスト」「フォルダ」は今回使いません。
開いた欄に、下のブロックをそのまま貼り付けて 「指示を保存」を押します。 ここがこの例題で何度も手を入れる場所です。
あなたは国際物流の通関担当です。
添付された2つの書類を突き合わせ、同じ項目を並べて一致しているかを判定してください。
【大事なルール】
- どちらが正しいかは判断しないでください。事実として「違っている」ことだけを報告してください。
- 片方にしか書かれていない項目は、判定を「片方のみ」としてください。
- 書類ごとに呼び名が違っても、同じ意味の項目は同じ行にまとめてください。
例: 数量/Quantity、総重量/Gross Weight/KGS、容積/Measurement/M3、
本船/Vessel、積地/Port of Loading、揚地/Port of Discharge、
個数/No. of Packages/Pkgs、荷印/Marks & Nos.
【必ず確認する項目】
当事者
荷送人(社名・住所・TEL/FAX)
荷受人(社名・住所。L/C 取引では銀行名になることがある)
通知先(社名・住所・IEC/GSTIN/PAN・E-MAIL)
輸送
本船名と航海番号 / 受取地 / 積地 / 揚地 / 引渡地
CUT日 / 出港日 / 入港日 / 現地ETA
BOOKING NO. / コンテナのサイズ・タイプ・本数
貨物
荷印(Marks & Nos. の全行)/ 品名 / 個数と荷姿
数量 / 総重量 / 正味重量 / 容積
金額と書類
インボイス番号 / S/I番号 / 担当者
建値(CIF・FOB など)と金額
運賃の条件(PREPAID / COLLECT / AS ARRANGED の別)
B/L の種類(ORIGINAL / SURRENDER / WAYBILL)と枚数
B/L発行地 / 運賃支払地
L/C番号と発行銀行 / HSコード / 搬入日
【この2書類の性質】
社内指示書は上の項目をほぼすべて持ちますが、インボイスとパッキングリストは
商取引の書類なので、次の項目を持ちません。片方にしか無くても異常ではありません。
BOOKING NO. / B/L の種類と枚数 / B/L発行地 / 運賃支払地 /
コンテナのサイズと本数 / S/I番号 / 担当者 / 搬入日
【報告しなくてよい違い】
次は毎回出る表記の違いで、実務上は問題ありません。一致として扱ってください。
- 運賃の条件が「PREPAID AS ARRANGED」と「PREPAID」。
AS ARRANGED は B/L に金額を刷らせないための書き方で、条件は同じです。
- 荷受人が銀行(TO THE ORDER OF …)で、もう一方が実際の届け先。
L/C 取引ではこの形になります。
- 数量が「総重量」と「正味重量」で違う。見ている欄が違います。
- 社内指示書の金額が 0.00。金額を書かない運用です。
- 日付の書き方の違い(2025.12.04 と DEC. 04, 2025 など)。
【出力の形】
はじめに「確認が必要な項目:○件」と書いてください。
そのあと、次の4列の表を出してください。
項目 | 社内指示書の値 | インボイス側の値 | 判定
判定は「一致」「不一致」「片方のみ」の3つだけを使ってください。
表のあとに、不一致の項目だけをもう一度並べ、
それぞれ何がどう違うのかを1行で説明してください。
図5 貼り付けたあとの状態。この欄はあとから何度でも開いて書き直せます。
「あなたは◯◯の担当者です」と、最初の1行に置きます。
同じ書類でも、見る観点が変わります。
「どちらが正しいかは判断しないでください」と書きます。
書かないと、AIはもっともらしい理屈で片方を正しいと言い切ってきます。 そうなると、人が確かめる余地がなくなります。
事実だけを挙げさせ、正誤は人が決める。
見るべき項目を、記憶から書き出そうとしないでください。
必ず抜けますし、抜けたことにも気づけません。
記入済みの見本、確認用のチェック表、過去に作った完成物。 答えがすでに載っている資料を渡して、項目を出させます。
この資料では何と何を確認していますか。
見ている項目を、一覧にしてください。
③で資料を読ませると、項目だけでなく「毎回こう違う」も見えてきます。
毎回出る違いは、先に「報告しなくてよい」と書いておきます。
人が毎回消すより、最初から出させないほうが早く済みます。
表の列、件数の書き方まで指定します。
毎回同じ形で返ってくれば、並べて見比べられます。 形が変わると、比べる前に読む作業が増えます。
精度を上げるのは、モデルを変えることではありません。
何を見るべきか、何は見なくていいかを渡すことです。
そしてその答えは、たいていすでに社内のどこかに、紙や見本の形で存在しています。
配布した CBC350011 の通関用書類2点を、そのままプロジェクトに添付します。 PDFを開く必要はありません。ファイルを渡すだけです。
① 入力欄のクリップの印から、次の2つのファイルを添付する
CBC350011 MASTER SI (ACTUARL).pdf(社内指示書)
CBC350011 IV PL.pdf(インボイスとパッキングリスト)
② 「突き合わせてください」と打って送る
CBC350011 IV PL.pdf は紙をスキャンしたPDFで、文字を選択してコピーすることはできません。
Claude は画像として読みますので、そのまま添付すれば読み取れます。
コピーと貼り付けで進めようとすると、ここで手が止まります。
図6 PDF2点を添付して「突き合わせてください」と打った状態。PDFを開く必要はありません。
1分ほどで表が出てきます。出てこない、途中で止まる、表の形になっていないといった場合は、 もう一度「突き合わせてください」と打てば作り直します。
図7 出てくる形です。はじめに件数、そのあと4列の表。本資料では取引先名と住所を伏せています。
ここがこの例題の本題です。出てきた表と、Step 0 の図1を並べて見比べます。 見るのは「合っているか」ではなく、合っていないものの中身です。
① 本当の食い違い(図1の赤)……出港日、通知先の住所
② 運用上は問題ない食い違い(図1の黄)……荷受人、運賃の条件、数量、金額
③ インボイスが持たない項目(図1の灰)……BOOKING NO.、B/L の種類、B/L発行地、コンテナ、S/I番号、HSコード、搬入日
④ 誤検知……図1に挙がっていないのに「不一致」と言ってきたもの
④が出たら、それはAIの読み間違いか、呼び名の違いを同じ項目とみなせていないかのどちらかです。 どの項目で出たかを書き留めておいてください。指示文の【報告しなくてよい違い】に1行足せば、次から出なくなります。 この「出てきたものを見て、指示文に書き足す」の繰り返しが、精度を上げる作業そのものです。
USD 0.00、インボイスが USD 735,000.00 です。
AIは当然「不一致」と言いますが、社内指示書に金額を入れない運用なら、これは毎回出る不一致です。
毎回出る不一致は、やがて誰も読まなくなります。だから消します。
逆に、出港日のずれは毎回出るものではないので、残します。
この線引きは御社の運用を知っている方にしかできません。
CBC350011 向けに調整したものを、そのまま別の案件に当ててみます。