尚未检测到更新。GitHub 发布版本后会显示在这里。
制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗ぴよりんの公式発表・プレスリリース・メディア記事を自動で集めて表示するページです。 GitHub Actions が1時間ごとに情報を集め、GitHub Pages で公開します。予定の読み取り・関連判定・ぴよのメモ作りに Claude API(Haiku)を少し使います。スマホでは、右下で待機しているマスコットの「ぴよ」を押すとチャットできます。
GitHub Actions(1時間ごと・毎時23分)
└ scripts/fetch_news.py(7つの情報源を同時に取得)
├ ぴよりん公式サイト「お知らせ」
├ PR TIMES(ジェイアール東海フードサービス)
├ Googleニュース「ぴよりん」(関連度順・直近7日・直近1日)
└ Bingニュース「ぴよりん」(関連度順・直近7日)
↓ 新しい記事だけ追記(同じ話題は「ほか◯件」にまとめる)
docs/data/news.json
└ scripts/extract_events.py
公式記事とプレスリリース(PR TIMES)から販売期間・開催日を読み取り
・同じ話題の公式記事と PR TIMES、公式記事に載った PR TIMES のリンク先をまとめて読む
・本文だけを読む(投稿日・分類の札・関連記事の一覧の日付は読まない)
・日付のない記事 → 何もしない
・日付がある記事 → 日付まわりの抜粋だけをまとめて Claude API へ(キーが無いときはパターンで読む)
↓
docs/data/events.json
└ scripts/build_reader.py(リーダー用に元記事を保存)
└ scripts/judge_relevance.py(ぴよりんと関係ある記事か判定)
└ scripts/build_piyo.py(ぴよのメモとまとめを作り置き)
↓
docs/data/piyo-memo.json・piyo-greeting.json
↓
GitHub Pages(docs/index.html、5分ごとに読み直し)→ Safari で表示
| ファイル | 役割 |
|---|---|
docs/index.html | 表示ページ(ニュース/カレンダー) |
docs/data/news.json | ニュース(自動で追記) |
docs/data/archive/index.json・YYYY.json | 最新500件より古い記事を年別に保管(一覧・検索にも表示) |
scripts/news_store.py | 最新記事と保管記事の読み書き。既存の記事ID・関連判定を維持 |
docs/news-archive.js | 年別記事を読み込み、最新記事と合わせて表示 |
docs/data/events.json | カレンダーの予定(自動追加+手で編集) |
docs/data/state.json | 予定の読み取りが済んだ記事の記録 |
scripts/extract_events.py | 予定の抽出プログラム |
scripts/claude_events.py | Claude API で記事から予定を読み取る部分 |
docs/data/reader/ | ページ内リーダー用の記事(1記事1ファイル。メディア記事は掲載元の要約のみ) |
scripts/build_reader.py | リーダー用に元記事を保存するプログラム |
scripts/judge_relevance.py | ぴよりんと関係ある記事かを判定するプログラム |
scripts/build_piyo.py | ぴよのメモとまとめを作るプログラム |
docs/data/piyo-memo.json | ぴよメモ(記事ごとの要点。自動で作成) |
docs/data/piyo-greeting.json | ぴよが最初につぶやくまとめと質問の候補(自動で作成) |
docs/data/piyo-basics.json | ぴよりんの基本情報(値段・店・営業時間など。公式サイトで確かめて手で書く) |
docs/piyo-sprite.png | ぴよの絵(通常・手を振る・考え中の3行。iPhone のウィジェットが使うので残す) |
docs/piyo-sprite-v2.png | ページで使うぴよの絵(上の3行に、跳ねる・しょんぼり・そわそわを足した6行。Claude Pet と同じ元の絵から) |
docs/piyo-extras.js | ぴよの会話の部品(その場で答える・あいさつの一言・ひとこと・おみくじ・返事を流して出す・予定の .ics) |
docs/data/meta.json | 最終更新日時 |
scripts/fetch_news.py | 収集プログラム |
.github/workflows/update.yml | 定期実行の設定 |
収集時は news.json と年別保管庫の両方を読み、重複を確認します。掲載日を確認したあとで新しい順に分け、最新500件を news.json、残りを archive/YYYY.json に保存します。500件を超えても記事を捨てません。保管庫を読めない場合は更新を止め、空の保管庫で上書きしません。
画面では最新記事を先に表示し、保管記事を取得できたら同じ一覧・検索に加えます。記事ID・URL・関連リンク・AI判定を保つため、ブックマークと非表示設定も引き継がれます。取得失敗時は表示中の保管記事を維持し、次の更新で再試行します。年別保管は記事情報が対象で、古い記事の本文キャッシュを永久保存する機能ではありません。本文がない場合は従来どおり元の記事へのリンクで読めます。
自動の予定抽出・AI判定・ぴよメモ作りは従来どおり最新500件を対象とします。
検証: python3 -m unittest discover -s tests、node --test tests/*.test.cjs。
Google ニュースは長い見出しを「...」で切ります。掲載日を確かめるときに読む記事のページの題名(og:title)で補います(full_title。書き出しが同じで、補ったほうが長いときだけ。末尾の「 - Yahoo!ニュース」「:山陽新聞デジタル|さんデジ」「(静岡放送(SBS))」のような掲載サイト名は外します)。頭の「画像4 / 9>」も外します。2026-10-29 に、それまでの 16 件を補いました(MSN から記事が消えていた 1 件は補えていません)。
公式サイトの記事の見出しは、一覧の見出しの要素から読みます(2026年9月末から、リンクの中に分類の札と「記事を見る」が入るため)。保存済みの見出しからも札と「記事を見る」を外すので、同じ話題の PR TIMES の記事と1つにまとまります。末尾の「|Infoseekニュース」などの掲載サイト名、「HOME PR TIMES」のようなパンくず、ファッションプレスの写真ページ(「写真3/3|」、/news/gallery/)も整理し、Googleニュースで途中まで切れた見出しは、前半が同じで日付が7日以内の記事にまとめます。同じ媒体の元記事があるときは、Googleニュース経由の同じ記事へのリンクを「ほか◯件」に入れません。まとめた記事のほかの掲載元は、リーダーの「ほか◯件の掲載元」から開けます。
写真番号・「画像・写真」などの見出し飾りを外し、同じ見出し、同じURL、対応媒体の記事IDで重複をまとめます。記事IDの照合対象はライブドア・ORICON・産経・AERA dot.です。未知の媒体の /photo を一律に削ったり、記事URLを推測して作ったりはしません。関連リンクに既にある記事も照合するため、写真の説明文や省略された見出しで再配信されても重複を抑えます。
公式・プレスを優先し、同じ分類では通常の記事を写真・コメントページより優先します。代表記事のIDとAI判定は維持し、判定がない場合だけ統合対象から引き継ぎます。統合した旧IDは merged_ids、元URLは同じ媒体のものも related に残します。URLで保存された既存ブックマークは変更せず、旧IDの非表示設定は代表IDも含めて最新の操作を採用します。同じ時刻の競合は非表示を優先します。
既存データも最新記事と年別保管庫を合わせて整理します。整理後が500件未満なら保管記事は news.json に戻ります。AIの再判定・メモ生成・外部API呼び出しはこの整理では行いません。
scripts/extract_events.py が、公式サイトのお知らせとプレスリリース(PR TIMES)の記事を Claude API(scripts/claude_events.py、既定は Claude Haiku 5.5。2026-10-29 に Haiku 4.5 から替えた)に渡し、販売期間・開催日・キャンペーン期間などを予定として読み取って docs/data/events.json に追加します("auto": true と、読んだ記事の ID の "src" が付きます)。1つの記事に日程が複数あれば、それぞれ別の予定になります。
公式サイトの記事には日付が書かれず「詳しくは下記URL」と PR TIMES へのリンクだけのことがあります。そのため、同じ話題としてまとめた公式記事と PR TIMES の記事、公式記事の本文に載った PR TIMES の記事を一緒に読みます。
読むのは本文だけです。公式サイトの投稿日・分類の札(店舗・限定商品など)、記事の下の「関連記事」の一覧(別の記事の日付が並ぶ)、PR TIMES の配信日時は読みません(以前はこれを予定の日付と取り違えることがありました)。
記事ごとに「読んだ元の組み合わせ」を docs/data/state.json に記録します。あとから PR TIMES の記事がまとまるなど元が増えたとき、または読み取り方を変えて EXTRACT_VERSION を上げたときは、直近120日の記事を読み直して、その記事の自動の予定を入れ替えます(1回の更新で20記事まで)。読み直して何も見つからなかったときは、前の予定を残します。読めない元があった記事は次の更新でもう一度読みます。
別々の記事から読んだ同じ予定(期間が同じで名前が似ている自動の予定)は1つにします。手で登録した予定は書き換えません。
手で登録した予定は Claude にも伝え、名前の言い方が違っても同じ商品・同じ催しで同じ期間の予定は出さないようにします。期間が同じで名前がほぼ同じ(2文字ずつの並びが6割以上重なる)自動の予定は外します(手の予定を残します)。「ドデ祭2026」と「ドデ祭2026 ぴよりん販売」のように、名前を含むだけの別の予定は残します。
APIキーは GitHub の Settings → Secrets and variables → Actions に ANTHROPIC_API_KEY として登録します。
キーが未登録のときは、見出しのパターンから日付を読み取る方法で動きます(予定の名前が長くなることがあります)。
使ったトークン数は Actions のログ(「Claude API 使用量」)に出ます。
モデルを変えたいときは、ワークフローの env に CLAUDE_MODEL を追加します。
読み取りを間違えた予定は、events.json で直接直してください。直した予定から "auto": true を消すと、手で登録した予定として扱われます。予定を手で追加することもできます(ファイルを開いて鉛筆アイコン → 編集 → Commit changes)。
{
"id": "e-好きな英数字",
"title": "予定の名前",
"start": "2026-10-01",
"end": "2026-10-04",
"place": "場所",
"kind": "sale",
"url": "https://..."
}
kind は次のどれかです。
sale:限定販売(黄)event:イベント(青)campaign:キャンペーン(緑)release:発売・受付開始(枠線)scripts/judge_relevance.py が、公式以外の記事(プレスリリース・メディア)がぴよりんに関係あるかを Claude(既定は Haiku 5.5)で判定し、news.json の各記事に jg(ok・why)を書き込みます。判定済みの記事は読み直しません(1回の更新で最大90件、新しい記事から)。
以上为 README 的开头部分。其余内容请阅读原文。 查看完整 README ↗