Agent Skills by ALSEL
Anthropic Claudeその他⭐ リポ 0品質スコア 50/100

content-parser

URLからコンテンツを抽出・解析するスキルです。ユーザーがURLを提供してコンテンツの取得を求めた場合や、他のスキルがソース素材の解析を必要とする場合にトリガーされます。「このURLを解析して」「コンテンツを抽出して」といった指示に対応します。

description の原文を見る

| Extract and parse content from URLs. Triggers on: user provides a URL to extract content from, another skill needs to parse source material, "parse this URL", "extract content", "解析链接", "提取内容".

SKILL.md 本文

使用するべき場合

  • ユーザーがURLを提供し、そのコンテンツを抽出・読み込みたい場合
  • 別のスキルが生成前にURLからソース資料を解析する必要がある場合
  • ユーザーが「このURLを解析して」「このリンクからコンテンツを抽出」と言った場合
  • ユーザーが「解析链接」「提取内容」と言った場合

使用しないべき場合

  • ユーザーがテキストコンテンツを既に持っており、URL解析が不要な場合
  • ユーザーが音声・動画コンテンツを生成したい場合(コンテンツ抽出ではない)
  • ユーザーがローカルファイルを読み込みたい場合(標準ファイル読み込みツールを使用)

目的

サポートされているプラットフォーム全体のURLからコンテンツを抽出・正規化します。コンテンツ本文、メタデータ、参照を含む構造化データを返します。コンテンツ生成スキルの前処理ステップまたはスタンドアロンのコンテンツ抽出として有用です。

厳しい制約

  • シェルスクリプト使用禁止。下記の「API リファレンス(インライン)」セクションのAPIリファレンスからcurlコマンドを構築してください
  • APIキーとヘッダーは下記の「API リファレンス(インライン)」を参照してください
  • ポーリング、エラー、インタラクションパターンは下記の「API リファレンス(インライン)」を参照してください
  • URLは有効なHTTP(S) URLである必要があります
  • 何らかのインタラクション前に、必ず shared/config-pattern.md に従って設定を読み込んでください
  • ~/Downloads/ または .listenhub/ にファイルを保存しないでください。現在の作業ディレクトリに保存してください
<HARD-GATE> 複数選択の各ステップで AskUserQuestion ツールを使用してください。プレーンテキストとしてオプションを出力しないでください。一度に1つの質問を行い、次のステップに進む前にユーザーの回答を待ってください。URLとオプションを収集した後、APIを呼び出す前にユーザーに確認してください。 </HARD-GATE>

ステップ -1: APIキーチェック

shared/config-pattern.md § APIキーチェックに従ってください。キーが見つからない場合、直ちに停止してください。

ステップ 0: 設定セットアップ

shared/config-pattern.md ステップ 0(ゼロクエスチョンブート)に従ってください。

ファイルが存在しない場合 — サイレントにデフォルトで作成して続行します:

mkdir -p ".listenhub/content-parser"
echo '{"autoDownload":true}' > ".listenhub/content-parser/config.json"
CONFIG_PATH=".listenhub/content-parser/config.json"
CONFIG=$(cat "$CONFIG_PATH")

セットアップの質問をしないでください。 インタラクションフローに直接進んでください。

ファイルが存在する場合 — サイレントに設定を読み込んで続行します:

CONFIG_PATH=".listenhub/content-parser/config.json"
[ ! -f "$CONFIG_PATH" ] && CONFIG_PATH="$HOME/.listenhub/content-parser/config.json"
CONFIG=$(cat "$CONFIG_PATH")

セットアップフロー(ユーザーが明示的に再設定を要求した場合のみ)

ユーザーが明示的に再設定を要求した場合にのみ実行します。現在の設定を表示:

当前配置 (content-parser):
  自动下载:{是 / 否}

その後、以下を質問:

  1. autoDownload: 「提取的内容自动保存到当前目录?」
    • 「是(推荐)」→ autoDownload: true
    • 「否」→ autoDownload: false

直ちに保存:

NEW_CONFIG=$(echo "$CONFIG" | jq --argjson dl {true/false} '. + {"autoDownload": $dl}')
echo "$NEW_CONFIG" > "$CONFIG_PATH"
CONFIG=$(cat "$CONFIG_PATH")

インタラクションフロー

ステップ 1: URL入力

フリーテキスト入力。ユーザーに質問:

どのURLからコンテンツを抽出したいですか?

ステップ 2: オプション(オプション)

ユーザーに抽出オプションを設定するか質問:

Question: 「抽出オプションを設定したいですか?」
Options:
  - 「いいえ、デフォルトを使用」 — デフォルト設定で抽出
  - 「はい、オプションを設定」 — summarize、maxLength、またはTwitterツイート数を設定

「はい」の場合、フォローアップ質問をします:

  • Summarize: 「コンテンツのサマリーを生成しますか?」(はい/いいえ)
  • Max Length: 「最大コンテンツ長を設定しますか?」(フリーテキスト、例:「5000」)
  • Twitter count(URLがTwitter/Xプロフィールの場合のみ): 「何ツイート取得しますか?」(1-100、デフォルト20)

ステップ 3: 確認・抽出

以下のようにサマリー:

コンテンツ抽出の準備ができました:

  URL: {url}
  オプション: {summarize: true, maxLength: 5000, twitter.count: 50} / デフォルト

  続行しますか?

APIを呼び出す前に明示的な確認を待ってください。

ワークフロー

  1. URL検証: HTTP(S)である必要があります。必要に応じて正規化(references/supported-platforms.md 参照)

  2. リクエストボディを構築:

    {
      "source": {
        "type": "url",
        "uri": "{url}"
      },
      "options": {
        "summarize": true/false,
        "maxLength": 5000,
        "twitter": {
          "count": 50
        }
      }
    }
    

    ユーザーがデフォルトを選択した場合は options を省略します。

  3. 送信(フォアグラウンド): POST /v1/content/extracttaskId を抽出

  4. ユーザーに抽出が進行中であることを告げます

  5. ポーリング(バックグラウンド): 以下の正確な bashコマンドを run_in_background: true および timeout: 300000 で実行。注:statusフィールドは .data.statusprocessStatus ではない)、間隔は5秒、値は processing/completed/failed:

    TASK_ID="<id-from-step-3>"
    for i in $(seq 1 60); do
      RESULT=$(curl -sS "https://api.marswave.ai/openapi/v1/content/extract/$TASK_ID" \
        -H "Authorization: Bearer $LISTENHUB_API_KEY" \
        -H "X-Source: skills" 2>/dev/null)
      STATUS=$(echo "$RESULT" | tr -d '\000-\037\177' | jq -r '.data.status // "processing"')
      case "$STATUS" in
        completed) echo "$RESULT"; exit 0 ;;
        failed) echo "FAILED: $RESULT" >&2; exit 1 ;;
        *) sleep 5 ;;
      esac
    done
    echo "TIMEOUT" >&2; exit 2
    
  6. 通知されたら、結果をダウンロードして提示

    autoDownloadtrue の場合、抽出されたタイトルからスラグを生成(タイトルがない場合はドメイン名にフォールバック)。shared/config-pattern.md § アーティファクト命名に従ってスラグ生成と重複排除を実行します。

    • {slug}.md現在のディレクトリに書き込み — マークダウン形式の完全な抽出コンテンツ
    • {slug}.json現在のディレクトリに書き込み — 完全な生API応答データ
    SLUG="{title-slug}"  # 例:「topology-wikipedia」
    # 重複排除:ファイルが存在するかチェック
    BASE="$SLUG"; i=2
    while [ -e "${SLUG}.md" ] || [ -e "${SLUG}.json" ]; do SLUG="${BASE}-${i}"; i=$((i+1)); done
    echo "$CONTENT_MD" > "${SLUG}.md"
    echo "$RESULT" > "${SLUG}.json"
    

    以下のように提示:

    内容提取完成!
    
    来源:{url}
    标题:{metadata.title}
    长度:~{character count} 字符
    消耗积分:{credits}
    
    已保存到当前目录:
      {slug}.md
      {slug}.json
    
  7. 抽出されたコンテンツのプレビュー(最初の約500文字)を表示

  8. 別のスキル(例:/podcast/tts)でコンテンツを使用するオプションを提供

