Token导航 LogoToken导航TokenDH.com
Iato SDK logo
文档知识未说明官方来源来源级核验

Iato SDK

MCP Server

IATO官方TypeScript SDK,提供网站爬取、内容管理和AI驱动的信息架构功能。

工具数

0

提示词数

0

GitHub Stars

0

资源数

0
知识管理TypeScriptAI分析

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

IATO-ai

提供方

IATO-ai

最后核验

2026/5/17 20:22

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

iato-sdk

官方TypeScript SDK IATO 国际 航空 API-网站抓取、内容治理和人工智能驱动的信息架构。

  • 零依赖 --使用本地 fetch (节点18+)
  • 完全打字 --每个端点、参数和响应都有TypeScript类型
  • 重试和超时 --5xx和429上的指数回退,可配置的限制
  • 树可以摇动 --ESM+CJS双输出

安装

npm install iato-sdk

快速开始

import { IATO } from 'iato-sdk';

const iato = new IATO({ apiKey: process.env.IATO_API_KEY! });

// Start a crawl
const job = await iato.crawls.start({
  url: 'https://example.com',
  workspace_id: 'ws_abc123',
  max_pages: 500,
});

// Wait for completion (polls every 5s)
const completed = await iato.crawls.waitForCompletion(job.id);

// Analyze results
const stats = await iato.crawls.stats(completed.id);
const issues = await iato.crawls.seoIssues(completed.id);
const broken = await iato.crawls.brokenLinks(completed.id);

console.log(`Crawled ${stats.total_pages} pages, found ${issues.issues.length} SEO issues`);

配置

const iato = new IATO({
  apiKey: 'your-api-key',     // Required
  baseUrl: 'https://iato.ai', // Default
  timeout: 30000,              // 30s default
  maxRetries: 2,               // Retries on 5xx/429
  retryDelay: 1000,            // Base delay (exponential backoff)
});

资源

工作区

const { workspaces } = await iato.workspaces.list();
const ws = await iato.workspaces.create({ name: 'My Project' });
await iato.workspaces.update(ws.id, { name: 'Renamed' });
const { members } = await iato.workspaces.members(ws.id);
await iato.workspaces.invite(ws.id, { email: 'dev@co.com', role: 'editor' });
await iato.workspaces.delete(ws.id);

// Start with full options
const job = await iato.crawls.start({
  url: 'https://example.com',
  workspace_id: 'ws_123',
  max_pages: 5000,
  max_depth: 10,
  js_rendering: true,
  js_wait_time: 3000,
  include_screenshots: true,
  respect_robots: true,
  custom_headers: { 'Accept-Language': 'en-US' },
  excluded_paths: ['/admin/*', '/wp-json/*'],
});

// Monitor
const status = await iato.crawls.get(job.id);
console.log(`${status.pages_crawled}/${status.pages_total} pages`);

// Wait and get results
const done = await iato.crawls.waitForCompletion(job.id, 3000, 300_000);

// Pages with filtering
const { pages } = await iato.crawls.pages(done.id, { limit: 100, status_code: 200 });

// Full analysis suite
const stats      = await iato.crawls.stats(done.id);
const broken     = await iato.crawls.brokenLinks(done.id);
const redirects  = await iato.crawls.redirects(done.id);
const duplicates = await iato.crawls.duplicates(done.id);
const seo        = await iato.crawls.seoIssues(done.id);
const perf       = await iato.crawls.performance(done.id);
const resources  = await iato.crawls.resources(done.id);
const structured = await iato.crawls.structuredData(done.id);

// Compare two crawls
const diff = await iato.crawls.compare('job_old', 'job_new');
console.log(`+${diff.summary.added} -${diff.summary.removed} ~${diff.summary.changed}`);

// Export
const csv = await iato.crawls.exportCsv(done.id);
const xml = await iato.crawls.exportSitemap(done.id);

网站地图和人工智能助手

// Create from crawl
const sitemap = await iato.sitemaps.create({ job_id: job.id, name: 'Current IA' });

// Manage nodes
const { nodes } = await iato.sitemaps.nodes(sitemap.id);
const node = await iato.sitemaps.createNode(sitemap.id, {
  title: 'New Section',
  type: 'section',
  parent_id: nodes[0].id,
});
await iato.sitemaps.updateNode(sitemap.id, node.id, { title: 'Renamed Section' });

// AI Chat — restructure via natural language
const chat = await iato.sitemaps.chat(sitemap.id, {
  message: 'Move all blog posts under a /blog/2025/ section',
});
console.log(chat.response);

// If AI generated a plan, review and execute
if (chat.plan) {
  const plan = await iato.sitemaps.plan(sitemap.id, chat.plan.id);
  console.log(`Plan: ${plan.description}, ${plan.operations.length} operations`);
  await iato.sitemaps.executePlan(sitemap.id, plan.id);
  // Or: await iato.sitemaps.rejectPlan(sitemap.id, plan.id);
  // Undo if needed: await iato.sitemaps.undoPlan(sitemap.id, plan.id);
}

