| name | news-digest |
| description | 指定テーマの最新ニュースを優先ソースから N 件集め、各記事をタイトル・要約・公開日・個別 URL の形にまとめて返す手順。「バイクの最新ニュースを集めて」「セキュリティ分野の注目記事を要約して」「最近の登山界隈の動きをまとめて」のように、特定テーマの新着記事を収集して要約したい際に使う。 優先ソースに RSS/Atom があればフィードを先に取得し、無ければ一般 Web 検索で補う。期間と除外リストでフィルタし、件数分を選んで各記事を要約する。 出力はタイトル・要約・公開日・個別 URL の中立フォーマット。Discord 等への整形・投稿は呼び出し側で行う前提で、この skill には含めない。 |
ニュース収集・要約
指定テーマの最新ニュースを優先ソースから集め、各記事を要約して返す手順。収集と要約のコアのみを担い、重複チェックの取得手段や最終的な整形・投稿は呼び出し側に委ねる。出力は特定の媒体に依存しない中立フォーマットとする。
引数
| 引数 | 既定値 | 説明 |
|---|
| テーマ | (必須) | 収集対象の説明 (例: バイク関連の最新ニュース・新車情報・イベント)。 |
| 優先ソース | (任意) | 優先的に探すドメイン・RSS のリスト。無ければ一般 Web 検索。該当が無ければ他ソースを探し固執しない。 |
| 件数 | 3 | 集める記事数。 |
| 期間 | (任意) | 対象期間 (例: 直近 5 日)。指定時はそれより古い記事を除外する。 |
| 除外リスト | (任意) | 既出記事のタイトル・URL。呼び出し側が重複チェックで得たものを渡すと、結果から除外する。 |
全体フロー
- 優先ソースを確認する。RSS/Atom フィードがあれば一般 Web 検索より先にフィードを取得する。フィードは新着順なので新しい記事の概要をつかみやすい。
- 優先ソースに該当記事が無ければ他ソースを探す。優先ソースに固執せず、一般 Web 検索や別ドメインへ広げてよい。優先ソースはあくまで第一候補である。
- 候補を次の順でフィルタし、満たさない記事を落とす。
- テーマ適合: 依頼テーマに合うか。総合ニュースサイトなど雑多なソースからは無関係な記事を除く。
- 期間: 期間指定があれば範囲内か。基準は実行日 (今日) を起点に遡る (例: 直近 5 日なら今日から 5 日前まで)。公開日は各記事の個別ページで確認し、フィードや検索一覧の日付と食い違う場合は個別ページを優先する。個別ページが取得できない (403 等) 場合は、(1) 別手段 (curl + User-Agent 指定) で構造化メタデータ (
datePublished 等) またはページ本文の明示的な日付表記 (byline 等) を確認、(2) 同一の出来事を報じる検証可能な別媒体の記事に差し替え、(3) いずれも不能なら候補から除外、の順で対処する。
- 除外リスト: 除外リストのタイトル・URL に一致しないか。文字列一致だけでなく、除外リストの記事と同一の出来事を報じる別ソースの記事も既出として除外する (手順 4 の重複判定と同じ基準を除外リストとの照合にも適用する)。除外記事のタイトルが通称のみで出来事を特定できない場合は、検索等で識別子 (CVE・製品名・組織名等) を特定してから候補と突き合わせる。
- 残りから件数分を選び、各記事を要約する。確認した公開日で新しい順に選ぶ (ソースごとに件数を固定配分しない)。ただしテーマに「注目」「重要」等の重み付け語が含まれる場合は、重要度をテーマ適合の判定に含め、同格の候補内でのみ新しい順を適用する (定型のリリース記事が新しさだけで重大事案を押し出さないようにする)。同格の階層は「実被害の確認済み > 実悪用の観測 > PoC・脆弱性公表のみ > 定型リリース・アップデート」を目安とする。同じ記事や、同一の出来事 (同一バージョンのリリース等) を指す別ソースの記事は重複として 1 件にまとめ、情報量の多いものを採る。件数に満たなければ無理に埋めない (扱いは「出力」を参照)。
出力
記事ごとに次の 4 項目を並べる。媒体固有の記法 (Discord のマークダウン等) は付けない。整形は呼び出し側が行う。
| 項目 | 内容 |
|---|
| タイトル | 記事の見出し。 |
| 要約 | 300 文字程度。何が起きたか・要点が分かる粒度にする。 |
| 公開日 | YYYY-MM-DD 形式。記事自体の公開日 (製品の発売日ではない)。 |
| 個別 URL | その記事のページ URL。 |
該当記事が無ければ、件数分を埋めようとせず「該当なし」とだけ返す。
ルール / 注意
- URL は個別記事のページを貼る。サイトのトップページや一覧ページの URL は不可。個別 URL がどうしても取れない場合のみ URL を省略し、省略した旨を添える。
- 要約は 300 文字程度を目安とする。短すぎて要点が欠ける、長すぎて冗長になる、のいずれも避ける。要約は個別記事ページから取得した内容に基づいて書く。検索結果の要約スニペットのみを根拠にしない (数値の誤りが混入する)。数値 (CVSS 等) が媒体間で食い違う場合は採用した記事の値に合わせる。
- 個別ページ取得のフォールバック (期間の項の (1)〜(3)) は日付確認に限らず、要約根拠の取得など個別ページ取得全般に適用する。
- 情報が見つからなければ「該当なし」と返す。記事・日付・URL を捏造しない。公開日が不明なら不明と明示し、推測で埋めない。
- 前置き・挨拶・締めの言葉は不要。記事の並びだけを返す。
呼び出し側での整形 (参考)
この skill は中立フォーマットで記事を返すだけで、媒体ごとの整形・投稿は行わない。呼び出し側 (例: Discord の #news へ投稿する cron) は次のように使う。
- 重複チェック: 投稿先の直近の記事一覧を自前の手段で取得する (既出のタイトル・URL)。
- この skill を呼ぶ: テーマ・優先ソース・件数・除外リスト (直近の既出分) を引数として渡す。
- 整形・投稿: 返ってきた記事を媒体の記法 (Discord なら見出し・要約・公開日と URL の行) に整形し、まとめて投稿する。
中立フォーマットにしている理由は、投稿先や記法が呼び出し側ごとに異なるためである。整形まで skill に固定すると媒体を増やすたびに分岐が増えるので、収集と要約までを共通化し、整形は呼び出し側に残す。