{"_id":"@albertlighter/aiform","_rev":"2-b7d5a200991a6d8e98deebabe96ff8a4","name":"@albertlighter/aiform","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@albertlighter/aiform","version":"1.0.0","keywords":["ai","form","automation","openai","deepseek","openrouter","form-filling","ai-assistant","typescript","javascript","web-automation","form-history","form-management"],"author":{"url":"https://github.com/AlbertLighter/aiform","name":"AIForm Team","email":"contact@aiform.dev"},"license":"MIT","_id":"@albertlighter/aiform@1.0.0","maintainers":[{"name":"albertlighter","email":"albertlighter@icloud.com"}],"homepage":"https://github.com/AlbertLighter/aiform#readme","bugs":{"url":"https://github.com/AlbertLighter/aiform/issues"},"dist":{"shasum":"da4b5280f19822e18fd81e29ceeaad05842416ce","tarball":"https://registry.npmjs.org/@albertlighter/aiform/-/aiform-1.0.0.tgz","fileCount":15,"integrity":"sha512-1ceq9oBOaf4PLq69IC4PwoMG5LHkocMSALSuRyymxjSmDx+xsOefHTJdC66jgEwiN/noDLxJfAeNsaLFK+yKwg==","signatures":[{"sig":"MEUCIQD2heJXL5/MFgcbDcBSeFHtjkhdPj2v7sUAftg0C+YvuAIgB/DjJRwClQiDTnI4hSjQqJ07vWCBBAXf4i3hr4aJMI0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":292940},"main":"dist/aiform.js","type":"module","types":"dist/index.d.ts","module":"dist/aiform.esm.js","engines":{"node":">=14.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/aiform.esm.js","require":"./dist/aiform.js"}},"gitHead":"17dac0a5d785e9a3ce1cadfaf23a99860733512d","scripts":{"dev":"rollup -c -w","test":"echo \"Error: no test specified\" && exit 1","build":"rollup -c","serve":"npm run build && npm run start","start":"python3 -m http.server 8000 || python -m SimpleHTTPServer 8000","publish:npm":"npm publish","publish:beta":"npm publish --tag beta","version:major":"npm version major","version:minor":"npm version minor","version:patch":"npm version patch","prepublishOnly":"npm run build"},"_npmUser":{"name":"albertlighter","email":"albertlighter@icloud.com"},"repository":{"url":"git+https://github.com/AlbertLighter/aiform.git","type":"git"},"_npmVersion":"11.3.0","description":"一个基于AI的智能表单填写工具，支持自动提取表单数据、AI重写优化、表单历史记录以及智能填充","directories":{},"_nodeVersion":"24.2.0","browserslist":["defaults","not IE 11"],"dependencies":{},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"^2.6.0","rollup":"^4.0.0","typescript":"^5.0.0","rollup-plugin-string":"^3.0.0","@rollup/plugin-commonjs":"^25.0.0","@rollup/plugin-typescript":"^11.0.0","@rollup/plugin-node-resolve":"^15.0.0"},"peerDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/aiform_1.0.0_1750068514219_0.8613688864474804","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@albertlighter/aiform","version":"1.0.1","description":"一个基于AI的智能表单填写工具，支持自动提取表单数据、AI重写优化、表单历史记录以及智能填充。同时支持npm包和浏览器插件使用。","type":"module","main":"dist/npm/aiform.js","module":"dist/npm/aiform.esm.js","types":"dist/npm/index.d.ts","exports":{".":{"import":"./dist/npm/aiform.esm.js","require":"./dist/npm/aiform.js","types":"./dist/npm/index.d.ts"}},"scripts":{"build":"npm run build:npm","build:npm":"rollup -c build/rollup.npm.js","build:extension":"rollup -c build/rollup.extension.js","build:all":"npm run build:npm && npm run build:extension","dev":"rollup -c build/rollup.npm.js -w","dev:extension":"rollup -c build/rollup.extension.js -w","start":"python3 -m http.server 8000 || python -m SimpleHTTPServer 8000","serve":"npm run build && npm run start","test":"echo \"Error: no test specified\" && exit 1","prepublishOnly":"npm run build:npm","publish:npm":"npm publish","publish:beta":"npm publish --tag beta","version:patch":"npm version patch","version:minor":"npm version minor","version:major":"npm version major","package:extension":"npm run build:extension && cd dist/extension && zip -r ../aiform-extension.zip ."},"keywords":["ai","form","automation","openai","deepseek","openrouter","form-filling","ai-assistant","typescript","javascript","web-automation","form-history","form-management","browser-extension","chrome-extension","firefox-extension"],"author":{"name":"AIForm Team","email":"contact@aiform.dev","url":"https://github.com/AlbertLighter/aiform"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/AlbertLighter/aiform.git"},"bugs":{"url":"https://github.com/AlbertLighter/aiform/issues"},"homepage":"https://github.com/AlbertLighter/aiform#readme","engines":{"node":">=14.0.0"},"browserslist":["defaults","not IE 11"],"devDependencies":{"@rollup/plugin-commonjs":"^25.0.0","@rollup/plugin-node-resolve":"^15.0.0","@rollup/plugin-typescript":"^11.0.0","rollup-plugin-copy":"^3.5.0","rollup":"^4.0.0","rollup-plugin-string":"^3.0.0","typescript":"^5.0.0","tslib":"^2.6.0"},"dependencies":{},"peerDependencies":{},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_id":"@albertlighter/aiform@1.0.1","gitHead":"1c0a5cc994d3fc1e7da3ae13427c7bc26d65e50f","_nodeVersion":"24.2.0","_npmVersion":"11.3.0","dist":{"integrity":"sha512-3p6BX6qfUkUFbcbVgOJyr/ScAUgJwSA+1Z5CqCQN2szSrsD556uvXtxwq6WI9RCP6kLrc+H1pKRqTrcFZk/7lA==","shasum":"32ee4b4d424b3a19ed0a6b790a580c8f470fdacd","tarball":"https://registry.npmjs.org/@albertlighter/aiform/-/aiform-1.0.1.tgz","fileCount":18,"unpackedSize":290909,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD1VcpkXIYzs1zznFwBYCrz3HOco1i3u/dFsVHezFf70gIgPrtnKYEAJQrUJ4k7GForLU0+NU/I8b8JJAXhV8CYxp4="}]},"_npmUser":{"name":"albertlighter","email":"albertlighter@icloud.com","actor":{"name":"albertlighter","email":"albertlighter@icloud.com","type":"user"}},"directories":{},"maintainers":[{"name":"albertlighter","email":"albertlighter@icloud.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/aiform_1.0.1_1750144691038_0.5359693772153267"},"_hasShrinkwrap":false}},"time":{"created":"2025-06-16T10:08:34.150Z","modified":"2025-06-17T07:18:11.378Z","1.0.0":"2025-06-16T10:08:34.484Z","1.0.1":"2025-06-17T07:18:11.223Z"},"bugs":{"url":"https://github.com/AlbertLighter/aiform/issues"},"author":{"name":"AIForm Team","email":"contact@aiform.dev","url":"https://github.com/AlbertLighter/aiform"},"license":"MIT","homepage":"https://github.com/AlbertLighter/aiform#readme","keywords":["ai","form","automation","openai","deepseek","openrouter","form-filling","ai-assistant","typescript","javascript","web-automation","form-history","form-management","browser-extension","chrome-extension","firefox-extension"],"repository":{"type":"git","url":"git+https://github.com/AlbertLighter/aiform.git"},"description":"一个基于AI的智能表单填写工具，支持自动提取表单数据、AI重写优化、表单历史记录以及智能填充。同时支持npm包和浏览器插件使用。","maintainers":[{"name":"albertlighter","email":"albertlighter@icloud.com"}],"readme":"# AIForm - 智能表单填写工具\n\nAIForm 是一个基于人工智能的表单自动填写工具，能够智能分析网页中的表单数据，使用大模型（OpenAI、OpenRouter、DeepSeek）对内容进行重写优化，并自动填回表单中。\n\n## ✨ 特性\n\n- 🚀 **开箱即用** - 只需引入脚本即可自动工作\n- 🎯 **智能识别** - 自动识别页面中的所有表单元素\n- 🤖 **AI 驱动** - 支持多种AI提供商（OpenAI、OpenRouter、DeepSeek）\n- 💫 **美观界面** - 现代化的UI设计，响应式布局\n- 🔧 **高度可配置** - 支持自定义提示词、API配置等\n- 📱 **框架兼容** - 兼容Vue、React等主流框架\n- 🎨 **视觉反馈** - 填入数据时提供视觉反馈效果\n- 📋 **表单历史记录** - 自动保存表单输入历史，支持一键恢复\n\n## 🚀 快速开始\n\n### 1. 安装\n\n```bash\nnpm install @albertlighter/aiform\n```\n\n#### 通过 CDN 引入\n```html\n<script src=\"https://unpkg.com/aiform@latest/dist/aiform.js\"></script>\n```\n\n#### 下载文件\n下载 `dist/aiform.js` 文件并在HTML中引入。\n\n### 2. 基本使用\n\n#### HTML 中直接使用\n```html\n<!DOCTYPE html>\n<html>\n<head>\n    <title>我的网页</title>\n</head>\n<body>\n    <!-- 你的表单 -->\n    <form>\n        <input type=\"text\" name=\"name\" placeholder=\"姓名\">\n        <input type=\"email\" name=\"email\" placeholder=\"邮箱\">\n        <textarea name=\"description\" placeholder=\"描述\"></textarea>\n    </form>\n\n    <!-- 引入 AIForm -->\n    <script src=\"path/to/aiform.js\"></script>\n</body>\n</html>\n```\n\n#### JavaScript 模块使用\n```javascript\nimport AIForm from '@albertlighter/aiform';\n\n// 创建实例\nconst aiform = new AIForm({\n    apiKey: 'your-api-key',\n    provider: 'openai',\n    model: 'gpt-3.5-turbo',\n    enableHistory: true\n});\n```\n\n#### React 中使用\n```jsx\nimport React, { useEffect } from 'react';\nimport AIForm from '@albertlighter/aiform';\n\nfunction App() {\n    useEffect(() => {\n        const aiform = new AIForm({\n            apiKey: process.env.REACT_APP_OPENAI_API_KEY,\n            provider: 'openai',\n            enableHistory: true\n        });\n\n        return () => aiform.destroy();\n    }, []);\n\n    return (\n        <div>\n            <form>\n                <input name=\"name\" placeholder=\"姓名\" />\n                <input name=\"email\" placeholder=\"邮箱\" />\n            </form>\n        </div>\n    );\n}\n```\n\n#### Vue 中使用\n```vue\n<template>\n    <div>\n        <form>\n            <input v-model=\"form.name\" name=\"name\" placeholder=\"姓名\">\n            <input v-model=\"form.email\" name=\"email\" placeholder=\"邮箱\">\n        </form>\n    </div>\n</template>\n\n<script>\nimport AIForm from '@albertlighter/aiform';\n\nexport default {\n    data() {\n        return {\n            form: {\n                name: '',\n                email: ''\n            },\n            aiform: null\n        };\n    },\n    mounted() {\n        this.aiform = new AIForm({\n            apiKey: process.env.VUE_APP_OPENAI_API_KEY,\n            provider: 'openai',\n            enableHistory: true\n        });\n    },\n    beforeDestroy() {\n        if (this.aiform) {\n            this.aiform.destroy();\n        }\n    }\n};\n</script>\n```\n\n### 3. 历史记录功能\n\n```javascript\n// 手动保存表单数据\naiform.saveCurrentFormData();\n\n// 恢复最新的表单数据\naiform.restoreLatestFormData();\n\n// 获取历史管理器进行高级操作\nconst historyManager = aiform.getHistoryManager();\nconst history = historyManager.getCurrentPageHistory();\n```\n\n## 📋 历史记录功能详解\n\n### 自动保存机制\n\n- **智能防抖** - 输入停止1秒后自动保存，避免频繁操作\n- **数据过滤** - 只保存非空字段，节省存储空间\n- **去重处理** - 相同数据不会重复保存\n\n### 历史记录管理\n\n- **按页面分类** - 不同页面的表单数据分别存储\n- **时间排序** - 按时间顺序展示历史记录\n- **批量操作** - 支持清空当前页面或全部历史记录\n- **存储统计** - 显示存储使用情况和记录数量\n\n### 智能恢复\n\n- **自动提示** - 页面加载时检测历史数据并提示恢复\n- **一键恢复** - 支持恢复最新数据或指定历史记录\n- **选择性恢复** - 在表单数据界面选择需要恢复的字段\n\n## ⚙️ 配置选项\n\n```javascript\nconst config = {\n    // API 密钥\n    apiKey: 'your-api-key',\n    \n    // AI 提供商: 'openai' | 'openrouter' | 'deepseek'\n    provider: 'openai',\n    \n    // 模型名称\n    model: 'gpt-3.5-turbo',\n    \n    // 自定义 API 地址（可选）\n    apiUrl: 'https://api.openai.com/v1/chat/completions',\n    \n    // 自定义提示词\n    prompt: '请重写以下表单数据，使其更加专业和完整：',\n    \n    // 按钮位置: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left'\n    position: 'bottom-right',\n    \n    // 历史记录配置\n    enableHistory: true\n};\n\nconst aiform = new AIForm(config);\n```\n\n### 全局配置（通过 script 标签引入时）\n\n```html\n<script>\n    // 在引入 AIForm 之前设置全局配置\n    window.AIFORM_CONFIG = {\n        position: 'bottom-left',\n        prompt: '自定义提示词...',\n        enableHistory: true\n    };\n    \n    // 设置为 false 可禁用自动初始化\n    // window.AIFORM_CONFIG = false;\n</script>\n<script src=\"path/to/aiform.js\"></script>\n```\n\n## 🤖 支持的 AI 提供商\n\n### OpenAI\n```javascript\nnew AIForm({\n    provider: 'openai',\n    apiKey: 'sk-...',\n    model: 'gpt-3.5-turbo', // 或 'gpt-4'\n    apiUrl: 'https://api.openai.com/v1/chat/completions', // 可选\n    enableHistory: true\n});\n```\n\n### OpenRouter\n```javascript\nnew AIForm({\n    provider: 'openrouter',\n    apiKey: 'sk-or-...',\n    model: 'openai/gpt-3.5-turbo', // 或其他支持的模型\n    apiUrl: 'https://openrouter.ai/api/v1/chat/completions', // 可选\n    enableHistory: true\n});\n```\n\n### DeepSeek\n```javascript\nnew AIForm({\n    provider: 'deepseek',\n    apiKey: 'sk-...',\n    model: 'deepseek-chat',\n    apiUrl: 'https://api.deepseek.com/v1/chat/completions', // 可选\n    enableHistory: true\n});\n```\n\n## 📚 API 参考\n\n### AIForm 类\n\n#### 构造函数\n```javascript\nnew AIForm(config?: AIFormConfig)\n```\n\n#### 方法\n\n##### `extractFormData(): Record<string, any>`\n提取当前页面的所有表单数据。\n\n```javascript\nconst formData = aiform.extractFormData();\nconsole.log(formData);\n```\n\n##### `rewriteData(data: Record<string, any>): Promise<Record<string, any>>`\n使用 AI 重写指定的数据。\n\n```javascript\nconst originalData = { name: '张三', email: 'test@example.com' };\nconst rewrittenData = await aiform.rewriteData(originalData);\n```\n\n##### `fillFormData(data: Record<string, any>): void`\n将数据填入页面表单。\n\n```javascript\nconst data = { name: '李四', email: 'lisi@example.com' };\naiform.fillFormData(data);\n```\n\n##### `updateConfig(config: Partial<AIFormConfig>): void`\n更新配置。\n\n```javascript\naiform.updateConfig({\n    apiKey: 'new-api-key',\n    model: 'gpt-4'\n});\n```\n\n##### `destroy(): void`\n销毁实例，清理 DOM 元素。\n\n```javascript\naiform.destroy();\n```\n\n### 配置接口\n\n```typescript\ninterface AIFormConfig {\n    apiKey?: string;\n    provider?: 'openai' | 'openrouter' | 'deepseek';\n    model?: string;\n    apiUrl?: string;\n    prompt?: string;\n    position?: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left';\n    enableHistory?: boolean;\n}\n```\n\n## 🎯 使用场景\n\n- **表单测试** - 快速生成测试数据\n- **内容优化** - 让AI帮助改善表单内容质量\n- **数据标准化** - 统一表单数据格式\n- **效率提升** - 减少重复的表单填写工作\n- **内容创作** - 基于现有内容生成更好的文案\n\n## 🔍 工作原理\n\n1. **表单识别** - 自动扫描页面中的 `input`、`textarea`、`select` 元素\n2. **数据提取** - 智能提取表单字段的键名和值\n3. **AI 处理** - 将数据发送给 AI 模型进行重写\n4. **智能填充** - 将重写后的数据自动填回对应的表单字段\n5. **视觉反馈** - 提供视觉效果确认填充成功\n\n## 🛠️ 开发构建\n\n```bash\n# 安装依赖\nnpm install\n\n# 开发模式\nnpm run dev\n\n# 构建生产版本\nnpm run build\n```\n\n## 📝 更新日志\n\n### v1.0.0\n- 🎉 首次发布\n- ✨ 支持 OpenAI、OpenRouter、DeepSeek\n- 🎨 现代化 UI 设计\n- 📱 响应式布局\n- 🔧 高度可配置\n\n## 🤝 贡献\n\n欢迎提交 Issue 和 Pull Request！\n\n## 📄 许可证\n\nMIT License\n\n## 🆘 常见问题\n\n### Q: 如何获取 API 密钥？\n- **OpenAI**: 访问 [OpenAI API](https://platform.openai.com/api-keys)\n- **OpenRouter**: 访问 [OpenRouter](https://openrouter.ai/keys)  \n- **DeepSeek**: 访问 [DeepSeek API](https://platform.deepseek.com/)\n\n### Q: 支持哪些表单元素？\nA: 支持所有标准 HTML 表单元素：`input`（各种类型）、`textarea`、`select`。\n\n### Q: 如何自定义提示词？\nA: 通过配置 `prompt` 选项来自定义 AI 的重写指令。\n\n### Q: 是否支持文件上传字段？\nA: 文件上传字段会被跳过，不会进行处理。\n\n### Q: 如何在生产环境中使用？\nA: 确保 API 密钥安全，建议通过环境变量或服务端代理来管理。\n\n## 🌟 功能特色\n\n- **智能表单提取** - 自动识别页面中的表单字段\n- **AI驱动重写** - 使用大语言模型优化表单数据\n- **多AI平台支持** - 支持OpenAI、OpenRouter、DeepSeek等\n- **可视化界面** - 直观的字段选择和配置界面\n\n## 🌐 浏览器支持\n\n- Chrome 60+\n- Firefox 55+\n- Safari 12+\n- Edge 79+\n\n## 📦 示例页面\n\n- `examples/basic.html` - 基本功能演示\n- `examples/advanced.html` - 高级功能演示\n- `examples/history-demo.html` - 历史记录功能演示\n\n## 🎯 历史记录API\n\n### FormHistoryManager\n\n```javascript\nconst historyManager = aiform.getHistoryManager();\n\n// 获取历史记录\nhistoryManager.getAllHistory(); // 获取所有历史记录\nhistoryManager.getCurrentPageHistory(); // 获取当前页面历史记录\nhistoryManager.getLatestFormData(); // 获取最新表单数据\n\n// 保存和删除\nhistoryManager.saveFormData(data); // 手动保存数据\nhistoryManager.deleteHistoryEntry(id); // 删除指定记录\nhistoryManager.clearCurrentPageHistory(); // 清空当前页面历史\nhistoryManager.clearAllHistory(); // 清空所有历史\n\n// 实用功能\nhistoryManager.formatTimestamp(timestamp); // 格式化时间\nhistoryManager.getStorageInfo(); // 获取存储信息\n```\n\n## 🔄 自动保存配置\n\n```javascript\n// 历史记录会在以下情况自动保存：\n// 1. 表单字段输入变化（防抖1秒）\n// 2. AI重写完成后\n// 3. 手动调用保存方法\n\n// 自动保存的数据特点：\n// - 只保存非空字段\n// - 过滤掉相同的数据\n// - 按页面URL分类存储\n// - 自动清理30天前的数据\n```\n\n## 📞 联系\n\n如有问题或建议，请提交 Issue 或联系开发者。 ","readmeFilename":"README.md"}