Trends Hub

by baranwang
Verified
import { z } from 'zod'; import { defineToolConfig, getRssItems } from '../utils'; const bbcRequestSchema = z .object({ category: z .union([ z.literal('').describe('热门新闻'), z.literal('world').describe('国际'), z.literal('uk').describe('英国'), z.literal('business').describe('商业'), z.literal('politics').describe('政治'), z.literal('health').describe('健康'), z.literal('education').describe('教育'), z.literal('science_and_environment').describe('科学与环境'), z.literal('technology').describe('科技'), z.literal('entertainment_and_arts').describe('娱乐与艺术'), ]) .optional() .default(''), edition: z .union([ z.literal(''), z.literal('uk').describe('UK'), z.literal('us').describe('US & Canada'), z.literal('int').describe('Rest of the world'), ]) .optional() .default('') .describe('版本,仅对 `category` 为空有效'), }) .transform((values) => { let url = 'https://feeds.bbci.co.uk/news/'; if (values.category) { url += `${values.category}/`; } url += 'rss.xml'; if (values.edition) { url += `?edition=${values.edition}`; } return { ...values, url, }; }); export default defineToolConfig({ name: 'get-bbc-news', description: '获取 BBC 新闻,提供全球新闻、英国新闻、商业、政治、健康、教育、科技、娱乐等资讯', zodSchema: bbcRequestSchema, func: async (args) => { const { url } = bbcRequestSchema.parse(args); return getRssItems(url); }, });