@ cloro-dev/ reswer- parser (英语)
一个强大的TypeScript库,用于解析来自ChatGPT,双子座,Perplexity,Grok,Google AI Overview/Mode,和Bing AI Mode的AI模型响应.
框架不可知性: 此库返回可以在任意框架中渲染的 HTML 字符串( React, Vue, Svelte, vanilla JS等) .
特征
- 🤖 多服务支持: ChatGPT,双子座,迷幻,AI概览,AI模式,Bing AI模式,Grok
- 🔍 自动检测: 从响应结构自动检测 AI 提供者
- 🎨 内建型号: 供应商专用型号
- 🔧 框架不可知性: 任何框架的纯 HTML 输出
- 🧹 脚本删除: 删除
<script>财务报告和审定财务报表<noscript>要素。 这不是一个完整的 HTML 消毒器. - 📦 类型脚本: 包含全类型脚本支持
- 🎯 轻巧: 核心解析没有运行时间依赖性
安装
npm install @cloro-dev/response-parser
# or
yarn add @cloro-dev/response-parser
# or
pnpm add @cloro-dev/response-parser
快速启动
此库解析 AI 响应并返回 HTML 字符串 。 您可以在任意框架中渲染 HTML .
警卫: 解析器只删除
<script>财务报告和审定财务报表<noscript>要素。 它不删除事件处理器属性( 例如)onerror=)或(或)javascript:URLs (英语). 如果 HTML 来自于您不信任的源头, 请进行消毒parsed.html带有完整的 HTML 消毒器( 例如) 多维化在你做出来之前.
import { parseAiResponse, detectProvider } from "@cloro-dev/response-parser";
// Auto-detect provider and parse
const response = await fetchAIResponse();
const parsed = parseAiResponse(response);
console.log(parsed.provider); // 'CHATGPT' | 'GEMINI' | etc.
console.log(parsed.html); // HTML with <script> and <noscript> elements removed
console.log(parsed.text); // Plain text version
用法实例
反应
import { parseAiResponse } from "@cloro-dev/response-parser";
function MyComponent() {
const parsed = parseAiResponse(aiResponse, {
removeLinks: true
});
return (
<div dangerouslySetInnerHTML={{ __html: parsed.html }} />
);
}
阴道
<script setup>
import { parseAiResponse } from "@cloro-dev/response-parser";
const parsed = parseAiResponse(aiResponse, {
removeLinks: true
});
</script>
<template>
<div v-html="parsed.html"></div>
</template>
丝绒
<script>
import { parseAiResponse } from "@cloro-dev/response-parser";
const parsed = parseAiResponse(aiResponse, {
removeLinks: true
});
</script>
<div>{@html parsed.html}</div>
香草 Java 脚本
import { parseAiResponse } from "@cloro-dev/response-parser";
const parsed = parseAiResponse(aiResponse, {
removeLinks: true
});
document.getElementById('output').innerHTML = parsed.html;
API 参考
parseAiResponse(response, options?)
与自动检测提供者解析AI响应.
选项 :
removeLinks数字 :boolean- 从 HTML 中删除所有超链接(默认 ):false(中文(简体) )removeHeader数字 :boolean- 删除导航条/标题(默认:false· ;true用于 AI 概览和 AI 模式。 ChatGPT、 迷惑性、 双子座、 副驾驶、 Grok、 AI 概览和 AI 模式)removeFooter数字 :boolean- 删除后续输入框/页脚(默认:false· ;true用于 AI 概览和 AI 模式。 ChatGPT、 迷惑性、 双子座、 副驾驶、 Grok、 AI 概览和 AI 模式)removeSidebar数字 :boolean- 删除侧边栏(默认:false, ChatGPT, 双子座, 复杂度, 副驾驶和 AI 模式)removeSources数字 :boolean- 删除来源/参考面板(默认:false, ChatGPT, 双子座, 复杂度, 副驾驶 & Grok)
说明: Cookie/privacy旗被自动去除,用于ChatGPT,AI Mode,Copilot,Grok,和Perplexity——不需要选项. 签入的提示会自动去除双子座和双子座.
回返情况: ParsedResponse | null
interface ParsedResponse {
provider: AIProvider;
html: string;
text: string;
sources?: Array<{
title: string;
url: string;
snippet?: string;
}>;
}
detectProvider(response)
从回复中发现人工智能提供者.
回返情况: AIProvider | null
type AIProvider =
| 'CHATGPT'
| 'GEMINI'
| 'PERPLEXITY'
| 'COPILOT'
| 'AIOVERVIEW'
| 'AIMODE'
| 'BING_AIMODE'
| 'GROK';
COPILOT 已贬值:clano终止其副驾驶端点。 使用 BING_AIMODE 对于宾的AI答案.
支持供应商
| 提供者 | 状态 | 特征 |
|---|---|---|
| 聊天游戏 | ✅ | 侧边栏、页眉、页脚去除、隐藏自动饼干横幅 |
| 双子座 | ✅ | 边栏、页眉、页脚、去除源 |
| 复杂 | ✅ | 侧边栏、页眉、页脚、删除源头、隐藏自动饼干横幅 |
| 副驾驶 | 已贬值 | 侧边栏、页眉、页脚、删除源头、隐藏自动饼干横幅 |
| 大赦国际概览 | ✅ | 标题、页脚去除、 WIZ 数据提取 |
| AI 模式 | ✅ | 侧边栏、页眉、页脚去除、隐藏自动饼干横幅 |
| 键 AI 模式 | ✅ | 将整个答案(从答案框的) srcdoc);标题(理由面板)和去除源 |
| 格鲁克 | ✅ | 删除源代码, 隐藏自动饼干旗 |
常用案例
删除超链接
import { parseAiResponse } from "@cloro-dev/response-parser";
const parsed = parseAiResponse(response, {
removeLinks: true, // Removes all <a> tags, keeps text
});
清除视图( 移除 UI 元素)
const parsed = parseAiResponse(response, {
removeHeader: true, // Remove top navigation bar
removeFooter: true, // Remove follow-up input box
removeLinks: true, // Remove all hyperlinks
removeSources: true, // Remove sources/references panel
});
手动提供方规格
import { parseAiResponse, AIProvider } from "@cloro-dev/response-parser";
const parsed = parseAiResponse(response, {
provider: "CHATGPT",
});
仅提供检测器
import { detectProvider } from "@cloro-dev/response-parser";
const provider = detectProvider(response);
console.log(`Detected: ${provider}`); // 'CHATGPT' | 'GEMINI' | etc.
从 v0. 1. x 迁移
如果您正在使用 v0. 1. x 的 React 组件, 这里要说明如何迁移 :
前 (v0. 1. x 有反应)
import { ResponseRenderer } from "@cloro-dev/response-parser/react";
<ResponseRenderer
response={response}
removeLinks={true}
onProviderDetected={(provider) => console.log("Detected:", provider)}
/>
后 (v. 2. 0 框架- 可知性)
import { parseAiResponse } from "@cloro-dev/response-parser";
const parsed = parseAiResponse(response, {
removeLinks: true
});
console.log("Detected:", parsed.provider);
<div dangerouslySetInnerHTML={{ __html: parsed.html }} />
核心解析逻辑是相同的 - 您只需要在您选择的框架里处理 HTML 渲染自己 .
变了什么
页:1
- Npm Trusted Publishing and professional. 出版工作流程的首发版,包含 npm 信任出版和出处. 没有库更改
页:1
- ✅ 固定 README说,解析器会消毒HTML. 只删除
<script>财务报告和审定财务报表<noscript>要素。 新的安全说明让你在制作之前 将未信任的 HTML 消毒 - ✅ 固定 这个
package.json仓库 URL 现在指向cloro-dev/response-parser
页:1
- ✅ 固定 聊天游戏
removeSources现在隐藏移动页面的开源对话框
页:1
- ✅ 固定
require("@cloro-dev/response-parser")失败exports is not defined. 共同JS大楼现在dist/index.cjs - ✅ 固定 复杂
removeSources现在隐藏打开的"源"弹出 - ✅ 固定 迷惑饼干横幅(新标出)和登录提示现在总是被隐藏
- ✅ 固定 副驾驶
removeHeader财务报告和审定财务报表removeSidebar不再打破页面布局.removeSidebar不再隐藏引用面板 - ✅ 固定 副驾驶
removeHeader现在隐藏日期分隔符 - ✅ 固定 聊天游戏
removeSources现在隐藏所有页面的源代码和源代码表 - ✅ 固定 聊天游戏
removeFooter财务报告和审定财务报表removeSidebar不再更改页面结构 - ✅ 固定 双子座签注提示现在总是隐藏
- ✅ 固定 大赦国际概览
removeFooter现在隐藏 Google 页 - ✅ 固定 提供商检测不再依赖于双子座页面的模式顺序,不再报告Google结果页面链接双子座为双子座
页:1
- ✅ 已添加 复杂
removeSidebar支持(左向导航去除) - ✅ 固定 Iframes中的复杂布局渲染(单列流的 CSS 覆盖)
- ✅ 固定 复杂
removeFooter现在通过 CSS 隐藏“ 询问后续” 栏目 - ✅ 固定 聊天游戏
removeFooter现在隐藏作曲输入形式并折叠空格 - ✅ 固定 聊天游戏
removeSidebar现在通过 CSS 隐藏剩余边栏项目 - ✅ 固定 AI 模式
removeHeader现在隐藏“ 新线程” 作曲按钮 - ✅ 固定 副驾驶
removeHeader现在隐藏粘接头( 共享按钮) - ✅ 改进 CSS 超接现在是有条件的——只有在相应的时才被注入
remove*选项为真( 复杂度、 ChatGPT、 副驾驶)
页:1
- ✅ 已添加 ChatGPT 自动 cookie 横幅删除
- ✅ 固定 处理可变面板宽度的副驾驶源删除正则ex
页:1
- ✅ 已添加 副驾驶
removeSources财务报告和审定财务报表removeSidebar支助 - ✅ 已添加 副驾驶自动饼干旗的去除
- ✅ 已添加 AI 模式
removeSidebar支持(删除历史面板) - ✅ 固定 AI 模式边栏/脚部去除和检测
- ✅ 已添加 AI 隐藏模式自动饼干同意横幅
页:1
- ✅ 已添加
removeSources双子座、双子座和格鲁克的选项 - ✅ 已添加 自动 cookie/ 空闲地去除模糊和Grok 横幅
- ✅ 固定 复杂倒塌的答题容器( JS 动画高程工作)
v0.3.0 (韩语)
- ✅ 已添加 Grok 供应商支持
- ✅ 简化 代码库和已删除的颜色倒置
页:1
- ✅ 删除 反应组件和钩子(现在的框架不可知)
- ✅ 删除 反应对等依赖
- ✅ 简化 返回纯 HTML 字符串的 API
- ✅ 保留 核心解析逻辑( 未更改)
页:1
- ✅ 已重命名
removeNavbar→removeHeader(移动导航条/标题) - ✅ 已重命名
removeFollowup→removeFooter(删除后续输入框/脚) - ✅ 扩展
removeHeader对AI 概览和AI模式的支持 - ✅ 扩展
removeFooter对所有提供者的支持(ChatGPT、迷惑、双子座、副驾驶、AI Overview、AI Mode) - ✅ 改进 ChatGPT 样式
- ✅ 更新 AI 模式和 AI 概览
v.1.3 (中文(简体) )
- ✅ 总是删除
<script>财务报告和审定财务报表<noscript>来自 HTML 的元素 - ✅ 总是包含 特定提供者样式
- ✅ 总是使用 相对链接的提供者基础 URL
- ❌ 删除
theme选项(样式是针对提供者的) - ❌ 删除
sanitize选项( 总是启用) - ❌ 删除
includeStyles选项( 总是启用) - ❌ 删除
baseUrl选项(用户提供者默认值)
发展
# Install dependencies
pnpm install
# Build
pnpm build
# Development mode
pnpm dev
# Type check
pnpm type-check
# Lint
pnpm lint
释放
这个 发布工作流程 当一个版本标签被推出时,将软件包发布到 npm 。 它使用 npm 信任出版,所以不需要登录到 npm .
-
在"有什么变化"下增加一栏.
-
增加版本. 这个变化
package.json并创造一份承诺和一份v标签 :npm version patch # 0.5.2 → 0.5.3 npm version minor # 0.5.2 → 0.6.0 npm version major # 0.5.2 → 1.0.0 -
推动承诺和标签。 工作流程类型检查、提示、构建和出版:
git push --follow-tags
许可证
麻省理工学院