← 返回
未分类 Key 中文

multi-news-aggregator-via x402

Agent skill for x402-paid global news aggregation and source/time-filtered search.
x402 付费全球新闻聚合,支持按来源和时间过滤的搜索功能
parsonssss
未分类 clawhub v1.0.0 1 版本 100000 Key: 需要
★ 0
Stars
📥 294
下载
💾 0
安装
1
版本
#latest

概述

x402 News Search Skill (Local Only)

Use this skill to let your AI agent search global news via:

  • API base: https://www.x402api.app/
  • Endpoint: POST /api/v1/news/search
  • Payment: x402 pay-per-call

This is a news aggregation capability: your agent can search across web-indexed news sources, including major US and European outlets, and can filter by source domain and publication time.

What this skill is for

  • Search broad global news by keyword
  • Filter by source domain (for example cnn.com, bloomberg.com, ft.com)
  • Filter by publication time range (time_published)
  • Keep the same x402 payment flow used by your other endpoints

Environment variables

EVM_PRIVATE_KEY=0x_your_private_key
API_BASE_URL=https://www.x402api.app/

API contract

Endpoint:

POST /api/v1/news/search

Body example:

{
  "query": "Federal Reserve rates",
  "limit": 10,
  "time_published": "7d",
  "source": "bloomberg.com",
  "country": "US",
  "lang": "en"
}

Parameters

  • query (required): search keywords
  • limit (optional): 1-500, default 10
  • time_published (optional): time filter (for example anytime, 1h, 1d, 7d, 1y)
  • source (optional): source domain filter, for example cnn.com
  • country (optional): 2-letter country code, default US
  • lang (optional): 2-letter language code, default en

x402 payment flow (same pattern as your other APIs)

  1. Call the endpoint without payment and get 402 Payment Required.
  2. Parse payment requirements from response headers.
  3. Create and sign payment payload.
  4. Retry with payment signature header.
  5. Read final response body.

Example buyer code

import { x402Client, x402HTTPClient } from "@x402/core/client";
import { ExactEvmScheme, toClientEvmSigner } from "@x402/evm";
import { createPublicClient, http } from "viem";
import { privateKeyToAccount } from "viem/accounts";
import { base } from "viem/chains";

const baseUrl =
  process.env.X402_API_BASE_URL ??
  process.env.API_BASE_URL ??
  "https://www.x402api.app/";
const endpoint = `${baseUrl.replace(/\/$/, "")}/api/v1/news/search`;

async function main() {
  const privateKey = process.env.EVM_PRIVATE_KEY;
  if (!privateKey) throw new Error("Missing EVM_PRIVATE_KEY");
  if (!privateKey.startsWith("0x")) throw new Error("EVM_PRIVATE_KEY must start with 0x");

  const account = privateKeyToAccount(privateKey as `0x${string}`);
  const publicClient = createPublicClient({ chain: base, transport: http() });
  const signer = toClientEvmSigner(account, publicClient);
  const client = new x402Client().register("eip155:*", new ExactEvmScheme(signer));
  const httpClient = new x402HTTPClient(client);

  const payload = {
    query: "AI chip demand",
    limit: 10,
    time_published: "7d",
    source: "reuters.com",
    country: "US",
    lang: "en",
  };

  const unpaid = await fetch(endpoint, {
    method: "POST",
    headers: { "content-type": "application/json" },
    body: JSON.stringify(payload),
  });

  if (unpaid.status !== 402) {
    const text = await unpaid.text();
    throw new Error(`Expected 402, got ${unpaid.status}. body=${text}`);
  }

  const required = httpClient.getPaymentRequiredResponse(
    (name) => unpaid.headers.get(name),
    {},
  );
  const paymentPayload = await httpClient.createPaymentPayload(required);

  const paid = await fetch(endpoint, {
    method: "POST",
    headers: {
      "content-type": "application/json",
      ...httpClient.encodePaymentSignatureHeader(paymentPayload),
    },
    body: JSON.stringify(payload),
  });

  const result = await paid.json();
  if (!paid.ok) throw new Error(`Request failed: ${paid.status} ${JSON.stringify(result)}`);
  console.log(result);
}

void main().catch((error) => {
  console.error(error);
  process.exit(1);
});

News aggregation coverage (major outlets)

The search can cover web-indexed mainstream media, including but not limited to:

United States

  • The New York Times (nytimes.com)
  • The Washington Post (washingtonpost.com)
  • The Wall Street Journal (wsj.com)
  • Bloomberg (bloomberg.com)
  • Reuters (reuters.com)
  • Associated Press (apnews.com)
  • CNN (cnn.com)
  • Fox News (foxnews.com)
  • NBC News (nbcnews.com)
  • ABC News (abcnews.go.com)
  • CBS News (cbsnews.com)
  • USA Today (usatoday.com)
  • Los Angeles Times (latimes.com)
  • Politico (politico.com)
  • Axios (axios.com)
  • Business Insider (businessinsider.com)
  • Forbes (forbes.com)
  • The Atlantic (theatlantic.com)
  • Time (time.com)
  • Newsweek (newsweek.com)

Europe / UK

  • Financial Times (ft.com)
  • The Economist (economist.com)
  • BBC News (bbc.com)
  • Reuters Europe coverage (reuters.com)
  • The Guardian (theguardian.com)
  • The Times (thetimes.co.uk)
  • The Telegraph (telegraph.co.uk)
  • Sky News (news.sky.com)
  • Euronews (euronews.com)
  • POLITICO Europe (politico.eu)
  • Le Monde (lemonde.fr)
  • Le Figaro (lefigaro.fr)
  • AFP (afp.com)
  • Der Spiegel (spiegel.de)
  • Die Zeit (zeit.de)
  • Frankfurter Allgemeine Zeitung (faz.net)
  • Handelsblatt (handelsblatt.com)
  • El País (elpais.com)
  • El Mundo (elmundo.es)
  • Corriere della Sera (corriere.it)
  • La Repubblica (repubblica.it)
  • ANSA (ansa.it)
  • NRC (nrc.nl)
  • De Telegraaf (telegraaf.nl)
  • Swissinfo (swissinfo.ch)

> Note: Coverage depends on upstream indexing and availability; this list represents major outlets that are commonly discoverable.

Recommended agent behaviors

  • If the user specifies a media brand, map it to domain and set source.
  • If the user asks “latest”, set a tighter time_published (like 1d or 7d) and then sort/compare timestamps.
  • If result count is low, remove source first, then expand time range.
  • Always surface source domain + publish time in final answer.

Error handling

  • 402 Payment Required: generate payment payload and retry.
  • invalid_json_body (400): send valid JSON.
  • invalid_news_request (400): fix query/limit/source format.
  • news_upstream_auth_failed (502): server-side upstream auth issue.
  • news_upstream_rate_limited (429): retry with backoff.
  • news_upstream_error (502): transient upstream failure, retry.

版本历史

共 1 个版本

  • v1.0.0 当前
    2026-05-07 19:50 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

ai-intelligence

Self-Improving + Proactive Agent

ivangdavila
自我反思+自我批评+自我学习+自组织记忆。智能体评估自身工作、发现错误并持续改进。
★ 1,358 📥 318,474
ai-intelligence

ontology

oswalpalash
类型化知识图谱,用于结构化智能体记忆与可组合技能。支持创建/查询实体(人员、项目、任务、事件、文档)及关联...
★ 712 📥 243,883
security-compliance

Skill Vetter

spclaudehome
AI智能体技能安全预审工具。安装ClawdHub、GitHub等来源技能前,检查风险信号、权限范围及可疑模式。
★ 1,215 📥 266,579