mcpField
F
find-editorial-citations

find-editorial-citations

github.com/lvtd-llc生産性179 回インストール4 週間前に更新
リポジトリ

find-editorial-citations について

CiteGuild のメンバー記事から関連する情報源を探し、編集上の引用に適するかを判断するスキルです。CLI、MCP、REST で検索でき、関連性の評価や検証、適切な引用方法も案内します。

主な機能

  1. 01CiteGuild のメンバー記事を検索
  2. 02CLI、MCP、REST の各方式に対応
  3. 03言語とドメインによる結果の絞り込み
  4. 04テーマとの関連性に基づく情報源の順位付け
  5. 05引用と検証に関する指針

活用シーン

  1. 01草稿の主張を支える情報源を探す
  2. 02メンバー記事を使ってテーマを調査
  3. 03引用前に候補となる情報源を確認

MCP 対応

MCP クライアントでは、search_member_articles などの CiteGuild ツールでメンバー記事を検索します。認証やサブスクリプション状態の確認には get_user_info を利用できます。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/lvtd-llc/citeguild-skills --skill find-editorial-citations

インストール後、Claude Code で/find-editorial-citationsを入力して読み込まれたか確認します。

同梱ファイルagents/openai.yaml

詳細

編集上の引用元を探す

ユーザーの成果物を本当に改善する情報源を探します。CiteGuildは、幅広い検索エンジンの代替ではなく、特定のメンバーの記事コーパスとして扱ってください。

ワークフロー

  1. トピック、文章、主張、または草稿から、焦点を絞った検索クエリを抽出します。ユーザーの意図を保ち、機密情報や不要なテキストを送信しないでください。
  2. ユーザー自身のドメインが推測できず、それを除外することが結果に大きく影響する場合にのみ、ドメインを尋ねます。既知の所有ドメインは、excluded_domains または繰り返し指定する --exclude-domain フラグに正確な値として渡します。
  3. 利用可能なトランスポートを1つ選びます。
    • OpenClaw、Hermes、シェルエージェント、またはスクリプトでは、インストール済みの場合は citeguild CLI を優先します。
    • CiteGuild MCP ツールを公開しているクライアントでは、search_member_articles を呼び出します。
    • それ以外の場合は、バージョン付き REST エンドポイント POST https://citeguild.lvtd.dev/api/v1/search を呼び出します。
  4. 最初は10件の結果から始めます。最初の検索で不十分な場合に限り、上限を増やすか、より絞り込んだクエリを1つ試します。
  5. トピックおよび主張との直接的な関連性に基づいて候補を順位付けします。件数を満たすために候補を増やすより、関連性の高い候補を少数選びます。
  6. 有用な候補にはそれぞれ、タイトル、正規 URL、ドメイン、および何を裏付けられるかの簡潔な説明を添えて提示します。
  7. ユーザーがコンテンツを執筆中の場合、情報源が前後の主張を実質的に裏付ける場合にのみ引用を推奨します。検索結果だけでは内容を判断できない場合は、内容を説明する前に記事を確認します。

3つのトランスポートはすべて、同じ v1 検索コントラクトを使用します。query は必須、limit は1~50、language は任意で、正確なドメインを最大20件まで除外できます。

CLI

キーは CITEGUILD_API_KEY に保存してください。フラグとして渡したり、URL や設定ファイルに記載したりしないでください。

キーを開示せずに、設定と認証を確認します。

citeguild config status
citeguild auth status

エージェントやスクリプトでは、安定した JSON を要求します。クエリより前にオプションを指定します。

citeguild search --json --limit 10 \
  --language en \
  --exclude-domain my-site.example \
  "How do Django transaction commit hooks work?"

ハイフンで始まるクエリの前には -- を使用します。診断情報は stderr に出力されます。JSON エラーには code、message、retryable、exit_code が含まれ、利用可能な場合は request_id と retry_after_seconds も含まれます。ユーザーから依頼されない限り、CLI をインストールまたはアップグレードしないでください。コマンドが利用できない場合は、MCP または REST を使用します。

MCP

search_member_articles を次の値で呼び出します。

  • query:質問、トピック、主張、または草稿の一節
  • limit:初期値は10
  • language:任意の言語タグ
  • excluded_domains:ユーザーが所有する任意の正確なドメイン

認証またはサブスクリプションの状態を確認する必要がある場合にのみ、get_user_info を使用します。

REST API

CITEGUILD_API_KEY の API キーは、Authorization: Bearer または X-API-Key のいずれかで送信します。クエリ文字列には入れないでください。

curl --fail-with-body --silent --show-error \
  https://citeguild.lvtd.dev/api/v1/search \
  -H "Authorization: Bearer $CITEGUILD_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{"query":"How do Django transaction commit hooks work?","limit":10,"language":"en","excluded_domains":["my-site.example"]}'

成功時のレスポンスには contract_version: "v1" と results が含まれます。各結果には article_id、title、canonical_url、domain、excerpt、relevance、language、last_seen_at が含まれます。

ガードレール

  • 結果は、CiteGuild メンバーが登録に同意した記事からのものであり、ウェブ全体を網羅するものではないと明示します。
  • CiteGuild が返したという理由だけで、候補を検証済み、権威ある情報源、または推奨済みと表現しないでください。
  • 被リンク、掲載、ランキング向上、または相互リンクを約束しないでください。
  • 交換を成立させるために無関係な引用を追加しないでください。編集上の関連性を優先します。
  • メンバーの記事を見つけたり引用したりしたことで、その所有者に引用し返す義務が生じると示唆しないでください。
  • タイトル、URL、主張、または情報源の内容を捏造しないでください。
  • より広範なウェブ検索や独立した検証は、ユーザーが別途依頼した場合、またはタスクで本当に必要な場合に限って行い、それらの結果を CiteGuild の候補とは区別してください。

認証とエラー

CLI、REST、API キーによる MCP アクセスでは、CITEGUILD_API_KEY を使用します。Claude Code と ChatGPT では、クライアントが別途 API キーを設定していない限り、MCP クライアントの OAuth フローを優先してください。認証情報をハードコード、表示、ログ出力、コミットしないでください。

トランスポートエラーは一貫して処理してください。

  • 401:認証情報がない、無効、または失効しています。
  • 403 と subscription_required:有効なサブスクリプションが必要であることを説明し、処理を中止してください。
  • 422:リクエストの仕様を修正してください。
  • 429:Retry-After または retry_after_seconds に従ってください。
  • 503:クエリをそのまま保持し、架空の結果に差し替えるのではなく、再試行を提案してください。

出力

最初に、有力な一致件数を示してください。一致ごとに、以下を返してください。

  • リンク付きの記事タイトルとドメイン
  • 裏付けとなる可能性のある主張またはセクション
  • 関連性の根拠を1文で説明
  • 検証上の注意点

十分に関連性のある結果がない場合は、その旨を明確に伝えてください。

コメント