値付けのダイヤルを回して、手取りがいくらになるかを見る。 KDP・Stripe・GitHub Sponsors のように、控除のルールが違うチャネルを1つの計算に載せる。
日本の消費税と各プラットフォームの手数料を、根拠の質を落とさずに扱うことが目的。
⚠️ 開発初期。いま動くのは Amazon.co.jp の KDP ロイヤリティだけ。
台帳にこう書いてあった。
| 商品 | 価格 | 粗利/件 | 根拠 |
|---|---|---|---|
| Kindle本 (JP, Select) | ¥1,250 | ¥875 | ✅ 実測 |
1,250 × 0.7 = 875。合っているように見えるが、KDP はロイヤリティ率を税込価格ではなく
税抜価格に掛ける。実際は ¥787 で、11% ずれていた。しかも「✅ 実測」の札が付いていた。
札は付いていたが、中身は暗算だった。
この数字は広告の損益分岐に使われていた。間違った数字より、間違った数字が 「実測」に見えていたことのほうが問題だった。
だから price-dial は2つのことを同時にやる。
- 控除の連鎖を正しく計算する(税 → 手数料 → 手取り)
- その結果をどれだけ信用してよいかを、値と一緒に運ぶ
from pricedial.channels.kdp import jp_royalty
r = jp_royalty(1250, rate=0.70, file_size_mb=7.71)
print(r.explain())⚠️ KDP JP ロイヤリティ (¥1,250 / 70%): 787.74 JPY
消費税 (10/110 × 税込価格): −113.64
ロイヤリティ 70%: ×0.7
配信コスト: −7.71
! あと 2.29MB 増やすと配信コストが ¥0 になる (いまは −¥8)。日本では重いほうが手取りが多い
先頭の ⚠️ は「計算式は公式で裏が取れているが、実観測がまだ無い」の意味。
35% の本なら ✅(実際の入金額と一致することを確認済み)になる。
Claude から直接引くこともできる。
pip install -e ".[mcp]"
claude mcp add price-dial -- python3 -m pricedial.mcp_server道具は5つ。手取り (kdp_jp_takehome)、価格を振って崖を探す (kdp_jp_dial)、
広告の損益分岐 (kdp_jp_breakeven)、レポートからの逆算 (kdp_jp_reconcile)、
evidence の説明 (evidence_guide)。詳細は docs/guide/mcp.md。
Evidence は3段階で、演算のたびに弱いほうへ落ちる。上がることはない。
| 意味 | |
|---|---|
✅ MEASURED |
実測。レポートの数字を割って出した値だけがここに入る |
⚠️ PARTIAL |
計算式は裏が取れているが、実観測がまだ無い |
🔴 ASSUMED |
仮値。この数字で金を動かさない |
実測 ¥477 に仮の継続月数を掛けたら、出てくる LTV は仮値になる。 これを型で担保する。人間の注意力は当てにしない。
混ぜると、決定論の出力と仮値の出力が同じ見た目で出てくる。
| 層 | 中身 | 性質 |
|---|---|---|
| 1. 手取り | 表示価格 → 税 → 手数料 → 手取り | **決定論。**全チャネルのルールが公開されている |
| 2. 採算 | 粗利 → LTV → 許容CAC | 商品による。1回売りは確定、継続課金は継続月数が要る |
| 3. いくらにするか | 競合・価格帯規制・相場 | 計算の仕事ではない。docs/methodology.md |
いま実装があるのは層1だけ。層2は層1が固まってから。層3は書き物。
GitHub Sponsors は層1にしか乗らない。支援は対価の交換ではないので、 ティア金額は原価から決まらないし、LTV や許容CAC の枠組みが当てはまらない。
| チャネル | 状態 |
|---|---|
| KDP Amazon.co.jp (70% / 35%) | ✅ 実装済み・実入金と一致 |
| Stripe (self-handle / Managed Payments) | ⬜ 次に着手 |
| GitHub Sponsors | ⬜ 未着手(手数料が公式未確認) |
| KDP 他マーケットプレイス | ⬜ 未着手(税の扱いが国ごとに違う) |
順番と理由は docs/roadmap.md。
tests/test_kdp_jp.py に並んでいるのは、KDPレポートから royalty ÷ net_orders
で割り出した実際の入金額。想定値は1つも入っていない。4つの観測窓すべてで
同じ値が出ることを確認している。
このテストは書いた直後に自前のバグを2件捕まえた。KDP は四捨五入で入金する (¥1,250 の 35% は 397.73 だが入金は ¥398)。切り捨てで実装していた。
python3 -m pytest tests/ -qこのリポジトリに入るのは公開情報だけ — 各プラットフォームの控除ルール、 計算ロジック、考え方。実売数・ロイヤリティ実額・LTV・広告費は入れない。
線引きはこれ。
他人が Amazon / GitHub で見られる数字は public。 自分のレポートにしか出ない数字は private。
隠すのは .gitignore の仕事だが、ここではそもそも置かない。一度入れると
履歴に残るし、数字は API キーと違って目立たないので気づかれない。
使い方
| getting-started | インストールと最初の1回 |
| kdp-jp | 値付け・広告判定・実測の作り方 |
| mcp | Claude から直接引く |
技術と制度の解説
| kdp-royalty-jp | KDP 日本のロイヤリティ制度 |
| evidence-propagation | 根拠の質を型で運ぶ設計 |
| mcp-fastmcp | MCP / FastMCP と docstring の役割 |
| methodology | 値付けの考え方 (3層) |
| roadmap | 次に何を足すか、何をやらないか |
MIT