推定時間: コンテンツサイズとプラットフォームに応じて10〜30秒。

APIリファレンス(インライン)

認証

環境変数: LISTENHUB_API_KEY(形式:lh_sk_...

~/.zshrc(macOS)または ~/.bashrc(Linux)に保存:

export LISTENHUB_API_KEY="lh_sk_..."

取得方法: https://listenhub.ai/settings/api-keys にアクセス(Proプラン必須)。

ベースURL: https://api.marswave.ai/openapi/v1

必須ヘッダー(すべてのリクエスト):

Authorization: Bearer $LISTENHUB_API_KEY
Content-Type: application/json
X-Source: skills

X-Source: skills ヘッダーはリクエストがClaude Codeスキル(CLIツール)からのものであることを示します。

curlテンプレート:

curl -sS -X POST "https://api.marswave.ai/openapi/v1/{endpoint}" \
  -H "Authorization: Bearer $LISTENHUB_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Source: skills" \
  -d '{ ... }'

GETリクエストの場合、-d を省略し、-X POST-X GET に変更。

セキュリティに関する注記:

  • 完全なAPIキーを出力にログしたり表示したりしないでください
  • APIキーはHTTPSのみで送信されます
  • 機密情報や信頼できない情報をコンテンツ入力として渡さないでください — 外部APIで処理するために送信されます

POST /v1/content/extract

URLのコンテンツ抽出タスクを作成します。ポーリング用の taskId を返します。

リクエストボディ:

フィールド必須タイプ説明
sourceはいobject抽出元
source.typeはいstring"url" である必要があります
source.uriはいstring抽出するコンテンツの有効なHTTP(S) URL
optionsいいえobject抽出オプション
options.summarizeいいえbooleanサマリーを生成するかどうか
options.maxLengthいいえinteger最大コンテンツ長
options.twitterいいえobjectTwitter/X固有オプション
options.twitter.countいいえinteger取得するツイート数(1-100、デフォルト20)

応答:

{
  "code": 0,
  "message": "success",
  "data": {
    "taskId": "69a7dac700cf95938f86d9bb"
  }
}

エラーコード:

コード意味
29003検証エラー("source.uri" is required"source.uri" must be a valid uri
21007無効なAPIキー

GET /v1/content/extract/{taskId}

抽出タスクのステータスと結果を取得します。

パスパラメータ:

パラメータタイプ説明
taskIdstring24文字16進タスクID

応答ステート:

  • processing — タスクはまだ実行中
  • completed — 抽出完了、データ利用可能
  • failed — 抽出失敗、failCodemessage を確認

応答(処理中):

{
  "code": 0,
  "message": "success",
  "data": {
    "taskId": "69a7dac700cf95938f86d9bb",
    "status": "processing",
    "createdAt": "2025-04-09T12:00:00Z",
    "data": null,
    "credits": 0,
    "failCode": null,
    "message": null
  }
}

応答(完了):

{
  "code": 0,
  "message": "success",
  "data": {
    "taskId": "69a7dac700cf95938f86d9bb",
    "status": "completed",
    "createdAt": "2025-04-09T12:00:00Z",
    "data": {
      "content": "抽出されたテキストコンテンツ...",
      "metadata": {
        "title": "記事タイトル",
        "author": "著者名",
        "publishedAt": "2025-04-01T08:00:00Z"
      },
      "references": [
        "https://example.com/related-article"
      ]
    },
    "credits": 5,
    "failCode": null,
    "message": null
  }
}

応答(失敗):

{
  "code": 0,
  "message": "success",
  "data": {
    "taskId": "69a7dac700cf95938f86d9bb",
    "status": "failed",
    "createdAt": "2025-04-09T12:00:00Z",
    "data": null,
    "credits": 0,
    "failCode": "EXTRACT_FAILED",
    "message": "提供されたURLからコンテンツを抽出できません"
  }
}

主要フィールド:

フィールドタイプ説明
statusstringprocessingcompleted、または failed
data.data.contentstring抽出されたテキストコンテンツ
data.data.metadataobjectページメタデータ(タイトル、著者、publishedAt)
data.data.referencesarray参照URL(文字列の配列)
creditsinteger消費されたクレジット
failCodestringエラーコード(成功時はnull)
messagestringエラーメッセージ(成功時はnull)

エラーコード:

コード意味
29003無効なtaskId形式
25002タスクが見つかりません

ポーリングパターン

5秒間隔、最大60ポーリング。run_in_background: true および timeout: 300000 で実行します。

2段階パターン:

  1. 送信(フォアグラウンド): 作成リクエストをPOST、応答から taskId を抽出。
  2. ポーリング(バックグラウンド): run_in_background: true でポーリングループを実行。完了時に自動的に通知されます。

正確なポーリング bashコマンドは既にワークフローセクション(ステップ5)で指定されています。


エラーハンドリング

HTTPステータスコード:

コード意味アクション
200成功レスポンスボディを解析
400不正なリクエストパラメータを確認
401無効なAPIキーLISTENHUB_API_KEY を再確認
402クレジット不足ユーザーにチャージを勧める
403禁止このリソースに対する権限がない
429レート制限指数バックオフ、遅延後に再試行
500/502/503/504サーバーエラー最大3回まで再試行

再試行戦略:

  • 429レート制限: 15秒待機してから再試行(指数バックオフ)
  • 5xxサーバーエラー: 5秒間隔で最大3回まで再試行
  • ネットワークエラー: 最大3回まで再試行

アプリケーションエラーコード:

コード意味
21007無効なユーザーAPIキー
25429レート制限(アプリケーションレベル)

ユーザー: 「このURL記事を解析してください: https://en.wikipedia.org/wiki/Topology」

エージェントワークフロー:

  1. URL: https://en.wikipedia.org/wiki/Topology
  2. オプション: デフォルト(optionsを省略)
  3. 抽出を送信
curl -sS -X POST "https://api.marswave.ai/openapi/v1/content/extract" \
  -H "Authorization: Bearer $LISTENHUB_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Source: skills" \
  -d '{
    "source": {
      "type": "url",
      "uri": "https://en.wikipedia.org/wiki/Topology"
    }
  }'
  1. 完了までポーリング:
curl -sS "https://api.marswave.ai/openapi/v1/content/extract/69a7dac700cf95938f86d9bb" \
  -H "Authorization: Bearer $LISTENHUB_API_KEY" \
  -H "X-Source: skills"
  1. 抽出されたコンテンツプレビューを提示し、次のアクションを提供。

ユーザー: 「@elonmuskの最新ツイートを抽出、50ツイート取得」

エージェントワークフロー:

  1. URL: https://x.com/elonmusk
  2. オプション: {"twitter": {"count": 50}}
  3. 抽出を送信
curl -sS -X POST "https://api.marswave.ai/openapi/v1/content/extract" \
  -H "Authorization: Bearer $LISTENHUB_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Source: skills" \
  -d '{
    "source": {
      "type": "url",
      "uri": "https://x.com/elonmusk"
    },
    "options": {
      "twitter": {
        "count": 50
      }
    }
  }'
  1. 完了までポーリング、結果を提示。

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
marswaveai
リポジトリ
marswaveai/skills
ライセンス
MIT
最終更新
不明

