Oracle3
Oracle3: 예측시장 거래 엔진·MCP 서버
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기全銀ポン: Excel/CSV/PDF の振込一覧を全銀フォーマット(FBデータ)に変換する Web ツール。変換はブラウザの中だけ。企画・開発: ここ企画
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
作成: 2026-09-03。Excel / CSV / PDF の振込一覧を全銀協フォーマット(FBデータ)に変換し、 ネットバンキングにそのまま取り込めるようにするWebツール。ブラウザ内だけで処理する。 このリポジトリには 計画(このファイル) と 動くMVP(index.html + src/)が入っている。 🚀 公開・販売開始のためにあなたが手を動かす作業は docs/launch-checklist.md にまとめてある。 DNS・特商法・Stripe・秘密鍵のバックアップ・Search Console。上から順に進めれば公開できる。 作業の決まりごとは AGENTS.md、集客と認知の計画は docs/growth-plan.md、 検索・AI検索まわりの点検記録は docs/seo-ai-audit.md、法令の確認メモは docs/compliance-check.md。README 전문 보기 ↗
作成: 2026-09-03。Excel / CSV / PDF の振込一覧を全銀協フォーマット(FBデータ)に変換し、 ネットバンキングにそのまま取り込めるようにするWebツール。ブラウザ内だけで処理する。
このリポジトリには 計画(このファイル) と 動くMVP(index.html + src/)が入っている。
🚀 公開・販売開始のためにあなたが手を動かす作業は
docs/launch-checklist.mdにまとめてある。 DNS・特商法・Stripe・秘密鍵のバックアップ・Search Console。上から順に進めれば公開できる。作業の決まりごとは
AGENTS.md、集客と認知の計画はdocs/growth-plan.md、 検索・AI検索まわりの点検記録はdocs/seo-ai-audit.md、法令の確認メモはdocs/compliance-check.md。
zengin-pon/
index.html 画面(4ステップのウィザード: ファイル → 列の確認 → 振込元 → 確認・DL)
style.css
config.js 公開設定(Google連携のクライアントID等。秘密情報は置かない)
src/zengin.js 変換エンジン(依存なし・Node/ブラウザ両用)
src/organize.js 表の自動整理(見出し推定・結合セル分解・値の形からの列推定・合計行除外)
src/dict.js 金融機関辞書の読み込み+名前→コードの逆引き
src/gsheets.js Googleスプレッドシート連携(Picker + drive.file + Drive export)
src/app.js 画面ロジック(SheetJS / pdf.js は CDN)
src/license.js Proライセンスの検証と自動更新(Ed25519 公開鍵)
src/holidays.js 銀行休業日の判定
src/site.js メニューの開閉とアクセス解析の読み込みだけ(ヘッダー/フッターは HTML に静的に埋め込む)
src/tool-yucho.js 無料ツール: ゆうちょ 記号番号の変換
src/tool-kana.js 無料ツール: 口座名義のカナ変換
zengin-format.html 全銀フォーマットの仕様解説(検索の入口)
free-tools/ 無料ツール(ゆうちょ変換・名義カナ変換)
legal.html about.html accessibility.html 法令上の位置づけ/運営者情報/アクセシビリティ方針
llms.txt robots.txt .well-known/security.txt AI・検索・脆弱性報告むけの案内
tools/site-template.js 共通部品(メニュー、フッター、OGP、Organization)
tools/build-site.js 共通部品の埋め込み+ sitemap.xml の生成(--check で埋め込み忘れを検出)
tools/build-bank-pages.js 銀行コードのページ 1,146枚の生成
tools/indexnow.js 公開後に Bing 系へ更新を通知
functions/ Stripe Webhook とライセンス更新API(Firebase・codebase "zenginpon")
docs/launch-checklist.md 公開までの手作業
test/organize.test.js 自動整理のテスト(5件)
test/license.test.js ライセンス発行と検証のテスト(4件)
data/banks.json 金融機関辞書(tools/build-dict.js で生成、元は zengin-code)
data/branches/ 銀行ごとの支店一覧(必要な分だけ取得)
data/merged.json 統廃合の旧→新コード表(手で管理)
data/history/ 金融機関・支店の統廃合・改称・番号の振り直しの履歴(tools/build-history.js で生成。2015年〜)
tools/build-history.js zengin-code/source-data の git 履歴を比べて data/history/ を作る(全履歴の clone が必要)
tools/verify_zengin.py 全銀ファイルを1バイトずつ検査する独立した検査器
tools/make_input_samples.py 入力形式ごとの検証用ファイル(samples/formats/)を作る
test/robust.test.js / test/dict.test.js 書き方の揺れ・銀行名と支店名の照合のテスト
tools/build-dict.js 辞書ビルド。DICT_VERSION=YYYY-MM-DD node tools/build-dict.js [source-data dir]
.github/workflows/update-dict.yml 毎月の辞書自動更新PR
test/zengin.test.js node test/zengin.test.js で実行(12件)
samples/ 総合振込・給与振込のサンプルCSV
ローカル起動: python -m http.server 8877 (このディレクトリで)→ http://127.0.0.1:8877/ (8765 と 8790 は別プロジェクトが使用)
テスト: node test/zengin.test.js / node test/organize.test.js / node test/license.test.js
| 区分 | 例 | 所感 |
|---|---|---|
| クラウド給与・会計 | freee, マネーフォワード, 弥生, ジョブカン, SmartHR | FBデータ標準対応。ここのユーザーは買わない |
| ネット銀行 | 楽天, 住信SBI, GMOあおぞら, PayPay, auじぶん | CSV直接取込あり。全銀形式不要 |
| 銀行提供ツール | 各行のExcel雛形・変換マクロ | 無料だが自行専用・古い・Mac不可が多い |
| フリーソフト/Excelマクロ | Vector等の全銀変換マクロ | 無料〜数千円。更新停止・マクロ警告・サポートなし |
| 有料単機能ツール | 数千円買い切り〜月額数百円のFB作成ソフト | 少数。Windowsインストール型が主流。Web完結型は少ない |
| Web完結・無料 | 総合振込.jp | 本企画と同じ発想(Excel→FBデータ、ブラウザ内処理、4ステップUI)。無料・広告収益型(freee/MF/弥生のアフィリエイト)。給与・総合対応、xlsx/xls/csv、列名自動認識 |
総合振込.jp が無料で存在する意味(2026-09-03 確認)
ターゲット
価格(2026-09-10 確定。詳細は 3f)
| プラン | 価格 | 内容 |
|---|---|---|
| Free | ¥0 | 1回20件まで。登録不要 |
| Pro | ¥480/月払い または ¥4,800/年払い | 件数無制限、テンプレート保存、振込元プロファイル、履歴、バックアップ |
全レコード120バイト固定長。文字コードは JIS X 0201(Shift_JIS の1バイト部分)。
使える文字: 数字・英大文字・半角カナ・記号 ( ) - . / ¥ 「 」 ・空白。
濁点は分離(バ = ハ + ゙)。行末は CR+LF が一般的(銀行により「区切りなし」指定あり)。
| 項目 | 桁 | 型 | 内容 |
|---|---|---|---|
| データ区分 | 1 | N | 1 |
| 種別コード | 2 | N | 21=総合振込 11=給与振込 12=賞与振込 |
| コード区分 | 1 | N | 0=JIS |
| 振込依頼人コード | 10 | N | 銀行から付与される委託者コード |
| 振込依頼人名 | 40 | C | 半角カナ |
| 振込日 | 4 | N | MMDD |
| 仕向銀行番号 | 4 | N | |
| 仕向銀行名 | 15 | C | 空白可 |
| 仕向支店番号 | 3 | N | |
| 仕向支店名 | 15 | C | 空白可 |
| 預金種目 | 1 | N | 1=普通 2=当座 |
| 口座番号 | 7 | N | |
| ダミー | 17 | C | 空白 |
| 項目 | 桁 | 型 | 総合振込 | 給与・賞与振込 |
|---|---|---|---|---|
| データ区分 | 1 | N | 2 | 2 |
| 被仕向銀行番号 | 4 | N | ||
| 被仕向銀行名 | 15 | C | 空白可 | 空白可 |
| 被仕向支店番号 | 3 | N | ||
| 被仕向支店名 | 15 | C | 空白可 | 空白可 |
| 手形交換所番号 | 4 | N | 空白 | 空白 |
| 預金種目 | 1 | N | 1/2/4/9 | 1/2 のみ |
| 口座番号 | 7 | N | ||
| 受取人名 | 30 | C | 半角カナ | 半角カナ |
| 振込金額 | 10 | N | ||
| 新規コード | 1 | N | 0/1/2 | 0/1/2 |
| (21)顧客コード1 / (11,12)社員番号 | 10 | N | ||
| (21)顧客コード2 / (11,12)所属コード | 10 | N | ||
| (21)振込指定区分 | 1 | N | 7=電信 8=文書 | — |
| (21)識別表示 | 1 | C | Y=EDIあり | — |
| ダミー | 7 / 9 | C | 空白 | 空白 |
8 + 合計件数(6) + 合計金額(12) + 空白(101)9 + 空白(119)Zengin.toZenginChars)カ)、末尾は (カ、中間は (カ)。営業所→(エイ、出張所→(シユツ-、「¥」「\」→ ¥8、普通、口座番号 = 番号の末尾「1」を除く7桁9、当座、口座番号 = 番号を7桁0埋め全銀フォーマットで銀行が見るのは 銀行コード(4桁)と支店コード(3桁) だけ。銀行名・支店名の欄は 任意で、ほとんどの銀行がコードから自動で補う。だから統廃合で名前が変わっても、コードが正しければ通る。 問題になるのは コード自体が変わる/廃止される ケースで、これは「辞書」で検知するしかない。
data/)tools/build-dict.js で data/banks.json(全行)と data/branches/XXXX.json(支店、必要な銀行分だけ読む)に変換して同梱。.github/workflows/update-dict.yml が毎月2日に最新版を取得し、
差分があれば PR を作る。マージすれば GitHub Pages に反映される。画面の下部に「金融機関一覧: YYYY-MM-DD 版」と出る。| 状況 | 画面の扱い | 出力 |
|---|---|---|
| コードが辞書にある | 銀行名・支店名を表示。空欄なら辞書のカナで補完(オプションで停止可) | 出力できる |
| 銀行コードが辞書にない | 「確認」(黄): 統廃合か入力ミスの可能性 | 出力できる(銀行で弾かれる可能性を明示) |
| 支店コードがその銀行の一覧にない | 「確認」(黄) | 出力できる |
data/merged.json に旧コードとして登録済み | 「確認」(黄): 新コードと切替日、支店番号の扱いを表示 | 出力できる |
| 桁数不正・空欄・使えない文字 | 「エラー」(赤) | 出力できない |
警告を「出力不可」にしない理由: 辞書の更新が銀行の変更より遅れることがあるため。 最終判断は銀行側のチェックに委ね、こちらは「気づかせる」役に徹する。
data/merged.json に「旧→新、切替日、支店番号の扱い(引き継ぎ/再採番)」として手で追記する。
これで旧コードのままの Excel を持ち込んだ利用者に「新コード XXXX に直してください」と案内できる。tools/ に追加する。データ形式は同じにしてあるので差し替えは容易。src/organize.js)前提: 利用者のExcelは全銀の項目順になっていない。AIは使わず、全部ルールで整理する(2026-09-03 決定: AI API・クラウドOCR・AIによる誤入力判定は使わない。データを外に出さない設計と、判定の再現性を優先)。
| 起きること | 対応 |
|---|---|
| 見出しが2行目以降、タイトル行が上にある | 見出し語の一致数と「数値が無い行」で見出し行を採点して選ぶ。手動で行を選び直せる |
| 見出しが無い | 値の形(4桁/3桁/5〜8桁/金額/カナ/漢字名/銀行文字列/支店文字列/普通・当座)で各列を判定して割り当てる。画面に「推定」バッジ |
| 見出しがあっても中身が違う(「銀行」列に銀行名) | 見出し一致でも値の形が矛盾する列は採らない |
1セルに複数項目(0005-001、普通 1234567、三菱UFJ銀行 渋谷支店、山田太郎(ヤマダタロウ)) | 6割以上の行で同じ分解ができる列は「元→項目」という仮想列に分けて右に追加する |
| 銀行コードが無く銀行名しかない | 金融機関辞書で名前→コードを逆引き(「信用金庫」等の語でコード帯を絞る。候補が複数なら「確認」で提示) |
| 支店コードが無く支店名しかない | 同じく支店一覧から逆引き |
| 合計・小計行 | 「合計」等の語、または名義も口座も無く金額だけの行を除外 |
| 口座番号と金額の区別(どちらも数字だけ) | 先頭0や7桁固定なら口座番号、下2桁00が多ければ金額。見出しがあればそちらが優先 |
限界: 縦持ち(1人1ブロック)の表や、1セルに3つ以上の自由記述が混ざるものは対象外。 推定は必ず画面で確認させる(「推定」バッジと「例」列)。同じ見出しのファイルは手直しを記憶する。
src/gsheets.js)「ピッカーで選んで直接読む」方式。仕組みは3ステップ。
drive.file(利用者が選んだファイルだけ触れる権限)のトークンを得るdrive.file の対象になるfiles.export で xlsx として取得し、いまの SheetJS 経路に流す通信は利用者のブラウザと Google の間だけ。自社サーバーは通らない。drive.file は非機密スコープなので Google の審査は不要。
必要な設定と手順は config.js の冒頭に書いた(GCPプロジェクト、Drive API / Picker API 有効化、OAuth同意画面、クライアントID、APIキー)。
未設定の間はボタンを押すと「ファイル→ダウンロード→Excel」の案内を出す。
| ページ | 役割 | SEO |
|---|---|---|
index.html | LP(ヒーロー→ツール本体→特徴→使い方→料金→FAQ抜粋) | 主キーワード「全銀フォーマット 変換」「FBデータ 作成 Excel」「給与振込 データ 作成」。SoftwareApplication 構造化データ |
guide.html | 使い方、銀行別の取込方法、注意事項 | 「BizSTATION 全銀 取込」等の銀行名×取込の検索 |
pricing.html | 3プラン+他手段との比較表+支払条件 | |
security.html | 送信しない仕組み、確認方法、保存情報、法令上の位置づけ、免責 | 情シス・士業の稟議用 |
faq.html | 40問(FAQPage 構造化データ) | ロングテール |
banks/index.html + banks/XXXX.html | 銀行コード・支店コード検索(1,146ページ、毎月自動更新) | 「○○銀行 △△支店 支店コード」検索の受け皿。最大の集客装置 |
terms.html privacy.html tokushoho.html 404.html | 規約類(noindex) | |
sitemap.xml robots.txt | data/ samples/ はクロール除外 |
共通ヘッダー・フッターは、2026-09-18 から tools/build-site.js が HTML に静的に埋め込む(下の 3g)。デザイントークンは style.css 先頭(ネイビー #14305c ×
オレンジ #ff7a1a、生成りの背景、Noto Sans JP)。イラストはインラインSVG(外部画像なし・軽量)。
AI生成のヒーロー画像や Figma での調整は、この構造の上に載せ替える前提。
| プラン | 価格 | 制限・内容 |
|---|---|---|
| Free | ¥0 | 1回20件まで、全機能、登録不要 |
| Pro | ¥480/月払い または ¥4,800/年払い | 無制限、テンプレート保存、履歴、バックアップ、振込元プロファイル複数、メールサポート、2台まで |
総合振込.jp(¥500/月・無料10行)より少し安く・無料枠を広く。事務所向けの別プランは作らない(2026-09-03 決定)。Pro に「振込元プロファイル複数」を含めて事務所需要も吸収する。 弊社はインボイス登録なし → 適格請求書は発行できない旨をサイトに明記。 未実装: 20件制限、ライセンスキー認証、テンプレート保存、履歴、バックアップ(Misefits の functions を流用して実装する)。
assets/ogp.png を作る(未作成)guide.html から独立ページに育てるサーバー不要の署名付きライセンスキーにした。Misefits の Firestore 方式より軽く、「通信しない」という売りとも整合する。
発行側(手元のPC) 利用者のブラウザ
tools/issue-key.js ── Ed25519 秘密鍵 ──▶ ZP1-<payload>.<署名> ──▶ src/license.js が公開鍵で検証 → localStorage に保存
~/.zengin-pon/license-private.pem payload = {v:1, p:"pro", e:"有効期限", id}
C:\Users\chaha\.zengin-pon\license-private.pem(リポジトリ外。失くすと発行できないのでパスワードマネージャーにも控える)。
公開鍵は src/license.js の PUBLIC_KEY。鍵の再生成は tools/gen-keypair.js(既存ファイルは上書きしない)。node tools/issue-key.js --months 12(年払い)/--months 1(月払い)/--until 2027-03-31。台帳 tools/issued-keys.csv に追記(gitignore)。functions/)既存の Firebase プロジェクト misefits に codebase zenginpon として相乗りする(新規プロジェクト・Blaze設定が不要、
codebase が別なので Misefits の関数は消えない。Firestore ルールはこのリポジトリから配らない)。
考え方: 月払いも年払いも Stripe のサブスクリプション(自動更新)。オフラインで検証できる署名付きキーは そのままだと解約後も期限まで使えてしまうので、キーの寿命を短くして(最長30日)定期的に取り直す。 取り直すたびにサーバーが Stripe の契約状態を見に行くので、解約されればそこで止まる。
| 関数 | 役割 |
|---|---|
zenginponStripeWebhook | checkout.session.completed / invoice.paid でキーを発行し、Firestore に保存してメール送信。customer.subscription.updated で解約の予約を知らせ、customer.subscription.deleted で解約日を記録して終了のメールを送る。イベントID(zenginponEvents)で二重処理を防ぎ、メールを送れなければ 500 で Stripe に再送させる |
zenginponLicense | GET ?id=<ライセンスID>。Stripe に契約状態を直接問い合わせて、契約中なら新しいキー、Stripe で解約・期限切れを確かめたら 410、Stripe に照会できず判断できなければ 503(ブラウザはキーを消さない)。10分以内に照会済みなら照会を省く。CORS はサイトと localhost のみ |
判定とメールの文面は functions/billing.js(有休ポンと同じ設計。2026-10-15 にそろえた)。
発行する期限は min(使ってよい最終日, 今日 + 30日)。使ってよい最終日は契約の状態で決める(entitledUntilOf):
契約中は期間の末日+3日、日付指定の解約(cancel_at)はその日+3日、再請求中(past_due)は期間の初日から30日+3日まで、
未払い(unpaid)・一時停止は今の期間の初日+3日、解約済みは終了日+3日、一度も払われていない契約(incomplete)には出さない。
| 状況 | 起きること |
|---|---|
| 契約中(月払い・年払いとも) | 取り直すたびに「今日+30日」まで延びる。利用者は何もしなくてよい |
| 期間末で解約 | 期間の末日+3日を超えて延びない → その後 410 → ブラウザが手元のキーを削除して Free に戻る |
| 即時解約・未払い | 次の確認(最長7日以内)で 410 → 同上 |
オフライン・Stripe の障害(503)・5xx | 何もしない。手元のキーの期限(最長30日)までは使える |
確かめ方: test/functions.test.js(Webhook・キー更新の全経路。イベントは Stripe の実際の形)、test/renew.test.js(サーバーのキーをブラウザが読めるか・自動更新の判定)、tools/preflight.mjs(設定の照合。CI でも実行)。
ライセンスIDはサブスクリプションIDのハッシュで、更新しても変わらない。
ブラウザは「期限が10日以内」または「前回の確認から7日以上」で取り直す(src/license.js の refreshIfNeeded)。
送るのはライセンスIDだけ。config.js の LICENSE_API が空なら完全オフライン動作(更新も失効もしない)。
デプロイ手順は docs/launch-checklist.md の 3-4。
Free の制限: 出力対象が20件まで(超過分は表で「Free上限外」)。列の割り当ての記憶(テンプレート)は Pro のみ。Free はページを閉じるまで。
Pro の機能: 件数無制限、テンプレート保存、振込元プロファイル複数、変換履歴(設定で有効化、最新20件、再ダウンロード)、バックアップ/復元(JSON)。
「⚙ 設定 → すべて削除」で zenginpon.* の localStorage を全消去(共有PC向け)。
node tools/issue-key.js --months 1|12 --memo "<メール>" でキーを発行し、テンプレ文面で送る(24時間以内)。functions/index.js を流用して Stripe Webhook → 自動発行・自動送信に切り替える(署名は Cloud Functions の Secret に秘密鍵を置いて同じ issue ロジックを呼ぶ)。方針。 Google は2026年5月の公式ガイドで「AI検索むけの特別な対策は不要。従来のSEOの基本が効く」と明言し、 FAQ のリッチリザルトも同月に廃止した。小手先はやらず、独自で役に立つページ・内部リンク・正確な事実に投資する。
| 追加したもの | ねらい |
|---|---|
ヘッダー/フッター/パンくず/OGP/構造化データの静的埋め込み(tools/build-site.js) | JavaScript を実行しないクローラーにもメニューと運営者表記が見える。全ページに canonical と OGP |
zengin-format.html(仕様解説。レコード表、文字、詰め方、エラー原因、用語集) | 「全銀フォーマットとは」「FBデータ」「120バイト」で調べる人の入口。AIが引用しやすい「最初の2文で答える」構成 |
free-tools/yucho.html free-tools/kana.html | 「ゆうちょ 記号番号 変換」「口座名義 カナ 株式会社 略」の長尾。登録不要で1つの悩みをすぐ解決 → 本体へ誘導 |
llms.txt、robots.txt の AI クローラー明記、.well-known/security.txt、IndexNow | 読める・正しく引用される状態にする。順位やおすすめを操作するものではない |
トップの構造化データを @graph(Organization+WebSite+WebApplication)に | 運営者「ここ企画」と会社サイトの Organization を同じ @id でつなぐ |
legal.html(銀行法・資金決済法・特商法・個情法・電気通信事業法・消費者契約法・景表法) | 「登録が要らない理由」を条文つきで公開。稟議・士業の確認に使える |
pricing.html#confirm(申込み前の確認事項) | 特商法12条の6(最終確認画面)に沿って、分量・価格・支払時期・自動更新・解約・返金を1つの表に |
privacy.html#external(外部送信の一覧)、委託先、外国にある第三者 | 電気通信事業法の外部送信規律、個情法28条に沿う情報提供 |
accessibility.html、スキップリンク、フォーカス表示、動きを減らす設定への対応、ドロップ領域のキーボード操作 | 障害者差別解消法の合理的配慮。JIS X 8341-3:2016 AA に「配慮」(試験未実施なので「準拠」とは書かない) |
| 「サンプルで試す」ボタン2種、振込元のお試し入力、整理前→整理後の図、用語のヘルプ | 手元にファイルが無くても30秒で最後まで体験できる。お試しの値は保存しない |
about.html(運営者情報・制作メモ)、フッターの「企画・開発・運営:ここ企画」 | ここ企画の制作実績として読める形にする |
ページを足すとき・共通部品を直すときの手順は AGENTS.md の 2。CI(.github/workflows/check-site.yml)が
テストと「埋め込み忘れ」を push のたびに確認する。
| 銀行/サービス | 形式 | メモ |
|---|---|---|
| 三菱UFJ BizSTATION | 全銀(CRLF) | 依頼人コード必須 |
| みずほ e-ビジネスサイト | 全銀(CRLF) | 給与は種別11/12 |
| 三井住友 Web21 | 全銀 | |
| りそな ビジネスダイレクト | 全銀 | |
| ゆうちょ Biz | 全銀 | 記号番号変換が必要 |
| 信金(WEB-FB) | 全銀 | 「改行なし」指定の信金がある |
| 地銀各行 | 全銀 | 拡張子 .txt/.dat 指定あり |
| 楽天・住信SBI・GMOあおぞら・PayPay | CSV または 全銀 | CSV直接取込あり |
「レコード区切り」「拡張子」は画面のオプションで切替可能。 次のステップ: 主要行の取込マニュアルを集め、上表を「銀行別プロファイル」として選ぶだけにする。
ブラウザ(GitHub Pages / 静的)
├─ SheetJS(xlsx/csv 読込) CDN
├─ pdf.js(テキスト層PDF → 表) CDN
├─ src/zengin.js(変換・検証・JIS X 0201 エンコード)
└─ localStorage(依頼人情報・列割り当て・ライセンスキー)
Firebase(Misefits と同じ構成を流用)
├─ Cloud Functions: stripeWebhook(決済完了 → ライセンスキー発行・メール送信)
│ verifyLicense(キー検証・端末登録)
└─ Firestore: licenses/{key}
Stripe: Checkout(サブスク or 買い切り)
studio8080/zengin-fb → GitHub Pages → zenginpon.kokokikaku.com(Squarespace の DNS に CNAME 追加。~/.claude/CLAUDE.md の注意事項参照)。Excel / CSV 読込、見出し行の自動検出、列の自動割り当て+記憶
総合振込 / 給与振込 / 賞与振込
名義カナ自動変換・法人略語・ゆうちょ変換・行ごとの検証・画面上で修正
120バイト固定長生成、JIS X 0201 出力、CRLF/LF/なし、拡張子選択
PDF(テキスト層あり)の簡易表抽出(β)
4ステップのウィザードUI(総合振込.jp を参考に、種別カード・大きなドロップ領域・列割り当て表に「例」列・状態カード)
金融機関辞書(1,146行・28,944支店)による銀行名表示、名称補完、存在チェック(黄色の「確認」)、統廃合表の仕組み、毎月の自動更新PR
表の自動整理(見出し推定・結合セル分解・値の形からの列推定・銀行名/支店名→コード逆引き・合計行除外)
Googleスプレッドシート連携のコード(config.js に GCP の設定を入れれば有効になる)
data/merged.json に直近数年の統廃合(旧→新コード)を実データで埋めるtokushoho.html / privacy.html を雛形に)legal.html に公開し、
社内メモは docs/compliance-check.md。銀行への送信や口座情報の取得(API連携)を足すと結論が変わるので、足す前に必ず再確認する。