1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Code と作った販売用ZIP、53ファイルのうち購入者向けは19個だけだった──出荷前に確認している5つのこと(実際の失敗から)

1
Last updated at Posted at 2026-10-22

Claude Code と一緒に作ったデジタル商品(監視用のテンプレート集)を Gumroad で売っています。

公開後に、購入者と同じ手順で自分の商品をテスト購入してみました。届いたZIPを開くと、ファイル53個のうち、購入者向けの中身は一部だけでした。残りは販売者側の資料です。

  • ローンチ計画、X の投稿案、ニュースレターの告知文
  • 価格の検討メモ(pricing_recommendation.md)
  • ストアの商品説明の下書き、ローンチの日誌

作業フォルダをそのままZIPにしていたのが原因です。AIエージェントは「商品づくり」と「売るための準備」を同じフォルダで進めるので、放っておくと両方が混ざります。購入者向けに整理した版を作り直し、ファイル数は19個になりました。

この記事は、その後「ZIPを出荷する前に必ずやる」ことにした確認のまとめです。BOOTH・Gumroad・note などでテンプレートやスクリプトを売っている方向けです。

この記事の続き(動くコード付き)は、本『AIエージェントに無人で書き込ませる前の実装ガイド ― 二重送信・暴走・夜間停止を防ぐPython』の第7章「納品物の検査:お客さんに実際に届くものを確かめる」に書きました。第1〜2章は無料で読めます。

無料・登録不要:この記事の内容を含む「AIエージェント 本番前チェックリスト」(25項目・1ページPDF・日本語)を、そのままダウンロードできます。
https://github.com/neuralalpha-ai/downloads/blob/main/agent-ops-preflight-checklist-ja-v1.0.pdf

1. 購入者と同じ経路で受け取って、開く

手元のフォルダを見て「大丈夫」と判断しない。販売ページから実際に受け取ったファイルを開きます。

  • Gumroad はテスト購入ができます。自分のカードで本当に払う必要はありません
  • 受け取ったZIPを新しいフォルダに展開し、ファイル一覧を目で見る
  • 「購入者がこれを見たらどう思うか」で1ファイルずつ判断する

今回見つかったのは、この1回のテスト購入でした。

2. 入れるファイルを「許可リスト」で決める

「除外するもの」を列挙すると、新しく増えた社内メモが抜けます。逆に、ZIPに入れてよいものだけを列挙します。

INCLUDE = [
    "README.md", "QUICKSTART.md", "INSTALL.md", "LICENSE.txt", "CHANGELOG.md",
    "deliverables/",   # この下だけが購入者向け
]

AIエージェントに「販売用のファイルを作って」と頼むと、気を利かせて launch_content/ や storefront/ を同じ階層に作ります。許可リストなら、そこは自動で外れます。

3. 同じ入力からは同じZIPができるようにする

ZIPは、中身が同じでもファイルの時刻や並び順が違うとハッシュ値が変わります。それだと「購入者が受け取ったのはどの版か」を後から特定できません。

Python 標準の zipfile で、並び順・時刻・権限を固定して作っています。

import zipfile

def build(files, out, prefix):
    with zipfile.ZipFile(out, "w") as z:
        for rel in sorted(files):                          # 並び順を固定
            zi = zipfile.ZipInfo(prefix + rel, date_time=(2026, 10, 8, 0, 0, 0))  # 時刻を固定
            zi.compress_type = zipfile.ZIP_DEFLATED
            zi.external_attr = 0o644 << 16                  # 権限を固定
            z.writestr(zi, (SRC / rel).read_bytes())

2回作って SHA-256 が一致することを確認してから、アップロードします。

sha256sum dist/kit-v0.1.1.zip

4. アップロード前と、テスト購入後にハッシュ値を照合する

  • 作ったZIPの SHA-256 を記録する
  • アップロードする直前に、もう一度計算して一致を確認する
  • テスト購入で届いたZIPの SHA-256 も計算し、一致を確認する

「購入者から『ファイルが動かない』と言われた」ときに、どの版を受け取ったのかをハッシュ値で答えられます。

5. 説明文も「購入者向け」になっているか見る

ZIPの中だけでなく、商品ページの説明文も確認します。私の別の商品では、説明文が社内向けの下書き(「Gumroad listing draft」「Suggested price」といった見出し)のまま公開されていました。AIが作った下書きを貼ったまま、見直していなかったためです。

まとめ

  • 自分で購入者と同じ経路で受け取り、展開して1ファイルずつ見る
  • ZIPに入れるものは許可リストで決める(除外リストにしない)
  • 並び順・時刻・権限を固定して、同じ入力から同じZIPを作る
  • SHA-256 を作成時・アップロード前・テスト購入後で照合する
  • 商品説明が社内向けの下書きのままになっていないか見る

続きを読む

この記事の内容は、本『AIエージェントに無人で書き込ませる前の実装ガイド ― 二重送信・暴走・夜間停止を防ぐPython』の第7章「納品物の検査:お客さんに実際に届くものを確かめる」で、動くコード付きで解説しています。

本の第1章・第2章は無料で読めます。まず無料の章から合うか確かめてください。

Kindle 版(Amazon)もあります。端末で読みたい方はこちらからどうぞ。

AIエージェントに作業を任せる前の確認項目を、25項目の1ページ(日本語・PDF)にまとめて無料で配布しています。今回の内容は「6. 納品物」の項目です。
https://neuralalpha.gumroad.com/l/agent-ops-preflight-ja?utm_source=qiita&utm_medium=article

二重送信を防ぐ記録帳(Python標準ライブラリのみ・1ファイル)はこちらで公開しています。
https://github.com/neuralalpha-ai/agent-write-ledger

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?