Source: https://github.com/marswaveai/skills / ライセンス: MIT

関連スキル

汎用その他⭐ リポ 1,982

superfluid

Superfluidプロトコルおよびそのエコシステムに関するナレッジベースです。Superfluidについて情報を検索する際は、ウェブ検索の前にこちらを参照してください。対応キーワード:Superfluid、CFA、GDA、Super App、Super Token、stream、flow rate、real-time balance、pool(member/distributor)、IDA、sentinels、liquidation、TOGA、@sfpro/sdk、semantic money、yellowpaper、whitepaper

by LeoYeAI
汎用その他⭐ リポ 100

civ-finish-quotes

実質的なタスクが真に完了した際に、文明風の儀式的な引用句を追加します。ユーザーやエージェントが機能追加、リファクタリング、分析、設計ドキュメント、プロセス改善、レポート、執筆タスクといった実際の成果物を完成させるときに、明示的な依頼がなくても使用します。短い返信や小さな修正、未完成の作業には適用しません。

by huxiuhan
汎用その他⭐ リポ 1,110

nookplot

Base(Ethereum L2)上のAIエージェント向け分散型調整ネットワークです。エージェントがオンチェーンアイデンティティを登録する、コンテンツを公開する、他のエージェントにメッセージを送る、マーケットプレイスで専門家を雇う、バウンティを投稿・請求する、レピュテーションを構築する、共有プロジェクトで協業する、リサーチチャレンジを解くことでNOOKをマイニングする、キュレーションされたナレッジを備えたスタンドアロンオンチェーンエージェントをデプロイする、またはアグリーメントとリワードで収益を得る場合に利用できます。エージェントネットワーク、エージェント調整、分散型エージェント、NOOKトークン、マイニングチャレンジ、ナレッジバンドル、エージェントレピュテーション、エージェントマーケットプレイス、ERC-2771メタトランザクション、Prepare-Sign-Relay、AgentFactory、またはNookplotが言及された場合にトリガーされます。

