Kansoku
English日本語简体中文

価格の監視

商品と読み取り先を登録して、毎朝「どの会社がいくらで売っているか」を受け取るまで。失敗したソースの扱いを含みます。

サイトの一番前に書いてある仕事です ―― 相場ではなく、どの会社が、いくらで売っているか。 それを毎朝、出所つきで受け取るための手順です。

早期アクセス中です。 一般公開の申し込みはまだ開いていません。ご希望の方は こちらからご連絡ください。

3つの言葉

商品お客様の型番やSKU。ご自身の税抜価格を添えると、差が自動で出ます
ソースその商品を読みに行く1ページ。どの国から読むかを指定します
掃引(sweep)全ソースを1回まわすこと。既定は1日1回です

ソースが「商品 × ページ × 国」の単位なのは、同じページでもドイツから開くのと東京から開くのとで、返ってくる価格が違うからです。

何を取るかを決める

読むページごとに、価格・販売者・商品名・在庫・通貨のどれを取るかを選びます。 CSSセレクタは任意です ―― 空にすると、多くのショップが既に公開している機械可読な記述から拾います。うまくいかないページでだけ、セレクタを書いてください。

取る項目を決めていないソースは、毎朝読まれて何も返しません。 そして「何も無いページ」と見分けがつきません。画面はこれを警告します。

毎朝の掃引

POST /v1/monitor/sweep
{ "limit": 25 }

期限が来たソースを取り、結果を記録します。ソースは取得の前に確保されるので、お客様の cron と当社の実行が重なっても、同じソースが二度掃かれることはありません。

二重の掃引は「行が重複する」問題ではありません。2回目は1回目が記録した掲載を見つけられず、すべてに不在を1つ数えます。 同じ朝に2回走れば、消滅の判定に届きます。

読み取りは POST /v1/extract を通ります。掃引の課金・制限・方針検査は、同じ内容を手で叩いたときと完全に同じです。別料金も別経路もありません。

返ってくるもの

{
  "batch_id": "mrun_...",
  "sources": 3, "answered": 2,
  "seen": 7, "added": 1, "repriced": 2, "gone": 0, "pending": 0,
  "excluded": [{ "sourceId": "msrc_...", "status": "refused", "error": "rate limited" }]
}

answered が、実際にページを返した数です。 消滅の判定に加わるのはこれだけです ―― 失敗したソースと、在庫が全部売れたソースは、どちらも「何も返さない」から。

失敗したソースの扱い

これがこの製品の中身です。

空で返すと、読んだ人は「そこには何も無い」と解釈して、原因を別の場所に探しに行きます。実際のメッセージは「速度を落とせ」だったのに。

受け取り方

画面 ―― 今朝の表。1行ごとに販売者・国・税抜価格・前回との差・自社比・取得時刻・為替レートとその公表日・掲載URL。今朝読めなかった行は色が変わり、「last known — not read today」と出ます。

CSV ―― 同じ行に加えて、読めなかったソースも行として入ります (価格は空、read_statusnot_read)。価格一覧から黙って落とすと、先週より短いリストが「市場が縮んだ」と読まれるからです。

メール ―― 掃引のあと、動いたものと読めなかったものがある朝だけ届きます。ワークスペースの構成員全員に、1回。

読めなかったソースは価格より先に書かれます ―― 数字を眺めて閉じる人が、その数字の意味を変える一文を必ず先に通るように。

1 source did not answer this morning. Their listings are unchanged. Nothing from them is counted as sold or withdrawn.

>

REFUSED https://... (DE) — rate limited

>

1 price moved:

>

SKU-4471 Retailer B — New York (US) ¥14,600 → ¥13,900 −¥700 https://... read 2026-08-22T02:20:04.000Z · FX 1.0000 (2026-08-20)

全部読めて何も動かなかった朝は送りません。 5日に4日空のメールは振り分けられ、何か言った日に見落とされるからです。ただし失敗があれば、値動きがなくても送ります。

Webhook ―― monitor.sweep_completed が掃引ごとに1回。 not_answered が payload に入っています。同じ batch の再実行では二度鳴りません。

数え方の約束

最終更新