Agent Skills by ALSEL
ALSEL独自Anthropic ClaudeEC・マーケティング品質スコア 100/100

rakuten-bulk-control-csv

楽天RMSの一括登録/一括除外/一括更新用CSV(コントロールカラム,商品管理番号 の2列フォーマット)を作成するスキル。商品DL CSV・商品管理画面のコピペ・Excel・PDFなどから商品管理番号を抽出し、Shift-JIS+LF改行で出力する。「一括除外リスト作って」「楽天の除外CSV」「コントロールカラムnで」「2800円以下の商品をdで」「在庫0の商品を一括削除」「商品管理番号抜いてshift-jsで」「このフォーマットで」など、楽天RMSの商品一括処理用CSVを作るタスクで必ずこのスキルを使う。コントロールカラム値(n=新規/d=削除/u=更新)と抽出条件(全件・価格・在庫・販売状態など)をユーザー指示に応じて柔軟に切り替える。 【ALSEL独自スキル】株式会社ALSEL が、19年・5,000社超の EC 支援で得たノウハウをもとに開発したオリジナルスキルです。

SKILL.md 本文

楽天RMS 一括処理CSV作成

楽天RMSの商品一括処理(一括登録・一括除外・一括更新)に投入する2列CSVを作成する。

出力フォーマット(厳守)

項目
ヘッダーコントロールカラム,商品管理番号
エンコードShift-JIS(CP932)
改行LF(楽天サンプルファイルがLFのため。CRLFにしない)
カラム区切り半角カンマ
出力先/mnt/user-data/outputs/items_<purpose>.csv

ヘッダーは全角カンマ・余分なスペース不可。バイト一致が必要。

コントロールカラム値

ユーザー指示が最優先。明示がなければ目的から判断し、迷ったら聞く。

  • n = 新規登録
  • d = 削除
  • u = 更新

「一括除外リスト」と言われた場合、RPP除外商品リストへの新規登録なら n、既存商品の削除なら d。文脈で判断できなければユーザーに確認。

商品管理番号の抽出

入力フォーマットに応じて適切な列・位置を読む。他の番号と混同しないことが最重要。

パターンA: 楽天DL CSV(商品一括ダウンロード)

  • 列名: 商品管理番号(商品URL)
  • 元ファイルはShift-JISで保存されているのでそれで読む
  • 親行(価格・在庫が空)+ SKU行 の構造になっていることがある
import pandas as pd
df = pd.read_csv(path, encoding='shift_jis', dtype=str)
ids = df['商品管理番号(商品URL)']

パターンB: 商品管理画面のコピペ(テキスト/Markdown/HTML表)

各商品ブロックの先頭にある 長い数字(7〜8桁、10000xxx1000xxx が商品管理番号。 その直後にある別の数字(500013300055 など)は商品番号で別物。混同禁止。

構造例:

通常商品
10000684       ← これが商品管理番号 ✅
500013         ← これは商品番号 ❌
ビニール紙垂中  ← 商品名

商品管理番号は数字以外の文字(例: ac2066-ac10-setburtle-ac-series-fullset-006)の場合もある。先頭の識別子を素直に取る。

パターンC: Excel貼付・スプレッドシート

ヘッダー行から商品管理番号列を特定して抽出。

フィルタ条件

ユーザー指示に応じて切り替える。

指示の例処理
「全部」「全件」「このまま」フィルタなし(全商品)
「2800円以下」販売価格 ≤ 2800
「3000円未満」販売価格 < 3000
「在庫0」「在庫切れ」在庫数 = 0
「在庫1個以下」在庫数 ≤ 1
「販売中のみ」販売状態 = 販売中
「ROAS300%未満」など複合別データと突合(要確認)

SKU構造の扱い: 楽天DL CSVで価格フィルタする場合、同一商品管理番号内に複数SKU(=複数価格)がある。デフォルトは「最安値で判定」。「全SKUが条件に該当する場合のみ」など特殊指示があれば従う。判断に迷う商品が出たら必ずユーザーに確認。

処理フロー

  1. 入力確認: ファイル形式とエンコード、商品リストの構造を把握
  2. 抽出: 商品管理番号と必要な属性(価格・在庫など)を取り出す
  3. フィルタ: 指示の条件で絞る
  4. 重複除去: ユニーク化しつつ入力の出現順を維持(楽天側で扱いやすい)
  5. 出力: Shift-JIS LF改行で書き出す
  6. 検証: バイトレベルでフォーマットを確認

出力スニペット

import csv, os
os.makedirs('/mnt/user-data/outputs', exist_ok=True)
out_path = '/mnt/user-data/outputs/items_<purpose>.csv'

with open(out_path, 'w', encoding='shift_jis', newline='') as f:
    w = csv.writer(f, lineterminator='\n')
    w.writerow(['コントロールカラム', '商品管理番号'])
    for item_id in item_ids:
        w.writerow([control_value, item_id])

検証チェックリスト

出力後、必ず以下をバイトレベルで確認してから完了報告する。

with open(out_path, 'rb') as f:
    raw = f.read()
crlf = raw.count(b'\r\n')
lf_only = raw.count(b'\n') - crlf
assert crlf == 0, f"CRLFが混入: {crlf}件"
raw.decode('shift_jis')  # デコード可能か
  • ✅ CRLFが0件、LFのみ
  • ✅ Shift-JISでデコード可能
  • ✅ 件数 = ユニーク件数(重複なし)
  • ✅ ヘッダーが正確に コントロールカラム,商品管理番号

完了報告フォーマット

ユーザーには以下を簡潔に伝える。

  • 件数(ユニーク件数)
  • コントロールカラム値(n/d/u
  • エンコード(Shift-JIS)
  • 改行コード(LF)
  • 適用したフィルタ条件
  • 抽出元から見て注意した点(SKU集約方法、迷った商品など)

冗長な説明は不要。たけさん向けは特に簡潔に。

ライセンス: MIT

詳細情報

作者
株式会社ALSEL
ライセンス
MIT
最終更新
2026/5/13
このスキルは株式会社ALSELが制作したオリジナルスキルです。掲載内容について問題がある場合は info@alsel.co.jp までご連絡ください。
制作: 株式会社ALSEL · ライセンス: MIT