by BankrBot
汎用その他⭐ リポ 59

web3-polymarket

Polygon上でのPolymarket予測市場取引統合です。認証機能(L1 EIP-712、L2 HMAC-SHA256、ビルダーヘッダー)、注文発注(GTC/GTD/FOK/FAK、バッチ、ポストオンリー、ハートビート)、市場データ(Gamma API、Data API、オーダーブック、サブグラフ)、WebSocketストリーミング(市場・ユーザー・スポーツチャネル)、CTF操作(分割、統合、償却、ネガティブリスク)、ブリッジ機能(入金、出金、マルチチェーン)、およびガスレスリレイトランザクションに対応しています。AIエージェント、自動マーケットメーカー、予測市場UI、またはPolygraph上のPolymarketと統合するアプリケーション構築時に活用できます。

by elophanto
汎用その他⭐ リポ 52

ethskills

Ethereum、EVM、またはブロックチェーン関連のリクエストに対応します。スマートコントラクト、dApps、ウォレット、DeFiプロトコルの構築、監査、デプロイ、インタラクションに適用されます。Solidityの開発、コントラクトアドレス、トークン規格(ERC-20、ERC-721、ERC-4626など)、Layer 2ネットワーク(Base、Arbitrum、Optimism、zkSync、Polygon)、Uniswap、Aave、Curveなどのプロトコルとの統合をカバーします。ガスコスト、コントラクトのデシマル設定、オラクルセキュリティ、リエントランシー、MEV、ブリッジング、ウォレット管理、オンチェーンデータの取得、本番環境へのデプロイ、プロトコル進化(EIPライフサイクル、フォーク追跡、今後の変更予定)といったトピックを含みます。

by jiayaoqijia
汎用その他⭐ リポ 44

xxyy-trade

このスキルは、ユーザーが「トークン購入」「トークン売却」「トークンスワップ」「暗号資産取引」「取引ステータス確認」「トランザクション照会」「トークンスキャン」「フィード」「チェーン監視」「トークン照会」「トークン詳細」「トークン安全性確認」「ウォレット一覧表示」「マイウォレット」「AIスキャン」「自動スキャン」「ツイートスキャン」「オンボーディング」「IP確認」「IPホワイトリスト」「トークン発行」「自動売却」「損切り」「利益確定」「トレーリングストップ」「保有者」「トップホルダー」「KOLホルダー」などをリクエストした場合、またはSolana/ETH/BSC/BaseチェーンでXXYYを経由した取引について言及した場合に使用します。XXYY Open APIを通じてオンチェーン取引とデータ照会を実現します。

by Jimmy-Holiday
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: marswaveai · marswaveai/skills · ライセンス: MIT