// Quick AI actions
const analysis = await iato.sitemaps.analyze(sitemap.id);
const suggestions = await iato.sitemaps.suggestStructure(sitemap.id);

内容清单

const { items, total } = await iato.inventory.list(job.id, { limit: 50 });
const invStats = await iato.inventory.stats(job.id);
console.log(`${invStats.total_pages} pages, avg ${invStats.avg_word_count} words`);

导航

const navStats = await iato.navigation.stats(job.id);
const { menus } = await iato.navigation.detect(job.id);
const validation = await iato.navigation.validate(job.id);

分类生成器

5阶段人工智能分类工作流程:

// Phase 1: Extract terms from content
const extracted = await iato.taxonomy.extractTerms(job.id);
await iato.taxonomy.importExtracted(job.id, { terms: extracted.terms });

// Phase 2: AI suggests hierarchy
const { hierarchy } = await iato.taxonomy.suggestHierarchy(job.id);
// Adjust if needed
await iato.taxonomy.setParent(job.id, { term_id: 't1', parent_id: 't2' });

// Phase 3: Auto-classify pages
const { classifications } = await iato.taxonomy.autoClassify(job.id);

// Phase 4: Review
const pending = await iato.taxonomy.pendingClassifications(job.id);
await iato.taxonomy.bulkReview(job.id, {
  reviews: pending.classifications.map(c => ({
    page_url: c.page_url,
    term_id: c.term_id,
    action: c.confidence > 0.8 ? 'approve' : 'reject',
  })),
});

// Phase 5: Export
const json = await iato.taxonomy.exportJson(job.id);
const csv  = await iato.taxonomy.exportCsv(job.id);
const skos = await iato.taxonomy.exportSkos(job.id);

日程表

const schedule = await iato.schedules.create({
  name: 'Weekly audit',
  url: 'https://example.com',
  frequency: 'weekly',
  schedule_time: '06:00',
  workspace_id: 'ws_123',
});

// Trigger manually
const { job_id } = await iato.schedules.run(schedule.id);

网络钩子

const hook = await iato.webhooks.create({
  url: 'https://hooks.slack.com/services/xxx',
  events: ['crawl.completed', 'crawl.failed', 'changes.detected'],
  secret: 'whsec_my_secret',
});

await iato.webhooks.test(hook.id);

// In your webhook handler:
const isValid = await iato.webhooks.verifySignature(
  rawBody,
  req.headers['x-iato-signature'],
  'whsec_my_secret'
);

报告

const report = await iato.reports.generate({ job_id: job.id, type: 'full' });
const pdf = await iato.reports.download(report.id);

身份验证和用户

const { user } = await iato.auth.me();
const quota = await iato.users.quota();

// Manage API keys
const newKey = await iato.auth.createApiKey({ name: 'CI Pipeline' });
console.log(`Key: ${newKey.key}`); // Only shown once

组织

const { users } = await iato.org.members();
await iato.org.invite({ email: 'new@company.com', role: 'member' });
const { invitations } = await iato.org.invitations();

健康

const status = await iato.health.check();
const detailed = await iato.health.detailed();
const manifest = await iato.health.manifest();

错误处理

所有错误都会扩展 IATOError 使用类型化子类:

import { IATO, AuthenticationError, NotFoundError, RateLimitError, ValidationError } from 'iato-sdk';

try {
  await iato.crawls.get('nonexistent');
} catch (error) {
  if (error instanceof NotFoundError) {
    console.log('Job not found');
  } else if (error instanceof AuthenticationError) {
    console.log('Bad API key');
  } else if (error instanceof RateLimitError) {
    console.log(`Rate limited. Retry after ${error.retryAfter}s`);
  } else if (error instanceof ValidationError) {
    console.log('Invalid params:', error.details);
  }
}

SDK会自动重试5xx个错误和429个错误,并采用指数回退。通过配置 maxRetriesretryDelay.

高级

请求选项

每个方法都接受一个可选 RequestOptions 参数:

const controller = new AbortController();
setTimeout(() => controller.abort(), 5000);

const stats = await iato.crawls.stats(jobId, {
  timeout: 10000,
  signal: controller.signal,
  headers: { 'X-Request-Id': 'req_123' },
});

自定义HTTP客户端

对于测试或高级使用,使用自定义组合资源 HttpClient:

import { HttpClient, Crawls } from 'iato-sdk';

const http = new HttpClient({ apiKey: 'test', baseUrl: 'http://localhost:8000' });
const crawls = new Crawls(http);

二进制下载

返回文件的导出方法为您提供 ArrayBuffer:

import { writeFile } from 'fs/promises';

const csv = await iato.crawls.exportCsv(jobId);
await writeFile('export.csv', Buffer.from(csv));

const skos = await iato.taxonomy.exportSkos(jobId);
await writeFile('taxonomy.rdf', Buffer.from(skos));

需求

许可证

麻省理工学院

目录标签

目录标签

知识管理TypeScriptAI分析网站爬取本地部署内容管理TypeScriptSDKSEO优化

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

api-key

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明api-key部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP