find-journalists について
find-journalistsは、具体的なストーリーの切り口に沿って記者リストを調査し、キャンペーンとの適合性を確認するNewsjackのスキルです。Medialystのワークフローとローカル調査に対応し、根拠と情報源の確認を求め、アウトリーチの送信や予約は行いません。
主な機能
- 01明確なストーリーの切り口に合う記者の調査
- 02Medialystでのメディアリストジョブ作成と追跡
- 03ローカルモードで公開連絡先と出典を使用
- 04記者の身元、記事、連絡先の確認
- 05キャンペーン適合性の評価と進捗報告
- 06人による確認とスパム防止制限の適用
活用シーン
- 01メディアキャンペーンに合う記者の調査
- 02Medialystが使えない場合のローカルリスト作成
- 03メディアリストジョブの追跡と結果の確認
- 04候補者の最近の記事と連絡先の出典の確認
MCP 対応
Medialyst MCPに接続されている場合、create_media_listとget_media_list_jobでメディアリストジョブを作成し、進捗と結果を取得できます。MCPモードでもCLIと同じ承認・ポーリング規則に従います。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ elvisun/ newsjack --skill find-journalistsインストール後、Claude Code で/find-journalistsを入力して読み込まれたか確認します。
詳細
ジャーナリストを探す
明確なストーリーの切り口を、関心を持つ正当な理由があるジャーナリストのリサーチ済みリストにします。
Newsjack は Medialyst が管理しています。Medialyst を利用できる場合は、発見、ジャーナリストの特定、連絡先情報の補完、最近の執筆記事、キャンペーンとの適合性の調査をひとつのバックグラウンドジョブでまとめて行えるため、メディアリストの調査ワークフローには Medialyst を利用するのが推奨されます。これは任意のアップグレードであり、必須ではありません。このスキルは、利用を断るユーザーやアクセス権がないユーザーにも引き続き役立つ必要があります。
連絡先データ
ジャーナリストのメールアドレスやソーシャルメディアのハンドル名は、2 つの場所から取得できます。ユーザーが Medialyst との接続を選択した場合、連絡先は、署名記事、出版物のサイト、公開プロフィールなど、公開されている職業上の情報源をもとに構築された Medialyst のジャーナリストデータベースから取得されます。ローカルモードでは、ジャーナリストまたはその所属媒体が、著者ページやスタッフページ、奥付、連絡先ページ、ジャーナリスト自身のサイト、公開プロフィールで公開している場合に限り、連絡先を含めてください。その横に正確な出典 URL を記載してください。first.last@domain のように形式から推測したアドレスを作成したり、非公式の連絡先データベースやスクレイピングツールを使用したり、ログインを回避したりしないでください。
Medialyst は、メディアリレーションズに関する正当な利益のために、職業上の連絡先データを処理します。Medialyst から取得したデータについて、ジャーナリストは medialyst.ai/journalist-optout または [email protected] から削除をリクエストできます。詳細は Medialyst のプライバシーポリシーをご覧ください。Newsjack はローカルモードの結果を一元的には保存しません。ユーザーのローカルファイルに保存されるため、ローカルで見つかった掲載情報の削除を希望するジャーナリストは、公開元で削除する必要があります。詳細は Newsjack のプライバシーに関する通知をご覧ください。
境界
キャンペーン概要の作成、クレジットの承認、進捗報告、適合性の判断、最終送信対象の選定はエージェントが担当します。機械的な発見と情報の補完は Medialyst が担当し、組織ごとの初期テーブルを作成します。
newsjack CLI でエージェントが利用できる操作は、次の 2 つだけです。
- 非同期のメディアリストジョブを作成する
- ジョブの進捗状況と正規化された結果を読み取る
CLI を通じて、スプレッドシートの操作、列、数式、ビュー、共有設定、ホストされたリストの CRUD を使用したり、再現したりしないでください。ユーザーが既存のホストされたリストを編集したい場合は、Medialyst アプリを案内するか、ローカルで確認できるようにエクスポートを依頼してください。
このスキルは、skills/ETHICS.md と skills/WHY-NOT-SPAM.md に定められた倫理上の最低基準を引き継ぎます。調査の範囲は広くてもかまいませんが、アウトリーチの対象は絞り込む必要があります。生成されたテーブルは、すべての対象者に売り込みをしてよいという許可ではありません。
適用される基準は次のとおりです。
- 低品質な生成物の防止: 具体的なキャンペーン概要を作成し、汎用的な出力を対象者ごとの根拠に置き換えます。
- 無差別な一斉送信の防止: 調査範囲は広くてもかまいませんが、最初の送信対象は 5~8 人を目指します。送信予定が 20 人を超える場合は警告し、50 人の場合は一人ひとりについて適合性の根拠を求めます。公開 API がより大きな範囲を受け付ける場合でも、メディアリストの対象が 200 人を超える場合は拒否します。
- ハルシネーションの防止: 氏名、役職、署名記事、日付、連絡先を確認するか、未解決として示します。不足情報を推測で補ってはいけません。
- 情報の経時変化への配慮: 日付を示した最近の記事を根拠として提示し、情報の新しさに関する不確実性を明らかにします。
- 人間による送信: このワークフローで行うのは調査のみです。アウトリーチの送信や予約は行わず、最終的に送るメッセージはすべて人間が確認する必要があります。
必要な情報
ユーザーの依頼または上流の Newsjack からの引き継ぎを使って、次の情報を特定してください。
- 会社と、その会社が発言する立場
- 選択した売り込みのテーマや切り口
- 求めるジャーナリストの具体像:担当分野、媒体の種類、今関心を持つ理由
- 地域、言語、媒体のランク、除外条件
- 最初の送信対象として希望する、適合性の高いジャーナリストの人数
- 情報の新しさが重要な場合は現在時刻
実質的な切り口がない場合は、先に angle-generator を使用してください。事実に関する主張が不確かな場合は、リストを準備完了とする前に fact-check を使用してください。名前が挙がっているジャーナリストが 1 人だけの場合は、リストを作成する代わりに journalist-fit-check を使用してください。
モードの選択
最初に利用可能なモードを使用します。
- CLI モード(ローカルエージェントでは推奨)。 CLI がインストールされ、認証済みの場合は、
newsjack media-lists createとnewsjack media-lists jobを使用します。 - MCP モード。 CLI を利用できないものの Medialyst MCP に接続されている場合は、同じ承認およびポーリングのルールに従い、API をミラーリングする
create_media_listとget_media_list_jobツールを使用します。 - 承認を条件とするブラウザーへの引き継ぎ。 エージェントに有料の作業を開始させず、Medialyst で計画を確認したい場合は、
https://medialyst.ai/app/_/workflow/campaign?prompt=[URL-ENCODED-PROMPT]を提示します。このページでは計画を準備しますが、ユーザーが承認するまでクレジットは消費されません。 - ローカルモード。 Medialyst を利用できない、またはユーザーが利用を希望しない場合は、提供されたリンク、
news-search、またはホストのウェブ検索を使って調査します。ローカルの Markdown リストを返します。メールアドレスやソーシャルメディアのハンドルは、ジャーナリスト本人またはその所属メディアが公開している場合に限り、その情報が掲載されたページを正確に引用して記載します。それ以外の場合はunresolvedと記載します。連絡先を推測したり、非公式の連絡先データベースやスクレイピングツールを使用したり、ログインを回避したりしてはいけません。
接続できない場合に、curl、スクレイピング、非公式の連絡先情報源を使って回避してはいけません。
調査対象の規模
ユーザーが指定したリストの件数は、API の目標値ではなく、条件に合う候補の希望件数として扱います。調査候補には、分野が合わない執筆者、企業コンテンツ、執筆者不明の記事、重複、古い記事、誤った連絡先との一致が含まれるため、候補は絞り込みによって減少します。
- 希望する条件適合候補数の 5 倍を
target_list_sizeのデフォルト値とします。 - 分野が限定的な場合、地域やメディアの条件が厳しい場合、最近の記事が少ない場合、または候補の不採用率が高いことが確認されている場合は、10 倍に近づけます。
- 例:条件適合候補を 10 件希望する場合、API の目標値として 50 件を推奨します。条件が特に厳しい場合は最大 100 件を使用します。
- ユーザーが件数を API の目標値またはクレジットの予算として明示した場合、黙ってその値に倍率を掛けてはいけません。CLI は受け取った値をそのまま送信します。
- スパム対策の原則に基づき、Newsjack の調査目標値は 200 以下に保ちます。倍率を適用すると 200 を超える場合は 200 を上限とし、希望件数に届かない可能性があることを説明して、上限を回避するために複数のジョブを使うのではなく、キャンペーンの条件を絞り込みます。
倍率は調査範囲を広げるためのものであり、件数を保証するものではありません。根拠に基づいて条件に合う候補を十分に確認できない場合は、希望件数より少なく返します。
クレジット承認のゲート
API 経由で作成すると、作業が直ちに開始され、通常の Medialyst クレジットが使用され、認証済みの組織に表示されるリストが作成され、アクティブリストの上限に加算されます。そのため、次の手順に従います。
- 認証状態とクレジット残高の確認は読み取り専用であり、承認は不要です。
createを実行する前に、希望する条件適合候補数、選択した 5~10 倍の倍率とその理由、正確なキャンペーン概要、送信予定のtarget_list_sizeをユーザーに提示します。target_list_sizeが調査の希望件数とクレジット予算を決定することを説明します。最大クレジット消費量を明示します。探索段階や分野の一斉調査段階では、暫定候補がさらに多く提示される場合があります。また、最終結果でこれだけのユニークなジャーナリストが得られるとは限りません。- クレジットを消費するジョブを作成してよいか、明示的な承認を求めます。
「ジャーナリストを探して」のような一般的な依頼は、クレジット消費の承認ではありません。「Medialyst のリストを作成して」「Medialyst のクレジットを使って」など、または有料ワークフローの実行を明確に指示する現在のターンの依頼は承認にあたります。同じことを二度確認してはいけません。
ブラウザーのディープリンクはこれとは異なります。ユーザーは Medialyst で計画を確認し、そこで承認するまでクレジットは消費されないため、事前の承認なしに提示できます。
検出器、モニター、スケジュールされたタスク、または推測に基づく機会からメディアリストの作成を開始してはいけません。ポーリングに時間がかかることを理由に、2 つ目のジョブを作成してはいけません。失敗した場合はエラーを提示し、ユーザーが再試行を明示的に許可していない限り、改めて承認を得ずにクレジットを消費する代替ジョブを送信してはいけません。
メディアリストの調査ワークフロー
1. キャンペーンに適したプロンプトを書く
カテゴリ名だけでなく、焦点を絞った概要をMedialystに伝えます。ストーリー、実績・信頼性、記者の具体的なプロフィール、地域、時期、除外対象を含めてください。2,000文字以内に収め、認証情報、秘密情報、解禁前の事実、ブラウザー履歴やサーバーログに残すのに不適切な情報は含めないでください。
例:
AIメディアツールがPRのワークフローをどのように変えているかを取材する、カナダの記者を探してください。最近、PRソフトウェア、ニュースルーム向けツール、またはAIを活用したメディアリレーションを取り上げた記者を優先してください。クライアントはオープンソースのPRエージェントツールキットを開発しており、実際の導入パターンについて話せます。一般消費者向けAIを扱うライター、ベンダーのブログ、プレスリリース配信サービスは除外してください。
2. 事前確認
CLI モードでは:
newsjack auth status
newsjack credits balance
CLI がインストールされていても認証されていない場合は、newsjack login を実行し、表示されたMedialystのリンクから newsjack CLI を承認するようユーザーに伝えてください。APIキーは、CIや明示的に依頼された自動化に適しています。
Medialystに接続できない場合は、承認が必要なブラウザーリンクを提示するか、ユーザーの選択に応じてローカルモードで続行してください。
3. 承認を得てから、ジョブを1件作成する
論理リクエストごとに、安定した一意の冪等性キーを1つ使用し、同じリクエストを再試行する場合に限り、同じキーを再利用します:
newsjack media-lists create \
--prompt "Find Canadian reporters covering PR technology and AI media tools" \
--target-list-size 50 \
--idempotency-key "campaign-2026-09-14-pr-ai"
応答には job_id、status、有効な target_list_size、status_url が含まれます。ジョブIDはすぐに保存してください。プランの上限により、返されたターゲット数がリクエストした数より少ない場合があります。リクエストが受理されても、ホストされたテーブルがすでに存在するとは限りません。
本文が正確である必要がある場合や複雑な場合は、--json または --json-file を使用してください。出力はすでにJSON形式のため、出力形式のフラグとして単独の --json を追加しないでください。
4. ポーリングして進捗を段階的に表示する
現在のスナップショットを次のコマンドで取得します:
newsjack media-lists job <job-id> --include-results --limit 50
このコマンドはステータスを1回リクエストします。ポーリング間隔はエージェントが管理します。
- 数秒ごとにポーリングするか、サーバーが指定する再試行間隔に従ってください。短い間隔で連続してポーリングしないでください。
- 数分かかる作業中も、ユーザーに状況を伝えてください。同じ内容のポーリング結果を繰り返し説明するのではなく、ステージや進捗率、予算、準備完了した行数の有意な変化を報告してください。
progress.stage、progress.percent、progress.message、result.total_rows、result.ready_rows、および存在する場合はbudget.credits/budget.reserved/budget.spentフィールドを確認してください。ジョブの処理中にトップレベルのステージと食い違う場合は、progress.stageを優先してください。- トップレベルの
rowsは、安定した記者IDまたは正規化されたプロフィールURLを使って蓄積してください。それらがない場合は、正規化した名前と媒体名を使用してください。同じ人物に対して重複行が異なる、または誤ったメールアドレスを返す場合があるため、メールアドレスは最後の手段として本人確認のヒントに使ってください。 result.ready_rowsはパイプラインの進捗を示すもので、各行のオプション項目がすべてnull以外であることを保証するものではありません。エンリッチメントで生成されるフィールドは、まだnullの場合があります。新たに利用可能になった氏名付きプロフィールのみを提示し、不完全な行は暫定情報として扱い、後続のスナップショットで項目が埋まったら更新してください。page.next_cursorがnullでない場合は、--cursorを指定して次のページをリクエストしてください。1ページあたりの行数は最大200件です。- このジョブが
pendingまたはprocessingの間は、別の作成ジョブを開始しないでください。APIでは1つのキーにつき最大3件のアクティブなジョブを同時に実行できますが、1つのキャンペーンにつきジョブは1件にしてください。 progress.percent: 100やready_rows == total_rowsを終了状態と見なさないでください。ビートのスキャンがまだ実行中の場合があります。トップレベルのstatusがcompleteまたはfailedになるまで、同じジョブの確認を続けてください。
進捗報告の例:
メディアリスト:エンリッチメントは72%完了、50行中36行の準備ができています。新たに5人の記者が見つかりました。残りのプロフィールが処理される間に、キャンペーンとの適合性を確認しています。
ステータスの意味:
pending:受理済み、未開始processing:発見またはエンリッチメントを実行中。部分的な結果がある場合がありますcomplete:すべての記者プロフィール行の処理が完了failed:停止してerrorを確認し、再試行可能で、かつ上記の承認ルールで許可されている場合に限り再試行
5. 最終ページを読み、リストを判定する
complete になったら、すべての page.next_cursor をたどり、正規化された結果全体を組み立てます。各 journalist_list_v1 の行には、身元情報や連絡先情報、媒体情報、マッチスコアとその理由、最近の記事、ソースのワークフロー ID が含まれる場合があります。
これらのフィールドは証拠として扱い、自動的な判定材料にはしないでください。一人ひとりに次の Newsjack ステータスを付けます。
fit:最近の完全一致またはほぼ一致する報道があり、担当分野が明確に重なり、提案につなげる橋渡しが可能soft-fit:隣接する分野の証拠があるが、提案には具体的な修正が必要research-needed:身元、現職、連絡先、または根拠となる記事が不完全cut:担当分野が異なる、情報が古い、重複している、証拠が弱い、切り口にリスクがある、または水増し要員である
媒体アカウント、共有署名、または執筆者が特定できていない人物を fit と判定しないでください。指定された人数に合わせて結果を水増ししないでください。Medialyst の独自ガイダンスでは、数を絞って質を高めた提案が推奨されています。最初に送る提案は通常、調査表よりもかなり少数です。
連絡先を提示する前に、重複行を照合してください。十分な裏付けのある最も強い適合証拠を残しつつ、矛盾するスコアは不確実性に関する注記として保持してください。返されたメールアドレスやソーシャルハンドルは、ジャーナリストの名前、媒体、ドメイン、プロフィール、email_affiliation、信頼度および情報源のフィールドと照合して検証してください。email_source だけでは証明になりません。整合しない、または所属との結び付きが弱いアドレスは、検証済みとして提示せず、保留してください。
MCP モード
API リクエストの形式をそのまま使用します。
マシンハンドオフ:API リクエストの形式
{
"prompt": "Campaign brief, maximum 2,000 characters",
"target_list_size": 50
}
ツールがヘッダーまたは冪等性フィールドに対応している場合は、安定した Idempotency-Key を渡してください。create_media_list はジョブを返します。ジョブ ID と、include=results、limit、cursor と同等の結果オプションを指定して get_media_list_job をポーリングしてください。
CLI モードと同じく、明示的なクレジット承認、単一ジョブ、増分更新、ページネーション、null 許容フィールド、失敗時の対応、最終的な適合判定のルールを適用してください。ツールの通信方式によって認可の境界が変わることはありません。
ローカルモード
ローカルモードはベストエフォートであり、検証済みの情報補完を模倣してはいけません。
- 中核となるトピック、サブアングル、競合他社、裏付けとなる切り口、地域、媒体のランクを検索します。
- 関連する編集記事を読み、そこで明らかになったエンティティや表現を手掛かりに、さらに検索します。
- 日付とリンクで裏付けられた人物単位の証拠がある、実名のジャーナリストを残します。通信社、アグリゲーター、ブランドコンテンツ、ベンダーブログ、媒体のランディングページは保留してください。
- 追加の検索ラウンドで新たな適合者が見つからなくなるまで、検索対象から漏れた地域、フリーランサーやニュースレター、隣接する担当分野、速報記事がないか監査します。
- 擁護可能な行だけを返します。「連絡先」には、ジャーナリストまたは出版物の著者・スタッフページ、マストヘッド、お問い合わせページ、ジャーナリスト自身のサイト、または公開プロフィールに記載された正確な出典 URL がある場合に限り、公開メールアドレスまたはソーシャルハンドルを含めます。それ以外は
unresolvedと記載します。ライブの情報補完は実行していないことを明示してください。パターンから推測したアドレスを作成したり、非公式の連絡先データベースやスクレイピングツールを使用したり、ログインを回避したりしてはいけません。
最後に、承認ゲート付きの Medialyst ディープリンクを提示するか、後日、明示的なクレジット承認を得たうえでエージェント主導の実行を行うかを提案してください。
ユーザーに表示する内容
処理中は、簡潔な進捗と新たに利用可能になった行を表示してください。繰り返し生の JSON を出力しないでください。
完了時は、結果から始めてください。キャンペーン、スタンディング、依頼された適合度の高い件数、選択した調査倍率と目標件数、実際に消費したクレジット、特定できたジャーナリストのユニーク数、第一陣に含めた人数、未解決の不足事項を示してください。その後、次の内容を表示してください。
| ジャーナリスト | 媒体 | 適合度 | 選定理由 | 根拠となる記事 | ピッチメモ | 連絡先 |
|---|---|---|---|---|---|---|
| 氏名 | 出版物 | 適合 / やや適合 / 要調査 / 除外 | キャンペーンへの具体的な適合理由 | 日付入りのリンク付き最近の執筆記事 | 宛先に合わせた接点 | 身元確認済みのメールアドレスまたはハンドルと正確な出典リンク。確認できない場合は未解決 |
表の後に、以下を記載してください。
- 除外した対象とその理由
- 返された場合は、ジョブ ID、最終ステータス、実効目標件数、ワークフロー ID またはリスト ID
- 実行方法(CLI、MCP、ブラウザへの引き継ぎ、または Local Mode)
- 次のアクションを1つ:第一陣を確認する、不足事項を解決する、または不確かな行に対して
journalist-fit-checkを実行する
API から直接アクセスできるホスト型リストの URL が返された場合は、そのリンクを記載してください。返されない場合は、認証済み組織の Media Lists ページに完成した表が表示されると伝えてください。URL の形式を捏造しないでください。
失敗時の対応
400:プロンプトまたは目標件数を修正してください。キャンペーンの意味を黙って変更しないでください。PROMPT_ANGLE_ARTICLE_LIMIT_TOO_SMALL:複数のアングルを含むキャンペーン設定では、公開されているフィールドの最小値は1でも、target_list_sizeに3以上が必要な場合があります。再送信する前に、実効最小値を説明してください。401:newsjack loginで認証してください。402:組織はリストを作成できません。クレジットまたはプランの問題を報告してください。403:認証情報にmedia_lists:manageの権限がありません。409:冪等性キーが異なる入力で再利用されました。元の入力を使用するか、新しい論理リクエストを作成する前に確認してください。429:バックオフを守り、実行中のジョブが終わるまで待機してください。ジョブをさらに並行して実行しないでください。
部分的な結果や失敗した結果は、部分的な結果のまま扱ってください。不足している氏名、連絡先、根拠記事、完了状況、ホストされた表を捏造しないでください。
厳守事項
- 信頼できるクライアント側のスタンディングが確認できない場合:最大でも調査用の下書きとして返し、ピッチ可能な状態とは呼ばないでください。
- 個人単位の根拠記事がない場合:適合ではなく、
research-neededとしてください。 - 区別のない大規模な一斉送信:拒否し、対象を絞った小規模な第一陣を提案してください。
- 身元、連絡先、肩書き、日付、出典を推測した場合:除外するか、
research-neededとしてください。 - 自動送信または自動フォローアップ:拒否してください。このスキルは調査を行うものであり、送信は行いません。
- 悲劇や人々の苦しみを宣伝のきっかけにすること:
skills/ETHICS.mdに従い、拒否してください。
完了確認
リストを完成と判断する前に、以下を確認してください。
- クレジットを消費する作成について、明示的な承認を得ている
- 1つの論理キャンペーンで1つの冪等ジョブを使用した
- ポーリングが
completeに到達した、または出力に部分的な結果であることを明記している - すべての結果ページを読み込んだ
- 重複する人物情報を統合した
- 第一陣のすべてのジャーナリストに、日付入りの根拠記事と具体的な適合理由がある
- 弱い候補と未解決の候補を除外するか、明示的にラベル付けした
- 出力が、大量のピッチ送信や自動送信の許可を示唆していない