topic-brief について
公開ニュースをもとに、WeChat Official Account向けの単体HTMLブリーフィングを作成するリサーチスキルです。情報収集、期間確認、ユーザー承認、レポート生成の手順を定めています。
主な機能
- 01テーマと期間の確認
- 02期間を指定したニュース調査
- 03情報源の許可リストと対象外規定
- 04執筆前の方向性確認
- 05JSONからHTMLへのレポート生成
活用シーン
- 01地域ニュースのブリーフィング作成
- 02一定期間の業界動向の要約
- 03WeChat Official Account向け資料の作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ genli-ai/ market-research-skills --skill topic-briefインストール後、Claude Code で/topic-briefを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.mdSKILL.zh.mdlib/__init__.pyfix_quotes.pyrenderer.pyschema.pywriter.pyprompts/system.mdreference/brand_red_belt_and_road.example.jsonregion_india.example.jsonregion_middle_east.example.jsonregion_southeast_asia.example.jsonscripts/render.pytemplates/briefing.html詳細
トピック概要 — テーマ別観察ブリーフィング生成ツール
あらゆるテーマ(地域/業界/政策課題/機関)について、公開ニュースに基づく情報ブリーフィングを生成し、WeChat 公式アカウントのエディターに貼り付けられる、単独で完結した HTML ファイルを作成します。
バイリンガルスキルです。中国語版:
SKILL.zh.md。英語版が唯一の原文です。.zh.mdは同期する翻訳版です。変更する際は、必ず先に英語版を編集し、同じ変更セット内で.zh.mdに変更を反映してください。中国語版だけを編集してはいけません。
トリガーフレーズ
ユーザーが次のように依頼します。
- 「5月後半の中東観察を作って」
- 「過去1か月の半導体業界ブリーフィングを生成して」
- 「AI立法をテーマにした観察を作って。期間は2026年第2四半期」
- 「/topic-brief」
- 「topic-briefを使って……を作って」
「XXについてブリーフィング/観察/ダイジェストを作って」のような説明的な依頼があれば、このスキルを起動してください。
対象外
ブリーフィングを作成する前に、テーマが拒否対象に該当するか確認してください。表現にかかわらず、次の内容は対象外です。
- 政治問題 — 選挙、政党、政治家の立場、政府の正当性をめぐる議論
- 軍事問題 — 作戦、戦力構成、装備数、紛争の詳細、防衛政策
- 宗教問題 — 教義、宗派間の対立、宗教指導者の発言
- エンターテインメント業界の有名人に関するゴシップ — 私生活、不祥事、ファン同士の対立
- その他、本質的に意見が分かれる話題 — 文化戦争、アイデンティティをめぐる対立、価値判断をめぐる議論
依頼されたテーマが上記のいずれかに該当する場合は、次の1行だけを返して終了してください。
Out of scope. (超出能力范围)
検索を実行せず、草案も作成せず、対象範囲について交渉しないでください。
回答言語
ユーザーの依頼と同じ言語で回答してください。中国語の質問には中国語、英語の質問には英語で回答します。複数の言語が混在している場合は、主要な言語に合わせてください。生成する HTML 自体は、ソース資料とsubject_nameの言語に従います(中国語のテーマには中国語のブリーフィング、英語のテーマには英語のブリーフィングを作成します)。ユーザー向けレポートの項目名(例:来源/Source)は、ブリーフィング本文の言語に合わせてください。
5段階のワークフロー
ステップ1 — パラメーターの収集(ユーザーへの質問プロンプト1回、4つの質問)
トリガー内にすべてのパラメーターが含まれていない場合は、1回にまとめた質問プロンプトですべてを尋ねてください。
| 質問 | ヘッダー | 選択肢 |
|---|---|---|
| このテーマは何ですか? | 主题 / Subject | 自由記述(地域/業界/課題/機関名) |
| 期間は? | 时间 / Period | 「過去2週間/過去1か月/過去1四半期/期間を指定」。回答をただちに2つの ISO 日付[period_start, period_end]に正規化してください(YYYY-MM-DD)。例:今日が2026-05-13で、ユーザーが「過去1か月」と言った場合 → period_start=2026-04-13、period_end=2026-05-13 |
| 情報源の希望は? | 信息源 / Sources | 「A 標準の権威あるホワイトリスト/B 独自のホワイトリスト/C 特定の情報源を除外」 |
| 著者名は? | 作者 / Author | プロンプト:「表紙の左下にある著者欄は、デフォルトで『developed by Gen』です。何を表示しますか?」明示する選択肢:「A デフォルトのまま/B 空欄にする」。ユーザー質問プロンプトに組み込み済みのOtherオプションで、ユーザーは任意の著者名を入力できます。 |
-
テーマの値は JSON の
subject_nameに格納されます(例:「中東」「半導体」「AI立法」) -
著者名の値は JSON の
authorに格納され、表紙の左下に表示されます。ユーザーの選択肢は、次の3つの JSON 状態に対応します。ユーザーの選択 JSON での処理 表示結果 A デフォルトのまま authorフィールドを省略「developed by Gen」を表示(スキーマのデフォルト値) B 空欄にする "author": ""と記述空欄 その他の任意入力(例:「張三 · 研究院」) "author": "張三 · 研究院"と記述入力したテキスト -
同じセッション内で、ユーザーが著者名についてすでに回答している場合は、以降の実行でその値を再利用してください(ユーザーが変更した場合を除く)。
トリガーですでにすべてのパラメーターが指定されている場合(「5.1~5.12の中東観察を、著者名『張三』で作って」など)は、質問プロンプトを省略して次に進んでください。
Step 2 — 並行して資料を収集する
すべての検索クエリに期間フィルターを含めてください。 Google / Bing の場合は after:YYYY-MM-DD before:YYYY-MM-DD(Step 1 で正規化した period_start / period_end を使用)を指定します。他の検索エンジンでは同等の構文を使用してください。期間フィルターがないと、検索エンジンは関連度順に結果を返すため、SEO の評価が高い古い「大きな出来事」が引き出され、ブリーフィングの鮮度が損なわれます。
期間に関する方針:
- 本文の焦点部分では、対比のために過去の背景情報に触れてもかまいません(例:「昨年、X による同様の報告書では……と述べられていました」)。ただし、読者が背景情報と対象期間内の出来事を一目で区別できるよう、必ず時点を明示してください(例:「2025 年第 3 四半期には……」)。
- 4 つのサブセクションの項目は、必ず対象期間内に収めてください(event_date が
[period_start, period_end]の範囲内であること)。対象期間外の情報は削除するか、背景情報として明示したうえで本文の焦点部分に移してください。
検索エンジンで 4〜6 回以上クエリを実行し、次の観点を網羅してください(対象の種類に応じて調整します)。
| 対象の種類 | 推奨される検索観点(4〜6 項目) |
|---|---|
| 地域 | 中央銀行の決定/マクロ経済データ(GDP、インフレ、貿易)/主要政策/国際協力/速報 |
| 業界 | 業界を代表する企業の動向/規制/設備投資/上流の投入資材/最終市場の需要/国際競争 |
| 政策課題 | 立法の進捗/執行事例/学術的な議論/国境を越えた波及効果/世論の論争 |
| 機関 | 重要な決定/高官の演説/データ公開/調査成果/議会公聴会 |
Web 本文を 1〜2 回取得し、焦点となる報告書の一次資料を詳しく読み込みます(具体的な数値、シナリオ、政策への影響を抽出します)。
標準の信頼できる情報源リスト(Step 1 でユーザーから指定がない場合):
- 国際機関:IMF、World Bank、OECD、ADB、UNCTAD、IADB、AIIB、IEA、WTO
- 中央銀行:Federal Reserve、ECB、Bundesbank、各国の中央銀行
- 政府機関:European Commission、各国の統計局
- 主な金融メディア:Reuters、Bloomberg、FT、Economist、Nikkei Asia、Xinhua、Business Standard
Step 3 — 方向性の確認(ユーザーへの必須確認)⚠️
資料収集が終わったら作業を止め、執筆前に方向性を確認してください。
Report to user:
- Time window: [period_start, period_end]
- Proposed focus report: <title> by <institution>, published <YYYY-MM-DD> (URL: ...)
- Proposed 4 sub-sections with candidate items (each tagged with event date):
A. <section> — 3–5 items:
· [YYYY-MM-DD] <headline> · <source institution>
· [YYYY-MM-DD] <headline> · <source institution>
B. ...
C. ...
D. ...
Ask:
- Confirm the direction?
- Swap the focus?
- Adjust the 4 sub-sections?
- Any candidate items falling outside the window (check the dates)?
候補となるすべての項目に発生日を記載してください。 この確認により、ユーザーとモデルの両方が情報の鮮度をスポットチェックでき、古い項目が最終稿に紛れ込むのを防げます。
ユーザーから調整の要望があった場合は修正し、もう一度確認してください。承認を得てから Step 4 に進んでください。
この確認を省略すると、焦点が違っていたとわかったときに、5,000 文字分の書き直しが発生します。
ステップ 4 — JSON を作成する
prompts/system.md のスキーマと規律に従ってください。
長さと構成:
- フォーカス本文は1,500~2,500文字(3~5セクション、各200~500文字)
- サブセクションは4つ × 各3~4項目(見出しは30文字以内+本文は100~300文字)
- summary:フォーカスの紹介文は150~250文字+region_itemsは各1文で4項目
- 合計:3,000~5,000文字
最優先の規律 — 数字を捏造しない 具体的な数字(割合、金額、日付、件数)はすべて、ステップ 2 で収集した資料で裏付けられる必要があります。**執筆後、草稿を読み返し、すべての数値について「この数字はどこから来たのか?」と確認してください。**答えられない場合は修正してください。
期間の規律:
- 各サブセクションの
itemには、event_dateフィールド(YYYY-MM-DD形式。月までしか分からない場合はYYYY-MMでも可)を必ず含めてください。 - 各
event_dateは[period_start, period_end]の範囲内でなければなりません。 - フォーカス本文で過去の背景に触れる場合は、時点を明記してください(「2025年Q3に…」/「前年に…」)。
JSONの引用符に関する規律:中国語の引用符は、必ず対になる"と"を使用し、通常の"は使用しないでください(JSONの解析エラーの原因になります)。
スタイルの参考資料:reference/には、過去のサンプルが4件あります(地域別が3件+赤ブランドの機関向けが1件)。表現、文章のリズム、トーンを参考にしてください。
保存先:output/seed/<subject>_<period_end>.jsonに保存し、シードデータを追跡できるようにしてください。
ステップ 5 — レンダリングして報告する
python3 scripts/render.py output/seed/<subject>_<period_end>.json --out output --open
fix_quotesを自動実行し、中国語の引用符の対を修正します- HTMLを
output/<period_end>_<title>.htmlにレンダリングします - ブラウザーで開きます
報告チェックリスト:
- ファイルパス
- 文字数/各サブセクションの項目数
- 4つのサブセクションごとにまとめたソースURL一覧
- 公開前にすべての数値とURLを人が確認する必要があることを再確認してください。AIの出力は結論ではありません。
ツール呼び出しの対応付け(LLM間の適応)
このスキルではツールの操作を一般的な意味で記述しているため、Claude以外のターミナルでも、それぞれのツールセットに対応付けられます。
| 一般的な動詞 | 対応先(Claude Code) | 対応先(その他のターミナル) |
|---|---|---|
| 検索エンジンで検索する | WebSearch | ターミナルのウェブ検索ツール |
| ウェブページの本文を取得する | WebFetch | ターミナルのURL取得ツール |
| ユーザー向けの質問プロンプト | AskUserQuestion | ターミナルの対話型プロンプトツール、または標準出力での質問 |
| 全文を読み取る | Read | ターミナルのファイル読み取りツール |
| シェルコマンドを実行する | Bash | ターミナルのシェル実行ツール |
実行中のターミナルにこれらの動詞に相当する機能(例:対話型プロンプト)がない場合、LLMは適切に代替してください。たとえば、パラメーターに関する質問をまとめて通常のメッセージとして送り、ユーザーの返答を待ちます。
エラーへの対処
| 症状 | 対応 |
|---|---|
| ある観点について検索しても資料が見つからない | 試した検索クエリをユーザーに伝え、キーワードを変更するか確認します |
| 特定の数値を検証できない | 項目を削除するか、数値を使わない表現に変更します。捏造しないでください |
| JSONの解析エラー | 99%は中国語の引用符の組み合わせ間違いが原因です。バックアップとしてrender.pyがfix_quotesを自動実行します。それでも解決しない場合は、手動で調査してください |
| 対象が狭すぎて、4つのサブセクションを埋められない | 期間を広げるか、対象を広げるようユーザーに依頼します(例:「国内EDAツール」→「半導体」) |
| 適切なフォーカスレポートがない | その期間における最も重要な中央銀行の決定/ソブリン格付けレポート/大手銀行の調査に切り替えます |
クイックコマンドリファレンス
# Enter the skill directory (path inside the market-research-skills monorepo)
cd /path/to/market-research-skills/skills/topic-brief
# Render (auto-fixes quotes + opens browser)
python3 scripts/render.py reference/region_middle_east.example.json --out output --open
# Quote-fix only
python3 -c "from lib.fix_quotes import fix_file; from pathlib import Path; fix_file(Path('output/seed/xxx.json'))"
# Install dependency (first time)
python3 -m pip install --user jinja2
セルフチェックリスト(ステップ 4 の後に実行)
- issue_title ≤ 24 文字(句読点を含む) — タイトルが長いと表紙で折り返されるため、修正してください
- サブセクションはちょうど 4 つで、それぞれに 3~4 項目がある
-
summary.itemsの項目はちょうど 4 つで、4 つのサブセクションに対応している - すべての数値をステップ 2 の情報源までたどれる
- すべての
item.sourceに完全な URL がある - すべての
item.event_dateが[period_start, period_end]の範囲内にある - 焦点セクションの本文で期間外の背景に触れる場合は、時点を明記する(例:「2025 年第 3 四半期には……」)
-
item.headlineは 30 文字以下 - 焦点セクションは 3~5 個で、本文全体は 1,500~2,500 文字
- 中国語の引用符は
""のように対で使い、まっすぐな"は使わない -
subject_nameフィールドに値が入力されている -
period_start/period_endに ISO 形式の日付が入力されている
絶対に守るべきルール
- 数値、日付、引用を捏造しないでください。 情報源に記載がなければ、数値を使わない形に書き換えるか、その項目自体を削除してください。
- 許可リストにない情報源を焦点レポートとして使わないでください。 ポップ経済ブログ、ソーシャルメディアへの投稿、出典が明記されていない言い換えは、焦点セクションの根拠にできません。
- サブセクションの項目は、期間内に厳密に収めてください。
event_dateが[period_start, period_end]の範囲外の項目は削除するか、時点を明記した背景情報として焦点セクションの本文に移してください。 - 検索には必ず期間フィルターを含めてください。
after:/before:を指定せずに検索すると、検索エンジンが SEO 対策された古いコンテンツを返すため、情報の古いブリーフィングが作成される根本原因になります。 - ステップ 3(方向性の確認)を省略しないでください。 間違った方向性で 5,000 文字を書けば、ユーザーのレビューにかけられる時間を無駄にします。
- 依頼を受けられない題材(政治/軍事/宗教/芸能人のゴシップ/本質的に物議を醸す話題)に関するブリーフィングを作成しないでください。
Out of scope. (対応範囲外)と返信して終了してください。 - 内容のない語りでブリーフィングの分量を増やさないでください(「驚くべき」「~を象徴する」「必然的に」など)。事実に基づき、情報密度を高く保ち、情報源を明確にしてください。
- ステップ 5 の人間によるレビューの注意書きを省略しないでください。 AI の出力は下書きであり、そのまま公開できる結論ではありません。