<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Noise宝藏阁</title>
    <link>https://noisevip.cn</link>
    <description>Noise宝藏阁是一个专注于独特设计和技术分享的平台，分享AI、编程和资源</description>
    <language>zh-CN</language>
    <lastBuildDate>Fri, 03 Apr 2026 19:45:22 GMT</lastBuildDate>
    <atom:link href="https://noisevip.cn/rss.xml" rel="self" type="application/rss+xml" />
    <generator>Noise Blog RSS Generator</generator>

    <item>
      <title>超级智能体外站接入指南（HTML / Hexo / Hugo / 任意站点）</title>
      <link>https://noisevip.cn/article/1775129791938</link>
      <guid isPermaLink="true">https://noisevip.cn/article/1775129791938</guid>
      <pubDate>Thu, 02 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[本指南介绍如何将超级智能体嵌入外部站点，无需特定框架。用户可通过引入JS脚本、指定初始化参数或自动初始化方式实现悬浮对话面板。强调安全性，要求提供AI参数或系统Token。适用于HTML、Hexo、Hugo等任意网站。]]></description>
      <content:encoded><![CDATA[<p>指南面向“外部站点前台悬浮智能体”接入，不要求你和本项目使用同一框架。</p><p>你可以直接在任意网站加载一个 JS 文件，让智能体悬浮在页面右下角或左下角并可对话。</p><h2>1. 一句话接入方式</h2><p>你只需要在外站页面引入本项目提供的脚本：</p><ul class="pl-2 list-disc my-2"><li><p>脚本地址：<code>https://www.noisevip.cn/super-agent-embed.js</code></p></li><li><p>对话接口：<code>https://www.noisevip.cn/api/ai/super-agent</code></p></li></ul><p>本项目已为该对话接口增加跨域支持（CORS），可直接被外站调用。</p><p>安全默认策略（已更新）：</p><ul class="pl-2 list-disc my-2"><li><p>外站接入默认<strong>必须使用外站独立 AI 参数</strong>（<code>apiService + apiKey/apiToken + apiModel</code>，可选 <code>apiBaseUrl</code>）</p></li><li><p>未提供外站 AI 参数时，请求会直接报错，不再自动复用站内 AI 配置</p></li><li><p>如确需复用站内 AI，必须额外提供系统 Token 鉴权（<code>systemToken</code> / <code>data-system-token</code>）</p></li></ul><h2>2. 纯 HTML 站点接入（可直接复制）</h2><p>把下面代码放进你的网站 HTML（通常是 <code>&lt;/body&gt;</code> 前）：</p><pre><code class="language-html">&lt;script src="https://www.noisevip.cn/super-agent-embed.js"&gt;&lt;/script&gt;
&lt;script&gt;
  window.VipSuperAgent.init({
    apiBase: "https://www.noisevip.cn",
    title: "超级智能体",
    subtitle: "问我当前页面内容",
    hideSubtitle: false,
    compactHeader: true,
    primaryColor: "#f59e0b",
    iconUrl: "https://www.noisevip.cn/images/favicon.ico",
    apiService: "openai",
    apiKey: "sk-xxxx",
    apiBaseUrl: "https://api.openai.com/v1/chat/completions",
    apiModel: "gpt-4o-mini",
    systemToken: "",
    mode: "chat",
    apiSystemPrompt: "你是网站智能助手",
    quickQuestions: ["你是谁？", "这篇文章讲了什么？", "帮我总结当前页面重点"],
    runtimeSkills: [
      { "name": "写作规范", "enabled": true, "content": "回答保持条理清晰，优先给可执行步骤。" }
    ],
    runtimeMcpServers: {
      "knowledge": {
        "url": "https://mcp.example.com/query",
        "headers": { "Authorization": "Bearer your-mcp-token" },
        "enabled": true
      }
    },
    panelOpacity: 0.92,
    zIndex: 2147483000,
    anchorSelector: ""
  });
&lt;/script&gt;
</code></pre><p>参数说明：</p><ul class="pl-2 list-disc my-2"><li><p><code>apiBase</code>：必填，固定填你的智能体服务域名 <code>https://www.noisevip.cn</code>（不带 <code>/api/ai/super-agent</code>，不是接入方自己的网站域名）</p></li><li><p><code>title/subtitle</code>：面板标题</p></li><li><p><code>hideSubtitle</code>：可选，是否隐藏副标题（默认 <code>false</code>）</p></li><li><p><code>compactHeader</code>：可选，紧凑头部样式（默认 <code>false</code>）</p></li><li><p><code>primaryColor</code>：可选，主色（支持 <code>#hex</code> 或 <code>rgb/rgba</code>，默认 <code>#f59e0b</code>）</p></li><li><p><code>iconUrl</code>：可选，悬浮图标图片（必须是纯 URL 字符串，不要包含反引号或额外空格；如需强制刷新缓存可追加 <code>?v=2</code>）</p></li><li><p><code>apiService</code>：可选，自定义服务标识</p></li><li><p><code>apiKey</code>：可选，自定义服务 Key（外站接入建议必填）</p></li><li><p><code>apiToken</code>：可选，<code>apiKey</code> 的别名参数（任选其一）</p></li><li><p><code>apiBaseUrl</code>：可选，外站自定义接口地址</p></li><li><p><code>apiModel</code>：可选，模型</p></li><li><p><code>systemToken</code>：可选，系统鉴权 Token；仅当你要“复用站内 AI”时填写</p></li><li><p><code>mode</code>：可选，请求模式（<code>chat | search | execute</code>，默认 <code>chat</code>）</p></li><li><p><code>apiSystemPrompt</code>：可选，系统提示词</p></li><li><p><code>quickQuestions</code>：可选，面板快捷提问列表（字符串数组）</p></li><li><p><code>runtimeSkills</code>：可选，运行时 Skill 列表（优先于后台 Skill 配置）</p></li><li><p><code>runtimeMcpServers</code>：可选，运行时 MCP 服务（优先于后台 MCP 配置）</p></li><li><p><code>dailyLimitPerUser</code>：可选，请求限额参数（默认 <code>0</code>，由服务端统一判断）</p></li><li><p><code>panelOpacity</code>：可选，弹窗透明度（0.55 - 1.00）</p></li><li><p><code>buttonLeft/buttonTop</code>：可选，悬浮按钮定位参数；仅根据 <code>buttonLeft</code> 判断左右（左下/右下），<code>buttonTop</code> 会被忽略，始终贴底显示</p></li><li><p><code>panelLeft/panelTop</code>：可选，对话面板定位参数；仅根据 <code>panelLeft</code> 判断左右（左下/右下），<code>panelTop</code> 会被忽略，始终贴底显示</p></li><li><p><code>zIndex</code>：可选，层级</p></li><li><p><code>anchorSelector</code>：可选，若你的站点已有“上滑/下滑按钮”，可传其 CSS 选择器，智能体会自动对齐在其上方</p></li></ul><h3>2.0 接入方需要替换哪些参数</h3><ul class="pl-2 list-disc my-2"><li><p>必填：<code>apiBase</code>（应填 <code>https://www.noisevip.cn</code>）</p></li><li><p>一般建议替换：<code>title</code>、<code>subtitle</code>、<code>iconUrl</code>、<code>anchorSelector</code>（按接入方站点 UI 调整）</p></li><li><p>若接入方要使用自己的第三方 AI：填写 <code>apiService + apiKey/apiToken + apiModel</code>，可选再填 <code>apiBaseUrl</code></p></li><li><p>若接入方不填 AI 参数：将返回错误，不再默认复用站内配置</p></li><li><p>若接入方希望复用站内 AI：必须提供 <code>systemToken</code>（或 <code>data-system-token</code>）通过鉴权</p></li></ul><h3>2.1 最少代码接入写法</h3><p>如果你只想最小可用接入（使用你自己的第三方 AI，不依赖后台配置），可直接复制：</p><pre><code class="language-html">&lt;script src="https://www.noisevip.cn/super-agent-embed.js"&gt;&lt;/script&gt;
&lt;script&gt;
  window.VipSuperAgent.init({ apiBase: "https://www.noisevip.cn", apiToken: "sk-xxxx", apiService: "openai", apiModel: "gpt-4o-mini", compactHeader: true, primaryColor: "#f59e0b" });
&lt;/script&gt;
</code></pre><p>说明：</p><ul class="pl-2 list-disc my-2"><li><p>上述写法即可直接用第三方 AI 服务，不要求你在 Noise宝藏阁 后台先配置该服务。</p></li><li><p>如需自定义网关，补充 <code>apiBaseUrl</code> 即可。</p></li></ul><h3>2.2 一行 Script 自动初始化（无需再写第二段 JS）</h3><p>如果你希望“只引一个 script 就完成初始化”，可以直接这样写：</p><pre><code class="language-html">&lt;script
  src="https://www.noisevip.cn/super-agent-embed.js"
  data-super-agent
  data-api-base="https://www.noisevip.cn"
  data-title="超级智能体"
  data-subtitle="欢迎提问"
  data-hide-subtitle="false"
  data-compact-header="true"
  data-primary-color="#f59e0b"
  data-icon-url="https://www.noisevip.cn/images/favicon.ico"
  data-api-service="openai"
  data-api-key="sk-xxxx"
  data-api-base-url="https://api.openai.com/v1/chat/completions"
  data-api-model="gpt-4o-mini"
  data-system-token=""
  data-api-system-prompt="你是网站智能助手"
  data-mode="chat"
  data-runtime-skills='[{"name":"写作规范","enabled":true,"content":"回答保持条理清晰，优先给可执行步骤。"}]'
  data-runtime-mcp-servers='{"knowledge":{"url":"https://mcp.example.com/query","headers":{"Authorization":"Bearer your-mcp-token"},"enabled":true}}'
  data-quick-questions='["你是谁？","这篇文章讲了什么？"]'
  data-panel-opacity="0.92"
  data-z-index="2147483000"
  data-anchor-selector=".scroll-top-btn"
&gt;&lt;/script&gt;
</code></pre><h3>2.2.1 自动初始化最小示例（验证头像是否生效）</h3><p>如果你要快速验证外站头像是否正确更新，建议先用这段最小写法：</p><pre><code class="language-html">&lt;script
  src="https://www.noisevip.cn/super-agent-embed.js?v=20260402"
  data-super-agent
  data-api-base="https://www.noisevip.cn"
  data-api-service="openai"
  data-api-token="sk-xxxx"
  data-api-model="gpt-4o-mini"
  data-icon-url="https://www.noisevip.cn/images/favicon.ico?v=20260402"
&gt;&lt;/script&gt;
</code></pre><p>说明：</p><ul class="pl-2 list-disc my-2"><li><p><code>data-icon-url</code> 必须是纯 URL 字符串，不要包含反引号、中文引号或前后空格</p></li><li><p><code>super-agent-embed.js</code> 与 <code>iconUrl</code> 都建议带版本参数（<code>?v=...</code>）避免浏览器/CDN 缓存</p></li><li><p>若页面同时存在多段初始化代码，最终以后执行的那段配置为准</p></li></ul><p>支持的 <code>data-*</code> 参数：</p><ul class="pl-2 list-disc my-2"><li><p><code>data-super-agent</code>：存在即启用自动初始化</p></li><li><p><code>data-api-base</code>：必填，智能体服务域名（如 <code>https://www.noisevip.cn</code>）</p></li><li><p><code>data-title</code> / <code>data-subtitle</code></p></li><li><p><code>data-hide-subtitle</code>：<code>true | false</code></p></li><li><p><code>data-compact-header</code>：<code>true | false</code></p></li><li><p><code>data-primary-color</code>：主色（如 <code>#f59e0b</code>）</p></li><li><p><code>data-icon-url</code></p></li><li><p><code>data-api-service</code> / <code>data-api-key</code> / <code>data-api-base-url</code> / <code>data-api-model</code> / <code>data-api-system-prompt</code></p></li><li><p><code>data-api-token</code>（<code>data-api-key</code> 别名）</p></li><li><p><code>data-system-token</code>：复用站内 AI 时必填系统鉴权 Token</p></li><li><p><code>data-mode</code>：<code>chat | search | execute</code></p></li><li><p><code>data-runtime-skills</code> / <code>data-runtime-mcp-servers</code>（JSON 字符串）</p></li><li><p><code>data-quick-questions</code>（JSON 字符串数组）</p></li><li><p><code>data-daily-limit-per-user</code>：可选，请求参数，默认 <code>0</code></p></li><li><p><code>data-panel-opacity</code>（0.55 - 1.00）</p></li><li><p><code>data-button-left</code> / <code>data-button-top</code> / <code>data-panel-left</code> / <code>data-panel-top</code></p></li><li><p><code>data-z-index</code></p></li><li><p><code>data-anchor-selector</code></p></li></ul><p>说明：</p><ul class="pl-2 list-disc my-2"><li><p>位置已限制为底部双角：仅允许右下角或左下角</p></li><li><p>若未配置定位参数，组件默认在右下角展示。</p></li><li><p>若同时设置 <code>anchorSelector</code> 与 <code>buttonLeft/buttonTop</code>，优先使用显式参数，但仅用于判断左右角位。</p></li><li><p><code>buttonTop</code> / <code>panelTop</code> 会被忽略，组件始终贴底布局，避免出现在左上角。</p></li><li><p>若 <code>buttonLeft</code> 或 <code>panelLeft</code> 传入 <code>0</code> 等极小值，脚本会按“未配置”处理并回退默认右下角。</p></li><li><p>若传入 <code>runtimeSkills</code> / <code>runtimeMcpServers</code>，将优先覆盖后台同名配置，仅对当前外站请求生效。</p></li><li><p>外站传入 <code>panelOpacity</code> 会覆盖后台透明度设置，仅对当前嵌入实例生效。</p></li><li><p>外部嵌入面板右上角提供“设置”按钮，可在展开状态中配置自定义 AI 服务参数并保存到浏览器本地。</p></li><li><p>外部嵌入设置面板支持填写系统 Token；仅在“需要复用站内 AI”时使用。</p></li><li><p>外站设置缓存按“接入站点域名 + apiBase”隔离，避免不同网站之间互相带出服务商与模型信息。</p></li><li><p>外站未填写 AI 参数，或 <code>service/key/model</code> 参数不完整且未提供系统 Token 时，会在前端与接口侧同时提示错误。</p></li></ul><h3>2.3 MCP 与 Skill 联动说明</h3><ul class="pl-2 list-disc my-2"><li><p>前台不需要新增操作按钮，智能体会自动在每次问答中尝试联动已启用的 Skill 与 MCP。</p></li><li><p>返回消息会附带 MCP 调用状态（成功/失败）与联动数量标记，便于观察运行情况。</p></li><li><p>外部嵌入样式已对齐本站智能体，默认无横向滚动条，仅保留上下滚动。</p></li><li><p>会话记录与弹窗展开状态会保存在接入站点浏览器本地，路由跳转后可自动恢复。</p></li><li><p>外站脚本会为每个浏览器生成独立 <code>clientId</code>，用于每日调用次数限额统计。</p></li></ul><h2>3. Hexo 接入</h2><p>推荐放在主题脚本注入位置，或 <code>layout/_partial/footer.ejs</code>。</p><pre><code class="language-ejs">&lt;script src="https://www.noisevip.cn/super-agent-embed.js"&gt;&lt;/script&gt;
&lt;script&gt;
  window.VipSuperAgent.init({
    apiBase: "https://www.noisevip.cn",
    title: "超级智能体",
    subtitle: "欢迎提问",
    apiService: "openai",
    apiToken: "sk-xxxx",
    apiModel: "gpt-4o-mini",
    dailyLimitPerUser: 0,
    anchorSelector: ".scroll-top-btn"
  });
&lt;/script&gt;
</code></pre><p>如果你的上滑按钮 class 不是 <code>.scroll-top-btn</code>，改为你实际的 class/id。</p><h2>4. Hugo 接入</h2><p>推荐放在 <code>layouts/partials/footer.html</code> 或主题统一脚本区：</p><pre><code class="language-html">&lt;script src="https://www.noisevip.cn/super-agent-embed.js"&gt;&lt;/script&gt;
&lt;script&gt;
  window.VipSuperAgent.init({
    apiBase: "https://www.noisevip.cn",
    title: "超级智能体",
    subtitle: "可结合当前文章问答",
    apiService: "openai",
    apiToken: "sk-xxxx",
    apiModel: "gpt-4o-mini",
    dailyLimitPerUser: 0,
    anchorSelector: "#back-to-top"
  });
&lt;/script&gt;
</code></pre><h2>5. 任意框架（Vue/React/Next/Nuxt/Svelte）接入建议</h2><ul class="pl-2 list-disc my-2"><li><p>在全局布局注入脚本（只加载一次）</p></li><li><p>在页面 mounted 后执行 <code>window.VipSuperAgent.init(...)</code></p></li><li><p>路由切换无需手动传 slug，脚本会读取当前 <code>location.pathname</code> 和 <code>document.title</code></p></li></ul><h2>5.1 OpenAI 兼容接口与微信渲染能力</h2><ul class="pl-2 list-disc my-2"><li><p>OpenAI 兼容接口会返回清洗后的正文，不再把 <code>&lt;think&gt;...&lt;/think&gt;</code> 标签直接暴露给客户端</p></li><li><p>若模型包含思考链路，<code>reasoning_content</code> 会独立返回；开启 <code>include_thinking</code> 时会在正文中同时展示“思考过程 + 最终回答”</p></li><li><p>OpenAI 兼容接口会额外提供媒体信息（如 Markdown 图片）用于客户端渲染</p></li><li><p>微信通道会将 Markdown 转为可读文本，避免未渲染标记直接显示</p></li><li><p>微信超时异步回复会推送文本结果，并对图片链接追加图文消息展示</p></li></ul><h2>6. 文章页上下文感知说明</h2><p>脚本会自动把以下上下文传给智能体：</p><ul class="pl-2 list-disc my-2"><li><p><code>pathname</code></p></li><li><p><code>title</code></p></li><li><p><code>articleSlug</code>（当路径形如 <code>/article/{slug}</code>）</p></li></ul><p>所以在“文章详情页 -&gt; 点击智能体提问”时，智能体会优先感知当前文章上下文。</p><h2>7. 自定义图标（后台统一配置）</h2><p>本项目后台已支持配置：</p><ul class="pl-2 list-disc my-2"><li><p><code>ai.superAgent.iconUrl</code></p></li><li><p><code>ai.superAgent.defaultMode</code></p></li><li><p><code>ai.superAgent.searchTabEnabled</code></p></li><li><p><code>ai.superAgent.showUnreadBadge</code></p></li><li><p><code>ai.superAgent.fusionEnabled</code></p></li><li><p><code>ai.superAgent.fusionSearchEnabled</code></p></li><li><p><code>ai.superAgent.allowActionCommands</code></p></li><li><p><code>ai.superAgent.requireAuth</code></p></li></ul><h2>8. 外站场景下“保存指令/流程/模板”说明</h2><p>外站嵌入默认面向访客问答。若你希望外站也能触发“保存指令/保存流程/保存模板”等自写入能力，需满足：</p><ol class="pl-2 list-decimal my-2"><li><p>请求身份是后台登录用户（通常 <code>admin/editor/author</code>）</p></li><li><p>后台开启 <code>ai.superAgent.selfWriteEnabled=true</code></p></li><li><p>建议使用 <code>execute</code> 模式（或开启 <code>ai.superAgent.chatActsAsExecute=true</code>）</p></li><li><p>动作未被 <code>ai.agentControl.rolePolicies</code> 拦截</p></li></ol><p>否则外站通常只能进行普通问答与检索，不会执行高权限写入。</p><h2>9. Docker 发布说明（外站接入相关）</h2><ul class="pl-2 list-disc my-2"><li><p>智能体专用内置知识（BUILTIN KB）随镜像构建发布，容器启动即可生效。</p></li><li><p>运行期新增的自定义知识（例如口语触发词写入）会保存到 settings 并与内置知识合并检索。</p></li><li><p>因此外站接入不依赖“本地文件导入 KB”流程。</p></li><li><p><code>ai.superAgent.allowedRoles</code></p></li></ul><p>你可以在 Noise宝藏阁 后台统一管理图标 URL，也可以在外站 <code>init</code> 里用 <code>iconUrl</code> 覆盖。</p><p>同时可在后台设置首页悬浮智能体的默认模式、是否显示搜索标签页、是否显示未读角标。<br>前台组件已支持失败重试与移动端下拉收起交互。<br>可按需开启 Fusion 上下文增强与 Fusion 联合检索增强，让智能体回答引用流程状态、技能推荐与多源检索结果。<br>智能体技能来源已统一切换为“技能仓库”，请在后台技能仓库页面完成 GitHub 导入、启用与导出管理。<br>技能仓库支持一键同步全部已启用 GitHub 仓库，智能体会自动读取同步后的技能内容。<br>建议默认关闭 <code>ai.superAgent.allowActionCommands</code>，避免未登录访客通过前台悬浮智能体触发动作类指令。<br>当该开关关闭时，前台仅提供问答能力；删除/发布/回滚等动作请走后台控制台或已授权网关。<br>建议开启 <code>ai.superAgent.requireAuth</code> 并配置 <code>ai.superAgent.allowedRoles</code>，仅允许已登录且角色命中的用户使用前台智能体。</p><h2>8. 常见问题</h2><h3>8.1 外站加载了脚本，但不显示</h3><ul class="pl-2 list-disc my-2"><li><p>检查 <code>super-agent-embed.js</code> 是否能访问</p></li><li><p>检查控制台是否有 CSP 拦截（站点禁止第三方脚本）</p></li><li><p>检查 z-index 是否被你站点遮盖（可调大 <code>zIndex</code>）</p></li><li><p>若你替换了 <code>iconUrl</code> 且首次出现位置异常，升级到最新脚本并给脚本/头像 URL 增加 <code>?v=时间戳</code>，避免缓存旧样式</p></li></ul><h3>8.2 能显示但无法对话</h3><ul class="pl-2 list-disc my-2"><li><p>检查 <code>apiBase</code> 是否写对</p></li><li><p>检查接口返回是否 200</p></li><li><p>检查 HTTPS 混合内容问题（https 页面不能请求 http 接口）</p></li><li><p><code>apiModel</code> 必须是字符串模型 ID（如 <code>gpt-4o-mini</code> / <code>deepseek-chat</code>），不要传对象</p></li><li><p>外站若未配置 <code>apiKey/apiToken</code> 且未配置 <code>systemToken</code>，会被安全策略拦截</p></li><li><p>需要复用站内 AI 时，确认请求已携带 <code>systemToken</code>（会走系统鉴权）</p></li></ul><h3>8.4 返回 <code>Failed to parse URL from /api/admin/apikeys</code></h3><ul class="pl-2 list-disc my-2"><li><p>这是旧版本后端在服务端侧错误使用相对路径导致的问题，升级到最新版本即可修复。</p></li><li><p>该问题与外站接入参数无关，<code>apiBase/apiKey/apiToken/apiModel</code> 保持现有写法即可。</p></li></ul><h3>8.3 和上滑按钮没对齐</h3><ul class="pl-2 list-disc my-2"><li><p>优先传 <code>anchorSelector</code> 指向你站点实际按钮</p></li><li><p>若不传，脚本按默认右下策略定位</p></li></ul><h2>9. 校验清单</h2><ul class="pl-2 list-disc my-2"><li><p>页面右下角出现悬浮智能体按钮</p></li><li><p>点击可展开对话面板</p></li><li><p>发送问题能收到 <code>data.answer</code></p></li><li><p>文章详情页提问时上下文生效</p></li><li><p>与站点上滑/下滑按钮位置协调</p></li></ul><h2>10. 品牌化模板（可直接复制）</h2><h3>10.1 暗色企业风</h3><pre><code class="language-html">&lt;script src="https://www.noisevip.cn/super-agent-embed.js"&gt;&lt;/script&gt;
&lt;script&gt;
  window.VipSuperAgent.init({
    apiBase: "https://www.noisevip.cn",
    apiService: "openai",
    apiToken: "sk-xxxx",
    apiModel: "gpt-4o-mini",
    title: "企业智能助手",
    subtitle: "欢迎咨询产品与文档",
    compactHeader: true,
    hideSubtitle: false,
    primaryColor: "#2563eb",
    anchorSelector: ".scroll-top-btn"
  });
&lt;/script&gt;
</code></pre><h3>10.2 清亮简洁风</h3><pre><code class="language-html">&lt;script src="https://www.noisevip.cn/super-agent-embed.js"&gt;&lt;/script&gt;
&lt;script&gt;
  window.VipSuperAgent.init({
    apiBase: "https://www.noisevip.cn",
    apiService: "openai",
    apiToken: "sk-xxxx",
    apiModel: "gpt-4o-mini",
    title: "在线助手",
    subtitle: "快速问答",
    compactHeader: true,
    hideSubtitle: true,
    primaryColor: "#f59e0b",
    anchorSelector: "#back-to-top"
  });
&lt;/script&gt;
</code></pre><p></p>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>技术文档</category>
    </item>
    <item>
      <title>宝藏阁智能体对外接入与OpenClaw集成指南</title>
      <link>https://noisevip.cn/article/1775055903629</link>
      <guid isPermaLink="true">https://noisevip.cn/article/1775055903629</guid>
      <pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[本指南详细说明如何将Noise宝藏阁智能体对外接入，支持OpenAI兼容API、前台嵌入和OpenClaw集成。提供多种接入方式，包括外接模式和iLink内置直连，涵盖对话、知识检索、内容生成等能力，并给出安全和运营建议。]]></description>
      <content:encoded><![CDATA[<p>本指南用于说明本项目如何以 <strong>Noise宝藏阁</strong> 名称对外接入，以及当前项目中 <strong>OpenClaw 外接模式</strong> 与 <strong>iLink 内置直连微信模式</strong> 的区别、能力范围和使用方式。</p><h2>1. 对外能力概览</h2><ul class="pl-2 list-disc my-2"><li><p>对话接口：<code>/api/v1/chat/completions</code>（OpenAI 兼容接口，推荐）</p></li><li><p>嵌入脚本：<code>/super-agent-embed.js</code></p></li><li><p>动作控制接口：<code>/api/admin/agent/control</code></p></li><li><p>可选扩展能力：流程自动化、RSS/Web 检索、改写草稿、智能封面生成</p></li></ul><h2>2. 前台嵌入接入（外站）</h2><p>在外站页面引入：</p><pre><code class="language-html">&lt;script src="https://www.noisevip.cn/super-agent-embed.js"&gt;&lt;/script&gt;
&lt;script&gt;
  window.VipSuperAgent.init({
    apiBase: "https://www.noisevip.cn",
    title: "Noise宝藏阁",
    subtitle: "跟你的龙虾聊",
    compactHeader: true,
    primaryColor: "#f97316",
    anchorSelector: ".scroll-top-btn"
  });
&lt;/script&gt;
</code></pre><p>如需第三方 AI 覆盖，可在 init 中传入 <code>apiService/apiToken/apiBaseUrl/apiModel</code>。</p><h2>3. OpenClaw 对接方式</h2><p>当前项目支持两种和微信智能体相关的接入方式：</p><ul class="pl-2 list-disc my-2"><li><p><strong>OpenClaw 外接模式</strong>：在本地或服务器安装 OpenClaw / Tencent OpenClaw CLI，然后把本项目作为 OpenAI 兼容后端接入。</p></li><li><p><strong>iLink 内置直连模式</strong>：直接在本项目后台扫码接入微信官方插件，无需额外安装外部 CLI。</p></li></ul><p>需要特别说明：</p><ul class="pl-2 list-disc my-2"><li><p>当前项目<strong>没有内置</strong> <code>https://github.com/openclaw/openclaw</code> 仓库本体。</p></li><li><p>当前项目提供的是 <strong>OpenClaw 兼容能力</strong>，也就是可作为 OpenClaw 的上游 AI 服务被调用。</p></li><li><p>同时，项目还实现了 <strong>iLink 直连微信</strong> 的内置能力，用于替代单独部署扫码桥接程序。</p></li></ul><h3>3.1 OpenAI 兼容接口接入（推荐）</h3><p>Noise宝藏阁提供了标准的 OpenAI 兼容接口，可供 OpenClaw 或其他通用 AI 客户端调用。</p><ul class="pl-2 list-disc my-2"><li><p><strong>接口地址 (Base URL)</strong>: <code>https://你的域名/api/v1</code></p></li><li><p><strong>接口完整地址</strong>: <code>https://你的域名/api/v1/chat/completions</code></p></li><li><p><strong>模型名称 (Model)</strong>: <code>super-agent</code></p></li><li><p><strong>API 密钥 (API Key)</strong>: 使用后台"智能体控制"页配置的 <strong>Webhook Secret</strong></p></li></ul><p>接入步骤：</p><ol class="pl-2 list-decimal my-2"><li><p>在运行 OpenClaw 的设备执行：<code>npx -y @tencent-weixin/openclaw-weixin-cli@latest install</code></p></li><li><p>按照提示选择 OpenAI 模式，并填入上述参数。</p></li><li><p>接入成功后，即可在微信中直接与 Noise宝藏阁智能体对话。</p></li></ol><p>适用场景：</p><ul class="pl-2 list-disc my-2"><li><p>你已经在使用 OpenClaw 或 Tencent OpenClaw CLI</p></li><li><p>你希望继续使用 OpenClaw 自己的多平台路由、守护进程与生态能力</p></li><li><p>你只需要本项目提供大模型对话、知识检索和动作执行能力</p></li></ul><h3>3.2 HTTP 工具型接入</h3><p>将 OpenClaw 的工具调用指向：</p><ul class="pl-2 list-disc my-2"><li><p>搜索改写草稿封面一条龙：<code>POST /api/admin/agent/control</code></p></li><li><p>示例 action：<code>article.search_rewrite_cover_draft</code></p></li></ul><p>请求体示例：</p><pre><code class="language-json">{
  "action": "article.search_rewrite_cover_draft",
  "payload": {
    "keyword": "即梦 prompt 优化",
    "webUrls": ["https://example.com/news"],
    "rssUrls": ["https://example.com/feed.xml"]
  }
}
</code></pre><h3>3.3 嵌入对话型接入</h3><p>在 OpenClaw 的自定义前端容器中嵌入 <code>super-agent-embed.js</code>，并将 <code>apiBase</code> 指向本服务域名。</p><h3>3.4 iLink 内置直连微信模式</h3><p>项目后台已提供“微信官方插件扫码接入 (iLink)”面板。该模式下：</p><ul class="pl-2 list-disc my-2"><li><p>无需额外安装 OpenClaw 仓库本体</p></li><li><p>无需单独运行外部扫码桥接 CLI</p></li><li><p>由本项目自己完成二维码获取、扫码状态轮询、凭据保存和消息轮询</p></li></ul><p>接入流程：</p><ol class="pl-2 list-decimal my-2"><li><p>打开后台“智能体控制”页面</p></li><li><p>在“微信官方插件扫码接入 (iLink)”面板点击获取二维码</p></li><li><p>用微信扫码并在微信侧确认授权</p></li><li><p>系统保存 <code>bot_token</code>、<code>bot_id</code>、<code>baseUrl</code>、<code>userId</code></p></li><li><p>后台自动启动消息轮询</p></li><li><p>此后微信消息会直接进入本站智能体处理链路</p></li></ol><p>该模式与 OpenClaw 的关系：</p><ul class="pl-2 list-disc my-2"><li><p><strong>不是</strong>把 OpenClaw 主项目内置到本站</p></li><li><p><strong>而是</strong>使用微信官方 iLink 通道，直接把微信消息接入本站智能体</p></li><li><p>换句话说，OpenClaw 外接模式和 iLink 内置直连模式是两条不同的接入路径</p></li></ul><h2>4. 扫码连接后可以做什么</h2><p>无论是 OpenClaw 外接模式，还是 iLink 内置直连模式，只要最终成功把微信消息送入本项目智能体，当前项目可以提供的能力主要包括：</p><ul class="pl-2 list-disc my-2"><li><p>微信内直接提问，得到 Noise宝藏阁智能体回复</p></li><li><p>调用站内知识与内容能力进行问答</p></li><li><p>触发 RSS / Web / 联合检索相关能力</p></li><li><p>结合热点、信息源与站内内容进行整理、总结、改写</p></li><li><p>触发部分自动化流程与内容生产链路</p></li></ul><p>在 <strong>iLink 内置直连模式</strong> 下，当前代码已实现的核心能力是：</p><ol class="pl-2 list-decimal my-2"><li><p>接收微信文本消息</p></li><li><p>将文本消息转交给本站 <code>Super Agent</code> 核心处理</p></li><li><p>获取智能体回答</p></li><li><p>将回答再通过 iLink 发回微信</p></li></ol><p>也就是说，扫码成功后，微信会成为本项目智能体的一个真实聊天入口。</p><p>当前边界说明：</p><ul class="pl-2 list-disc my-2"><li><p>当前实现重点是 <strong>文本消息收发</strong></p></li><li><p>已具备接入本站智能体能力，但还不是对 <code>openclaw/openclaw</code> 全量功能的完整复刻</p></li><li><p>如果你需要 OpenClaw 的完整多平台控制平面、守护进程、更多渠道生态，则仍建议单独部署 OpenClaw</p></li></ul><h2>5. 动作能力清单（可授权）</h2><p>当前已支持关键动作：</p><ul class="pl-2 list-disc my-2"><li><p><code>article.cover.generate</code></p></li><li><p><code>article.search_rewrite_cover_draft</code></p></li><li><p><code>article.import_rewrite_publish</code></p></li><li><p><code>automation.scheduler.run</code></p></li></ul><p>权限建议：</p><ul class="pl-2 list-disc my-2"><li><p><code>admin</code>：全部动作</p></li><li><p><code>editor</code>：允许内容生成与流程触发</p></li><li><p><code>author</code>：仅允许草稿链路，不允许直接发布</p></li></ul><h2>6. 一条龙流程示例</h2><p>目标链路：</p><ol class="pl-2 list-decimal my-2"><li><p>搜索热点与关键词信息（站内/Web/RSS）</p></li><li><p>评分筛选高质量素材</p></li><li><p>生成“即梦 prompt 优化 + 总结建议 + 改写稿”</p></li><li><p>写入草稿箱</p></li><li><p>按标题自动生成封面</p></li><li><p>返回提醒信息</p></li></ol><p>该链路已可通过 <code>article.search_rewrite_cover_draft</code> 执行。</p><h2>7. 运营可观测建议</h2><p>建议在 <code>/admin/rss-intel</code> 管理：</p><ul class="pl-2 list-disc my-2"><li><p>RSS 源维护与连通性测试</p></li><li><p>执行日志看板</p></li><li><p>质量门控阈值</p></li><li><p>重试策略参数</p></li></ul><p>建议启用：</p><ul class="pl-2 list-disc my-2"><li><p><code>ai.agentControl.pipeline.stageGateEnabled</code></p></li><li><p><code>ai.agentControl.pipeline.autoRetryEnabled</code></p></li></ul><h2>8. 安全建议</h2><ul class="pl-2 list-disc my-2"><li><p>对外接口建议开启鉴权与角色限制</p></li><li><p>对动作类能力限制匿名访问</p></li><li><p>对第三方 AI Token 使用服务端存储，避免前端明文暴露</p></li></ul><p></p>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>技术文档</category>
    </item>
    <item>
      <title>宝藏阁计划任务模块使用说明</title>
      <link>https://noisevip.cn/article/1775054772914</link>
      <guid isPermaLink="true">https://noisevip.cn/article/1775054772914</guid>
      <pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[计划任务用于定时触发站内的自动化执行。项目中所有“定时能力”统一复用同一套调度器,一分钟上手（3步创建 + 1步验收）
在 /admin/automation 建一个 workflow目标设为 publish,平台先选 site + wechat + zhihu]]></description>
      <content:encoded><![CDATA[<p>计划任务用于定时触发站内的自动化执行。项目中所有“定时能力”统一复用同一套调度器：<code>/api/admin/automation/scheduler</code>，避免多套调度冲突。</p><h2>一分钟上手（3步创建 + 1步验收）</h2><ol class="pl-2 list-decimal my-2"><li><p>在 /admin/automation 建一个 workflow</p><ul class="pl-2 list-disc my-2"><li><p>目标设为 <code>publish</code></p></li><li><p>平台先选 <code>site + wechat + zhihu</code>（先跑通主链路）</p></li></ul></li><li><p>在 /admin/schedules 的意图沟通面板输入你的任务目标</p><ul class="pl-2 list-disc my-2"><li><p>让智能体评估并生成计划</p></li><li><p>确认“流程预览”后点击按建议新建计划</p></li></ul></li><li><p>设定 Cron/间隔并启用计划</p><ul class="pl-2 list-disc my-2"><li><p>保存后不会立即执行，会等触发窗口</p></li></ul></li><li><p>去 /admin/automation 看执行报告验收</p><ul class="pl-2 list-disc my-2"><li><p>确认阶段连续成功：采集 -&gt;（可选评估）-&gt; 改写 -&gt; 发布</p></li><li><p>确认站内是“已发布”且平台返回成功/可诊断失败信息</p></li></ul></li></ol><h2>两类计划任务</h2><h3>A. 工作流模板定时（Workflow Templates）</h3><p>入口：后台「流程设置」/admin/automation</p><p>工作流模板支持：</p><ul class="pl-2 list-disc my-2"><li><p><code>scheduleEnabled</code>：是否启用</p></li><li><p><code>scheduleMode</code>：<code>cron</code> / <code>interval</code></p></li><li><p><code>cronExpr</code> / <code>intervalMinutes</code></p></li><li><p>执行动作：<code>publish.plan</code> 或 <code>agent.reflect.tick</code></p></li><li><p><code>flowDsl</code>：用于推导改写/发布/公众号发布等开关</p></li></ul><h3>B. 自定义计划任务（Custom Schedules）</h3><p>入口：后台「计划任务」/admin/schedules</p><p>自定义计划任务支持：</p><ul class="pl-2 list-disc my-2"><li><p>触发时间：Cron / 间隔</p></li><li><p>计划内容：Markdown 文本（作为本次执行的 rawContent 输入）</p></li><li><p>引用工作流：选择一个既有 workflow template（用于复用平台/提示词/DSL 等能力）</p></li><li><p>站内搜索关键词：自动抓取站内热度最高的相关文章（views 最大）作为素材拼接进计划内容</p></li><li><p>完成提醒：左右滑动开关；完成后走推送渠道 + SMTP 邮件（SMTP 已配置时）</p></li></ul><p>存储位置（Settings key）：</p><ul class="pl-2 list-disc my-2"><li><p><code>automation.schedules.items</code></p></li></ul><h2>调度执行入口（Scheduler API）</h2><p>路径：/api/admin/automation/scheduler</p><h3>POST /api/admin/automation/scheduler</h3><p>用途：</p><ul class="pl-2 list-disc my-2"><li><p>由内部调度器（docker sidecar / cron）每分钟触发</p></li><li><p>后台也可手动触发（用于排障/预演）</p></li></ul><p>Headers（二选一即可）：</p><ul class="pl-2 list-disc my-2"><li><p><code>x-scheduler-token: &lt;SCHEDULER_TOKEN&gt;</code>（内部调度器触发）</p></li><li><p>或管理员登录态/Token（后台手动触发）</p></li></ul><p>Query：</p><ul class="pl-2 list-disc my-2"><li><p><code>dryRun=true</code>：只预演输出 due 列表，不实际执行</p></li><li><p><code>templateId=&lt;id&gt;</code>：只强制执行某个 workflow template（自定义计划不使用该参数）</p></li></ul><p>返回：</p><ul class="pl-2 list-disc my-2"><li><p><code>data.runDetails</code>：本次执行明细（success/failed/dry-run 等）</p></li><li><p><code>data.skippedByReason</code>：未触发原因计数</p></li><li><p><code>data.historyEntry</code>：本次运行汇总</p></li></ul><h2>执行链路（协同工作方式）</h2><p>计划任务最终会落入 Fusion 的“发布计划”能力：</p><ol class="pl-2 list-decimal my-2"><li><p>Scheduler 判定 due</p></li><li><p>创建发布计划 <code>createPublishPlan(...)</code>（可携带 <code>rawContent</code>/<code>prompt</code>/<code>flowDsl</code>）</p></li><li><p>若开启直连执行，则 scheduler 会调用 Fusion 执行 <code>publish.plan.execute</code></p></li></ol><p>关键实现：</p><ul class="pl-2 list-disc my-2"><li><p>Scheduler：/scheduler/route.ts</p></li><li><p>创建发布计划：/fusion.ts</p></li><li><p>Fusion API：/fusion/route.ts</p></li></ul><h2>多平台发布与采集渠道说明</h2><ul class="pl-2 list-disc my-2"><li><p>工作流模板支持 <code>publishPlatforms</code> 多选字段，可同时投递到站内、公众号、抖音、B站等平台（由平台连接配置决定是否可用）。</p></li><li><p>调度执行时：</p><ul class="pl-2 list-disc my-2"><li><p>若最终目标是 <code>draft</code>，只会落站内草稿；</p></li><li><p>若最终目标是 <code>publish</code>，会按 <code>publishPlatforms</code> 批量创建发布任务。</p></li></ul></li><li><p>联合检索内置渠道已包含 Google provider，可作为采集来源之一参与后续流程。</p></li></ul><p>关键实现：</p><ul class="pl-2 list-disc my-2"><li><p>模板与平台配置：/automation/page.tsx</p></li><li><p>调度平台解析：/scheduler/route.ts</p></li><li><p>内置搜索 provider：/fusion.ts</p></li></ul><h2>完成提醒（推送渠道 + SMTP）</h2><p>当某个自定义计划任务开启「启用提醒」后：</p><ul class="pl-2 list-disc my-2"><li><p>推送渠道：复用现有“通知推送”系统（webhook/telegram/钉钉/飞书/企微/twitter 等），由 <code>sendNotification(...)</code> 分发。</p><ul class="pl-2 list-disc my-2"><li><p>配置页：/admin/settings/notification</p></li><li><p>实现：/notification/index.ts</p></li></ul></li><li><p>SMTP 邮件：若已配置 SMTP，会额外发送一封邮件到 <code>smtp.from</code>（视作管理员邮箱）。</p><ul class="pl-2 list-disc my-2"><li><p>配置页：/admin/settings</p></li><li><p>实现：/email.ts</p></li></ul></li></ul><p>提醒内容包含：</p><ul class="pl-2 list-disc my-2"><li><p>计划任务标题</p></li><li><p>成功/失败状态</p></li><li><p>引用工作流 ID</p></li><li><p>执行信息（planId 或 error message）</p></li><li><p>后台入口（若已配置站点 URL）</p></li></ul><h2>全链路回归验收脚本（手工）</h2><p>建议按下面顺序验收“意图评估 -&gt; 采集 -&gt; 可选评估 -&gt; 改写 -&gt; 定时触发 -&gt; 多平台发布”。</p><ol class="pl-2 list-decimal my-2"><li><p>在 /admin/automation 新建流程模板</p><ul class="pl-2 list-disc my-2"><li><p>选择 <code>publishPlatforms</code>（至少站内 + 公众号/抖音/B站之一）</p></li><li><p>配置采集源（可选 union）并启用/关闭评估门禁各测一次</p></li></ul></li><li><p>在 /admin/schedules 创建计划</p><ul class="pl-2 list-disc my-2"><li><p>先在意图沟通区确认“执行流程预览”</p></li><li><p>再设置 Cron 或间隔，并绑定上一步 workflow</p></li></ul></li><li><p>保存后立即检查</p><ul class="pl-2 list-disc my-2"><li><p>预期：不会立刻执行（创建即执行应已禁用）</p></li></ul></li><li><p>触发窗口到达后检查执行结果</p><ul class="pl-2 list-disc my-2"><li><p>在 automation 调度报告查看阶段轨迹、触发来源、失败分型、修复提示</p></li></ul></li><li><p>发布结果核对</p><ul class="pl-2 list-disc my-2"><li><p>发布模式：应在目标平台/通道返回发布成功信息</p></li><li><p>草稿模式：应仅落站内草稿，不应误发布</p></li></ul></li><li><p>异常路径回归</p><ul class="pl-2 list-disc my-2"><li><p>采集为空、评估不通过、平台未接入、凭证错误各验证一次，确认提示可诊断且可恢复</p></li></ul></li></ol><h2>全平台一次性配置清单（站内 -&gt; 所有支持平台）</h2><p>目标链路：<code>采集 -&gt;（可选评估）-&gt; 改写 -&gt; 站内发布 -&gt; 多平台分发</code></p><h3>阶段 1：基础必配</h3><ol class="pl-2 list-decimal my-2"><li><p>进入 /admin/automation 新建或编辑 workflow</p></li><li><p>发布目标设为 <code>publish</code></p></li><li><p>多平台分发先勾选：<code>site + wechat + zhihu</code></p></li><li><p>采集源开启联合检索（含 Google）和内置信息源</p></li><li><p>首轮建议先关闭评估门禁以验证链路稳定，再开启门禁做质量控制</p></li></ol><h3>阶段 2：平台连接器逐项测通</h3><p>在 automation 的平台连接区逐个平台“保存并测试”：</p><ul class="pl-2 list-disc my-2"><li><p>site：站内发布可创建文章</p></li><li><p>wechat：公众号 token/发布测试通过</p></li><li><p>zhihu：连接测试通过并可返回发布结果</p></li><li><p>douyin / bilibili / xiaohongshu / toutiao / x / telegram：按接入方式配置凭证或 webhook，逐一测试</p></li></ul><p>说明：</p><ul class="pl-2 list-disc my-2"><li><p>站内与公众号链路通常最稳定；</p></li><li><p>其他平台的自动发布能力取决于连接器、凭证和外部执行通道是否可用。</p></li></ul><h3>阶段 3：计划任务落地</h3><ol class="pl-2 list-decimal my-2"><li><p>进入 /admin/schedules 的“计划意图沟通面板”</p></li><li><p>让智能体评估并生成可执行计划</p></li><li><p>确认流程预览（阶段、评估策略、发布目标、触发方式）</p></li><li><p>按建议新建计划并启用</p></li><li><p>注意：保存后不会立即执行，等待调度窗口触发</p></li></ol><h3>阶段 4：验收标准</h3><ul class="pl-2 list-disc my-2"><li><p>阶段连续成功：采集、评估（可选）、改写、发布</p></li><li><p>站内为“已发布”而非草稿</p></li><li><p>多平台有成功回执或可诊断失败信息</p></li><li><p>调度报告可看到触发来源、阶段轨迹与最终结果</p></li></ul><h3>阶段 5：灰度上线建议</h3><ol class="pl-2 list-decimal my-2"><li><p>第 1 轮：<code>site + wechat + zhihu</code> 连续运行 2~3 次</p></li><li><p>第 2 轮：追加 <code>x + telegram</code></p></li><li><p>第 3 轮：追加 <code>douyin + bilibili + xiaohongshu + toutiao</code></p></li><li><p>逐步扩容可快速判断是流程问题还是平台接入问题</p></li></ol><h2>计划意图模板（可直接粘贴）</h2><h3>模板 1：日更版（每天固定时间）</h3><pre><code class="language-text">请帮我创建一个可执行的自动化计划任务：
目标：每天 17:00 自动产出并发布 1 篇“AI与自动化工具”主题内容。
流程要求：采集 -&gt; 可选质量评估 -&gt; 改写 -&gt; 发布。
采集要求：
- 使用联合搜索与内置信息源；
- 关键词：AI 自动化、Agent 工作流、开源 AI 工具；
- 优先近 24 小时内容，去重后选热度最高候选。
改写要求：
- 产出中文，结构清晰（摘要、要点、实操建议）；
- 保留关键事实，不编造来源；
- 标题可读性优先。
发布要求：
- 发布目标为 publish（不是草稿）；
- 平台：site、wechat、zhihu、xiaohongshu、toutiao、douyin、bilibili、x、telegram；
- 如果某平台未接通，记录失败原因但不影响其他已接通平台继续发布。
调度要求：
- Cron 执行；
- 不要创建即执行，只在调度窗口触发。
请给出可直接落地的计划参数，并展示执行流程预览。
</code></pre><h3>模板 2：周刊版（每周深度）</h3><pre><code class="language-text">请创建一个每周自动执行的周刊计划任务：
目标：每周五 18:00 发布“本周 AI 工程与产品实践周刊”。
流程：采集 -&gt; 质量评估（启用，阈值 70）-&gt; 改写 -&gt; 发布。
采集范围：
- 联合搜索 + RSS + 内置信息源；
- 关键词：AI工程、Agent、RAG、模型评测、生产化部署；
- 时间范围近 7 天，去重并按相关性与可信度排序。
改写要求：
- 形成周刊结构：本周趋势、重点工具、落地建议、风险提示；
- 语言专业但可读；
- 文章字数适中，适合多平台分发。
发布要求：
- publish 模式；
- 平台：site、wechat、zhihu、x、telegram（其余平台按接通情况可选）。
调度要求：
- Cron 周期执行；
- 保存后等待调度，不立即触发。
请输出：计划名称、workflow 绑定、Cron、平台配置、失败重试建议、流程预览。
</code></pre><h3>模板 3：突发热点版（高频巡检）</h3><pre><code class="language-text">请创建一个高频巡检计划任务，用于突发热点快速发布：
目标：每 120 分钟巡检一次热点，命中后自动生成并发布快讯。
流程：采集 -&gt; （可选评估）-&gt; 改写 -&gt; 发布。
采集要求：
- 联合搜索关键词：AI 热点、模型发布、重要产品更新；
- 优先时效性，近 6 小时；
- 若无高质量候选，终止并记录“无可发布内容”。
改写要求：
- 输出快讯体：结论先行 + 3 个关键点 + 影响判断；
- 减少冗长背景。
发布要求：
- publish；
- 平台优先：site、wechat、x、telegram（其他平台按接通情况追加）。
调度要求：
- interval 120 分钟；
- 严禁创建即执行；
- 同窗口避免重复执行。
请返回可执行参数与流程预览，并标注每一步失败时的处理策略。
</code></pre><h3>模板 4：偏营销风格（增长转化导向）</h3><pre><code class="language-text">请帮我创建一个可执行的自动化发布计划，目标偏营销增长：
目标：每天 19:00 产出 1 篇“AI工具/工作流”高转化内容，用于引导咨询或产品试用。
流程：采集 -&gt; 质量评估（启用，阈值 65）-&gt; 改写 -&gt; 发布。
采集要求：
- 联合搜索 + 信息源；
- 关键词：AI效率、自动化提效、工作流模板、真实案例；
- 优先“有数据、有案例、有结论”的内容。
改写要求（营销向）：
- 开头 3 句内给出痛点与收益；
- 结构：痛点 -&gt; 方案 -&gt; 案例 -&gt; 行动建议；
- 标题强调收益和结果；
- 结尾附带明确 CTA（私信/咨询/试用引导）。
发布要求：
- publish 模式，禁止落草稿；
- 平台：site、wechat、zhihu、xiaohongshu、toutiao、douyin、bilibili、x、telegram；
- 平台失败互不阻塞，记录失败原因并继续其他平台。
调度要求：
- Cron 执行；
- 不创建即执行，只在触发窗口执行。
请输出：可落地计划参数、workflow 绑定、发布平台策略、流程预览、失败重试建议。
</code></pre><h3>模板 5：偏技术教程风格（工程可信导向）</h3><pre><code class="language-text">请创建一个技术教程导向的自动化计划任务：
目标：每周二、四 20:00 发布“可复现的 AI 工程教程”。
流程：采集 -&gt; 质量评估（启用，阈值 75）-&gt; 改写 -&gt; 发布。
采集要求：
- 联合搜索 + RSS；
- 关键词：Agent 架构、RAG、模型推理、部署、评测；
- 仅保留技术细节充分、可复现的信息源。
改写要求（技术向）：
- 固定结构：背景 -&gt; 前置条件 -&gt; 步骤 -&gt; 核心代码/配置说明 -&gt; 常见问题；
- 明确边界条件与风险；
- 不夸大，不编造，不省略关键参数。
发布要求：
- publish；
- 平台：site、wechat、zhihu、x、telegram（稳定后再加其他平台）。
调度要求：
- Cron 周期执行；
- 保存后等待调度触发，不立即执行。
请返回：计划名称、Cron、workflow、评估阈值、平台分发列表、流程预览、回滚/补发建议。
</code></pre><h2>使用建议</h2><ul class="pl-2 list-disc my-2"><li><p>建议把“营销风格”和“技术教程风格”分别做成固定 workflow，后续只调整关键词和发布时间。</p></li><li><p>首次上线建议先跑 <code>site + wechat + zhihu</code>，稳定后逐步扩到全平台。</p></li><li><p>每次扩平台后至少观察 2~3 次执行结果，再进入下一批扩容。</p></li></ul><p></p>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>技术文档</category>
    </item>
    <item>
      <title>MCP / Skill 服务接入说明</title>
      <link>https://noisevip.cn/article/1775054761199</link>
      <guid isPermaLink="true">https://noisevip.cn/article/1775054761199</guid>
      <pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[本文档详细指导将本站MCP和Skill服务接入其他AI平台。包括服务地址（/api/mcp和/api/skills）、鉴权方式（Bearer令牌），以及MCP工具，如搜索文章、获取站点统计、调用超级智能体。提供curl调用示例和Skill拉取方法，方便快速集成。]]></description>
      <content:encoded><![CDATA[<p>本文档用于将本站能力接入到其它 AI 平台（如支持 MCP 的客户端、自动化流程平台）。</p><h2>1. 服务地址</h2><ul class="pl-2 list-disc my-2"><li><p>MCP 服务：<code>/api/mcp</code></p></li><li><p>Skill 服务：<code>/api/skills</code></p></li></ul><p>完整地址示例：</p><ul class="pl-2 list-disc my-2"><li><p><code>https://你的域名/api/mcp</code></p></li><li><p><code>https://你的域名/api/skills</code></p></li></ul><h2>2. 鉴权方式</h2><ul class="pl-2 list-disc my-2"><li><p>在后台「系统设置」中可配置 <code>mcp.service.token</code></p></li><li><p>配置后，推荐在请求头携带：</p></li></ul><pre><code class="language-http">x-mcp-token: &lt;你的token&gt;
</code></pre><p>兼容方式（可选）：</p><pre><code class="language-http">Authorization: Bearer &lt;你的token&gt;
</code></pre><p>说明：<code>mcp.service.token</code> 仅用于 <code>/api/mcp</code> 与 <code>/api/skills</code>，与站点后台管理登录令牌是独立体系，不会共享或覆盖。</p><h2>3. MCP 支持工具</h2><h3><code>search_articles</code></h3><ul class="pl-2 list-disc my-2"><li><p>作用：搜索站内文章</p></li><li><p>参数：</p><ul class="pl-2 list-disc my-2"><li><p><code>query</code>（必填）</p></li><li><p><code>limit</code>（可选，1-50）</p></li></ul></li></ul><h3><code>search_shuoshuo</code></h3><ul class="pl-2 list-disc my-2"><li><p>作用：搜索说说内容</p></li><li><p>参数：</p><ul class="pl-2 list-disc my-2"><li><p><code>query</code>（必填）</p></li><li><p><code>pageSize</code>（可选，1-50）</p></li></ul></li></ul><h3><code>get_site_stats</code></h3><ul class="pl-2 list-disc my-2"><li><p>作用：获取站点浏览量统计</p></li><li><p>参数：无</p></li></ul><h3><code>ask_super_agent</code></h3><ul class="pl-2 list-disc my-2"><li><p>作用：调用站点超级智能体</p></li><li><p>参数：</p><ul class="pl-2 list-disc my-2"><li><p><code>question</code>（必填）</p></li><li><p><code>mode</code>（可选，<code>chat</code> / <code>search</code> / <code>execute</code>）</p><ul class="pl-2 list-disc my-2"><li><p><code>chat</code>：常规问答</p></li><li><p><code>search</code>：偏检索式回答</p></li><li><p><code>execute</code>：允许进入动作执行路径（受权限与安全确认策略限制）</p></li></ul></li></ul></li></ul><h2>4. MCP 调用示例</h2><p>列出工具：</p><pre><code class="language-bash">curl -X POST "https://你的域名/api/mcp" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer &lt;token&gt;" \
  -d '{"method":"tools/list"}'
</code></pre><p>调用工具：</p><pre><code class="language-bash">curl -X POST "https://你的域名/api/mcp" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer &lt;token&gt;" \
  -d '{
    "method":"tools/call",
    "params":{
      "name":"search_articles",
      "arguments":{"query":"Next.js", "limit":5}
    }
  }'
</code></pre><h2>5. Skill 拉取示例</h2><pre><code class="language-bash">curl "https://你的域名/api/skills" \
  -H "Authorization: Bearer &lt;token&gt;"
</code></pre><p>返回内容包含技能列表，外部 AI 可以将其拼接为系统提示词或工具策略。</p>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>技术文档</category>
    </item>
    <item>
      <title>智能体高效沟通与用词指南</title>
      <link>https://noisevip.cn/article/1775054333274</link>
      <guid isPermaLink="true">https://noisevip.cn/article/1775054333274</guid>
      <pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[本指南聚焦于提升智能体沟通效率，减少管理员沟通轮次以获得可执行结果。核心包括四段式提问模板、高效用词清单和场景模板，强调目标、约束、输出与验证。关键词提取帮助触发直接响应，避免低效表达。]]></description>
      <content:encoded><![CDATA[<h1>智能体高效沟通与用词指南</h1><blockquote><p>目标：让管理员用更少轮次拿到“可执行结果”（改代码、调页面、搭流程、排故障）。</p></blockquote><h2>1. 四段式提问模板（推荐）</h2><p>每次提问尽量包含这四段：</p><ol class="pl-2 list-decimal my-2"><li><p><strong>目标</strong>：你要达成什么</p></li><li><p><strong>约束</strong>：不能动什么/权限限制是什么</p></li><li><p><strong>输出</strong>：你希望交付什么（代码、步骤、文档、脚本）</p></li><li><p><strong>验证</strong>：如何判断完成（页面表现、接口返回、日志指标）</p></li></ol><p>示例：</p><pre><code class="language-text">目标：修复扩展侧边栏打不开
约束：默认仍用浮窗，不删除现有功能
输出：直接改代码并更新文档
验证：点击图标可打开，切侧边栏有提示且不报错
</code></pre><h2>2. 高效用词清单</h2><h3>2.1 更容易触发“执行型”响应的词</h3><ul class="pl-2 list-disc my-2"><li><p><code>直接改</code>、<code>按这个修</code>、<code>补到 README</code>、<code>加文档</code>、<code>做成可导入</code>、<code>给验证步骤</code></p></li><li><p><code>先最小改动</code>、<code>不要重构</code>、<code>保持兼容</code>、<code>给回滚点</code></p></li></ul><h3>2.2 更容易触发“排障型”响应的词</h3><ul class="pl-2 list-disc my-2"><li><p><code>先定位根因</code>、<code>给链路</code>、<code>看持久化</code>、<code>查权限边界</code>、<code>查是否回读</code></p></li><li><p><code>有无降级</code>、<code>是否影响主链</code>、<code>先止损再彻修</code></p></li></ul><h3>2.3 更容易触发“自动化型”响应的词</h3><ul class="pl-2 list-disc my-2"><li><p><code>给可运行工作流</code>、<code>给参数预设</code>、<code>给重试退避</code>、<code>给监控报警</code></p></li><li><p><code>先草稿不自动发布</code>、<code>支持人工复核</code></p></li></ul><h2>3. 常见场景提问模板</h2><h3>3.1 报错修复</h3><pre><code class="language-text">修复这个报错：&lt;报错原文&gt;
影响：&lt;哪个页面/接口&gt;
约束：&lt;不能影响哪些模块&gt;
请直接改代码并给验证步骤。
</code></pre><h3>3.2 页面样式与交互优化</h3><pre><code class="language-text">目标：&lt;UI问题&gt;
设备：PC + 手机 + 暗黑模式都要适配
约束：不改业务逻辑
请最小改动并说明文件位置。
</code></pre><h3>3.3 工作流搭建</h3><pre><code class="language-text">把&lt;联合搜索/采集&gt;接入工作流并自动化
要求：先候选池再草稿，不自动发布
给：参数、阈值、重试、监控、报警、验证步骤。
</code></pre><h3>3.4 权限问题</h3><pre><code class="language-text">角色是&lt;admin/editor/author/subscriber&gt;
我要做&lt;动作&gt;
请明确：页面层是否可见、接口层是否可写、替代路径是什么。
</code></pre><h2>4. 让智能体“主动修改并落地”的指令</h2><p>当你希望它不只解释、而是直接动手，建议明确写：</p><ul class="pl-2 list-disc my-2"><li><p><code>直接实施并验证，不要只给方案</code></p></li><li><p><code>改完后告诉我影响范围与回滚方式</code></p></li><li><p><code>如果有多个方案，选最小风险方案先落地</code></p></li><li><p><code>不要引入新依赖，优先复用现有结构</code></p></li></ul><h2>5. 如何减少来回沟通</h2><ul class="pl-2 list-disc my-2"><li><p>一次性给出：当前现象、期望结果、是否允许改文档/脚本/配置</p></li><li><p>明确“优先级”：先可用再完美，先止损再优化</p></li><li><p>明确“完成定义”：例如“lint通过 + 页面行为正确 + 文档更新”</p></li></ul><h2>6. 常见低效表达（建议避免）</h2><ul class="pl-2 list-disc my-2"><li><p>“帮我优化一下” （范围不清）</p></li><li><p>“好像有问题” （缺少现象与路径）</p></li><li><p>“你看着改” （没有约束和验收标准）</p></li></ul><p>更好写法：</p><ul class="pl-2 list-disc my-2"><li><p>“这个按钮在暗黑模式看不清，保留现有布局，仅修样式并兼容手机端”</p></li></ul><h2>7. 对话即入库触发词（后台角色）</h2><p>以下触发词可直接沉淀知识：</p><ul class="pl-2 list-disc my-2"><li><p><code>记住：...</code> / <code>学习：...</code> / <code>提交：...</code></p></li><li><p><code>保存指令：...</code></p></li><li><p><code>保存流程：...</code></p></li><li><p><code>保存模板：...</code></p></li><li><p><code>反馈：...</code> / <code>错误：...</code></p></li></ul><p>建议写法：</p><pre><code class="language-text">保存流程：
标题：联合搜索自动化（科技资讯）
正文：触发-&gt;检索-&gt;去重-&gt;评分-&gt;候选池-&gt;计划-&gt;草稿
约束：不自动发布，失败重试2次，退避15分钟
</code></pre><p></p>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>技术文档</category>
    </item>
    <item>
      <title>凡人修仙传混剪</title>
      <link>https://noisevip.cn/article/4926</link>
      <guid isPermaLink="true">https://noisevip.cn/article/4926</guid>
      <pubDate>Tue, 31 Mar 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[来自抖音，只能说剪的真好]]></description>
      <content:encoded><![CDATA[<p>来自抖音，只能说剪的真好</p><p><a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="https://v.douyin.com/rGxmeSwfbGo/">https://v.douyin.com/rGxmeSwfbGo</a></p>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>时光笔记</category>
    </item>
    <item>
      <title>霓虹灯下的夜晚8-bit</title>
      <link>https://noisevip.cn/article/bit</link>
      <guid isPermaLink="true">https://noisevip.cn/article/bit</guid>
      <pubDate>Tue, 17 Mar 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[讲真，合成波➕8Bit 真的很好听]]></description>
      <content:encoded><![CDATA[<p><u>讲真，合成波➕8Bit 真的很好听</u></p><p><strong><em>TRACKLIST🪐</em></strong></p><p style="text-align: left;">00:00:00 | 1983</p><p style="text-align: left;">00:04:59 | Drive All Night</p><p style="text-align: left;">00:09:14 | Distant Rain</p><p style="text-align: left;">00:12:47 | After Dark</p><p style="text-align: left;">00:16:33 | Deep Blue</p><p style="text-align: left;">00:21:34 | Endless Skies</p><p style="text-align: left;">00:25:58 | Aurora</p><p style="text-align: left;">00:29:11 | Belong To The Night</p><p style="text-align: left;">00:33:02 | Dream Rider</p><p style="text-align: left;">00:37:04 | Bionic Love</p><p style="text-align: left;">00:40:04 | Breakaway</p><p style="text-align: left;">00:43:28 | City Nights</p><p style="text-align: left;">00:47:58 | Dance of the Night Creatures</p><p style="text-align: left;">00:51:58 | California Workout</p><p style="text-align: left;">00:56:23 | Dream On</p><p style="text-align: left;">01:00:16 | Friends Forever</p><p style="text-align: left;">01:03:35 | Fire In Her Eyes</p><p style="text-align: left;">01:07:08 | Escape</p><p style="text-align: left;">01:10:14 | Cruise Control</p><p style="text-align: left;">01:14:26 | Dreaming Girl (Davinci)</p>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>时光笔记</category>
    </item>
    <item>
      <title>Bao-一个会记住你、会学习、会成长的AI助手</title>
      <link>https://noisevip.cn/article/bao-ai</link>
      <guid isPermaLink="true">https://noisevip.cn/article/bao-ai</guid>
      <pubDate>Mon, 16 Mar 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[一个下载即用的开源跨平台桌面 AI 助手， 真正的持久记忆 · 从经验中学习 · 长任务不阻塞 · 9 大平台 · MCP 生态，可从 GitHub Releases 下载桌面端，双击安装，3 分钟配置完成。无需命令行，无需配置文件，开箱即用。 仓库： https://github.com/Suge8/Bao 🎯 三]]></description>
      <content:encoded><![CDATA[<p><img class="max-w-full rounded-md my-2" src="https://cdn.jsdelivr.net/gh/rcy1314/tuchuang@main/uPic/hero-dark.svg" alt="Bao"></p><p>一个下载即用的开源跨平台桌面 AI 助手， 真正的持久记忆 · 从经验中学习 · 长任务不阻塞 · 9 大平台 · MCP 生态，可从 <a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="https://github.com/Suge8/Bao/releases"><strong>GitHub Releases</strong></a> 下载桌面端，双击安装，3 分钟配置完成。无需命令行，无需配置文件，开箱即用。</p><p>仓库：<a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="https://github.com/Suge8/Bao"><strong><u>https://github.com/Suge8/Bao</u></strong></a></p><h3>🎯 三个核心优势</h3><p>1. 真正的持久记忆系统</p><p>基于 <strong>LanceDB</strong> 的记忆系统会跨会话保留你的偏好、项目背景和长期约定。向量检索 + 关键词检索双通路，智能注入相关上下文，不会把整段历史硬塞回 prompt。</p><p><strong>记忆分类管理</strong>：偏好、个人信息、项目知识、通用事实，四类独立存储，过时内容主动清理，重要信息长期保留。</p><p>2. 从经验中持续学习</p><p>Bao 有闭环经验引擎。一次任务里踩过的坑，下次不会再从零开始。</p><ul class="pl-2 list-disc my-2"><li><p>自动提取教训、策略和失败模式</p></li><li><p>相似任务自动召回相关经验</p></li><li><p>质量评分系统：高质量经验（≥5 分，使用 ≥3 次）永久保留</p></li><li><p>工具失败后会反思重试，而不是机械重复到超时</p></li></ul><p><strong>它会随着使用持续变得更适合你。</strong></p><p>3. 强大的长任务引擎</p><p>复杂任务不会卡住当前对话。Bao 支持子代理并行执行，你可以继续聊天，它在后台把耗时工作做完。</p><ul class="pl-2 list-disc my-2"><li><p><strong>轨迹压缩</strong>：每 5 步自动压缩执行历史，保持上下文清晰</p></li><li><p><strong>充分性检查</strong>：自动判断是否已收集足够信息，避免无效循环</p></li><li><p><strong>进度透明</strong>：实时查询阶段、工具数、迭代轮次和最近动作</p></li><li><p><strong>灵活控制</strong>：支持取消、续接和结构化任务跟踪</p></li></ul><p>一个助手，不必被一件慢任务拖住全部交互。</p><p><img class="max-w-full rounded-md my-2" src="https://cdn.jsdelivr.net/gh/rcy1314/tuchuang@main/uPic/features-dark.svg" alt="核心特性"></p><h2>🔄 与 OpenClaw 的对比</h2><p>OpenClaw 是一个优秀的开源 AI 助手项目，定位是 local-first、Gateway 驱动，拥有完整的控制面体系（macOS app、Web UI、CLI、移动节点）。</p><p>Bao 的核心取舍不同：更短的上手路径 + 更强的记忆与学习能力。</p><p>维度OpenClawBao上手体验CLI 向导 + 配置文件 + Gateway <a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="http://启动tencent.com">启动tencent.com</a>下载桌面端，3 分钟配置完成部署依赖Node 22+ / pnpm / Gateway <a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="http://工作流tencent.com">工作流tencent.com</a>桌面端零依赖，开发侧需 Python / uv核心优势完整 Gateway 控制面 + 多端协同持久记忆 + 经验学习 + 长任务引擎长任务处理Gateway 工具执行轨迹压缩、充分性检查、子代理并行记忆系统基础会话历史LanceDB 向量检索 + 分类记忆 + <a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="http://经验引擎csdn.net">经验引擎csdn.net</a>技能生态官方 Skills + ClawHub兼容 ClawHub，支持 <a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="http://SKILL.md">SKILL.md</a> <a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="http://格式github.com">格式github.com</a>适合人群需要完整 Gateway 体系的用户想快速上手 + 保留扩展性的用户</p><h2>🚀 快速开始</h2><h3>方式 1：桌面端（推荐）</h3><p>前往 GitHub Releases 下载安装包：</p><ul class="pl-2 list-disc my-2"><li><p><strong>macOS</strong>：<code>Bao-x.y.z-macos-arm64.dmg</code>（Apple Silicon）或 <code>Bao-x.y.z-macos-x86_64.dmg</code>（Intel）</p></li><li><p><strong>Windows</strong>：<code>Bao-x.y.z-windows-x64-setup.exe</code></p></li></ul><p>安装后打开 Bao Desktop，按界面引导完成配置（约 3 分钟）：</p><ol class="pl-2 list-decimal my-2"><li><p>选择界面语言</p></li><li><p>配置 AI 服务（支持 OpenAI、Anthropic、Gemini、DeepSeek 等）</p></li><li><p>选择默认模型</p></li><li><p>启动网关，开始使用</p></li></ol><h3>方式 2：命令行（终端用户）</h3><pre><code>pip install -U bao-ai
bao</code></pre><h3>方式 3：源码（开发者）</h3><pre><code>git clone https://github.com/Suge8/Bao.git
cd Bao
uv sync
uv run bao</code></pre><p>首次运行会自动生成 <code>~/.bao/config.jsonc</code>。最小配置示例：</p><pre><code>{
  "providers": {
 &nbsp;  "openaiCompatible": {
 &nbsp; &nbsp;  "apiKey": "sk-or-v1-xxx"
 &nbsp;  }
  }
}</code></pre><p><strong>可选</strong>：配置效用模型节省成本（用于后台任务）：</p><pre><code>{
  "agents": {
 &nbsp;  "defaults": {
 &nbsp; &nbsp;  "model": "anthropic/claude-sonnet-4-20250514",
 &nbsp; &nbsp;  "utilityModel": "openrouter/google/gemini-flash-1.5"
 &nbsp;  }
  }
}</code></pre><h2>💬 9 大聊天平台</h2><p>一份配置，同时接入 9 个平台。每个平台自动适配最佳渲染格式。<a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="http://github.com">github.com</a></p><p>平台配置渲染<strong>Telegram</strong>@BotFather 获取 Token富文本 Markdown<strong>Discord</strong>Bot Token + Intent富文本 Markdown<strong>WhatsApp</strong>扫码连接纯文本<strong>飞书</strong>App ID + Secret原生标记<strong>Slack</strong>Bot Token + App Token原生标记<strong>Email</strong>IMAP/SMTP纯文本<strong>QQ</strong>App ID + Secret纯文本<strong>钉钉</strong>App Key + Secret原生标记<strong>iMessage</strong>macOS 零配置纯文本</p><p><strong>同一个 AI，9 种最佳阅读体验。</strong></p><h2>🤖 LLM Provider</h2><p>极简 4 类配置，覆盖所有主流模型。<a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="http://github.com">github.com</a></p><p>类型支持示例<strong>OpenAI 兼容</strong>OpenAI、OpenRouter、DeepSeek、Groq、Ollama、vLLM 等<code>openai/gpt-4o</code><strong>Anthropic</strong>Claude 全系列<code>anthropic/claude-sonnet-4-20250514</code><strong>Gemini</strong>Gemini 全系列<code>gemini/gemini-2.0-flash-exp</code><strong>Codex OAuth</strong>通过 ChatGPT 订阅认证，无需 API Key<code>openai-codex/gpt-5.1-codex</code></p><h2>🔌 MCP 支持</h2><p>Model Context Protocol — 接入任何工具生态。配置兼容 Claude Desktop 和 Cursor。<a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="http://github.com">github.com</a></p><pre><code>{
  "tools": {
 &nbsp;  "toolExposure": {
 &nbsp; &nbsp;  "mode": "auto"  // 智能路由，按需曝光工具
 &nbsp;  },
 &nbsp;  "mcpMaxTools": 50,
 &nbsp;  "mcpSlimSchema": true,
 &nbsp;  "mcpServers": {
 &nbsp; &nbsp;  "filesystem": {
 &nbsp; &nbsp; &nbsp;  "command": "npx",
 &nbsp; &nbsp; &nbsp;  "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path"]
 &nbsp; &nbsp;  }
 &nbsp;  }
  }
}</code></pre><p><strong>智能工具路由：</strong><br><code>toolExposure.mode: auto</code> 会自动打分，只曝光最相关的工具，避免 token 浪费。</p><h2>💬 聊天命令</h2><p>全平台通用命令：</p><p>命令说明<code>/new</code>新建对话（旧对话自动保留）<code>/stop</code>停止当前任务<code>/session</code>列出所有对话，按编号切换<code>/delete</code>删除当前对话<code>/model</code>切换模型<code>/memory</code>管理记忆（查看、编辑、删除）<code>/help</code>显示可用命令</p><h2>🐳 Docker 部署</h2><pre><code># 1. 准备配置
vim ~/.bao/config.jsonc
​
# 2. 复制环境变量模板
cp .env.docker.example .env.docker
​
# 3. 启动网关
docker compose --env-file .env.docker up -d bao-gateway
​
# 4. 查看日志
docker compose logs -f --tail=100 bao-gateway</code></pre><p><img class="max-w-full rounded-md my-2" src="https://cdn.jsdelivr.net/gh/rcy1314/tuchuang@main/uPic/architecture-dark.svg" alt="架构"></p>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>AIGC</category>
    </item>
    <item>
      <title>留言墙</title>
      <link>https://noisevip.cn/article/__message_wall__</link>
      <guid isPermaLink="true">https://noisevip.cn/article/__message_wall__</guid>
      <pubDate>Sat, 14 Mar 2026 08:42:40 GMT</pubDate>
      <description><![CDATA[留言墙系统占位文章]]></description>
      <content:encoded><![CDATA[<p>留言墙系统占位文章</p>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      
    </item>
    <item>
      <title>Belin Doc-一键完成高质量文档翻译</title>
      <link>https://noisevip.cn/article/belin-doc</link>
      <guid isPermaLink="true">https://noisevip.cn/article/belin-doc</guid>
      <pubDate>Sun, 10 Aug 2025 00:00:00 GMT</pubDate>
      <description><![CDATA[Belin Doc 是一款由 AI 驱动的免费、无限制 文档翻译工具。无需注册，没有限制。

截止发文，该产品属于新产品，未看到上架定价，未登录时可每日使用1000次，但任务有排队

官网：https://belindoc.com


功能

 	文档翻译：支持多种格式的文档翻译，]]></description>
      <content:encoded><![CDATA[<p>Belin Doc 是一款由 AI 驱动的免费、无限制 文档翻译工具。无需注册，没有限制。 截止发文，该产品属于新产品，未看到上架定价，未登录时可每日使用1000次，但任务有排队 官网：<a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="https://belindoc.com">https://belindoc.com</a> <img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/08/09/hVTBwA1uPNSt7F2.png" alt="" title=""></p><h3>功能</h3><ol class="pl-2 list-decimal my-2"><li><p><strong>文档翻译</strong>：支持多种格式的文档翻译，包括 PDF、DOCX、PPTX、XLSX、TXT、EPUB、JPG、JPEG、PNG 等。</p></li><li><p><strong>格式保持</strong>：能够保持原文的格式排版，包括图片、表格、公式等复杂格式。</p></li><li><p><strong>多语言支持</strong>：支持 60 多种语言的输入和输出。</p></li><li><p><strong>多模型选择</strong>：用户可以选择 ChatGPT、Claude、Gemini、DeepSeek 等多种顶尖大模型进行翻译。</p></li><li><p><strong>翻译加速</strong>：用户可以与好友分享，各得 5 次翻译加速与 500 页翻译额度。</p></li><li><p><strong>隐私保护</strong>：采用零数据保留策略，原文和译文不会存储在服务器上。</p></li><li><p><strong>无需注册</strong>：无需创建账户或登录，即可直接使用翻译功能。</p></li><li><p><strong>翻译扫描件</strong>：支持翻译扫描版 PDF，利用 OCR 技术识别图片中的文字。</p></li><li><p><strong>邮件通知</strong>：用户可以设置邮件通知，以便及时了解翻译进度。</p></li></ol><h3>特点</h3><ol class="pl-2 list-decimal my-2"><li><p><strong>完全免费</strong>：没有任何使用限制，无需支付费用或提供信用卡信息。</p></li><li><p><strong>高效翻译</strong>：由顶尖的文档格式解析技术和大模型驱动，翻译速度快，质量高。</p></li><li><p><strong>隐私优先</strong>：重视用户隐私，不存储用户的原文和译文，不收集个人信息。</p></li><li><p><strong>用户体验</strong>：界面直观易用，操作简单，用户可以轻松上手。</p></li><li><p><strong>社区支持</strong>：拥有庞大的用户社区，用户可以分享使用经验和反馈。</p></li><li><p><strong>持续更新</strong>：计划定期更新 AI 模型、格式解析算法、支持的文档格式和用户界面。</p></li></ol><h3>优势</h3><ul class="pl-2 list-disc my-2"><li><p><strong>零成本</strong>：完全免费，无需支付任何费用。</p></li><li><p><strong>高格式还原度</strong>：能够保持原文的格式排版，减少二次处理的工作量。</p></li><li><p><strong>强大的语言识别能力</strong>：支持多种语言的翻译，满足不同用户的需求。</p></li><li><p><strong>隐私保护</strong>：零数据保留策略，保障用户数据安全。</p></li><li><p><strong>多模型选择</strong>：用户可以根据需求选择不同的翻译模型，获得更优质的翻译结果。</p></li></ul><h3>适用场景</h3><ul class="pl-2 list-disc my-2"><li><p><strong>学术研究</strong>：帮助研究人员快速翻译学术文献。</p></li><li><p><strong>商业文档</strong>：翻译商业计划书、产品说明书等。</p></li><li><p><strong>财务报表</strong>：翻译财务报表和相关文件。</p></li><li><p><strong>跨境电商</strong>：翻译产品规格说明书、营销文案等。</p></li><li><p><strong>医药行业</strong>：翻译医药产品说明书、研究报告等。</p></li></ul><h2>翻译效果</h2><p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/08/09/4IdqKAQUm8ovTNh.png" alt="" title=""></p>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>AIGC</category>
    </item>
    <item>
      <title>Memory-不负时光摄影相册程序</title>
      <link>https://noisevip.cn/article/memory</link>
      <guid isPermaLink="true">https://noisevip.cn/article/memory</guid>
      <pubDate>Sun, 10 Aug 2025 00:00:00 GMT</pubDate>
      <description><![CDATA[![不负时光摄影相册](https://s2.loli.net/2025/08/09/7LWhS26a4zFuHkq.png)

## 简介

一个瀑布流摄影图库，也是专为摄影师做的独立网络相册程序，它是基于[Moment](https://github.com/Robert-Stackflow/M]]></description>
      <content:encoded><![CDATA[<p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/08/09/7LWhS26a4zFuHkq.png" alt="不负时光摄影相册"></p><h2>简介</h2><p>一个瀑布流摄影图库，也是专为摄影师做的独立网络相册程序，它是基于<a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="https://github.com/Robert-Stackflow/Moment">Moment</a>二次开发的，提供前后端分离、docker部署方式，支持云端一键部署，加入了丰富个性化的一些功能，你可以本地使用或上传至oss存储，同样支持添加视频及一键备份等</p><p>演示：<a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="https://memory.noisework.cn">https://memory.noisework.cn</a></p><p>开源：<a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="https://github.com/rcy1314/Memory">https://github.com/rcy1314/Memory</a></p><p>桌面端下载：<a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="https://github.com/rcy1314/Memory/releases">https://github.com/rcy1314/Memory/releases</a></p><p>网盘下载：<a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="https://pan.quark.cn/s/6477646cfa30">https://pan.quark.cn/s/6477646cfa30</a></p><p>注意：我只有mac，m1芯片下运行正常，如果如果你运行后首页显示Network eroor的情况属于后端未运行，在最新版本的软件包内实际有后端文件，如果未自动运行，可手动运行解决报错，或者下载源码后执行后端命令，后端：<code>python3 run.py</code></p><p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/08/02/EjIZ1X6MSHqUlTD.png" alt="1754074172331"></p><p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/08/02/o51PLHecODG9fZQ.png" alt="1754089150106"></p><h2>特征</h2><ul class="pl-2 list-disc my-2"><li><p>支持 linux/amd64 和 linux/arm64 两个平台</p></li><li><p>支持本地、S3/R2三种oss存储上传方式</p></li><li><p>支持多种数据库的选择连接，支持一键迁移，一键备份本地数据库</p></li><li><p>自适应瀑布流布局，参考pinterest</p></li><li><p>支持首页多张封面大图的自定义设置</p></li><li><p>支持相册合集，首页会有合集中图片数显示</p></li><li><p>支持添加B站、YouTube、直链视频，可自动识别B站、YouTube链接并解析相关视频信息</p></li><li><p>支持后台批量上传不同存储渠道</p></li><li><p>支持上传图片前的压缩和一键转换为webp格式的功能</p></li></ul><h2>加载特性</h2><h2>缩略图后缀优化</h2><ul class="pl-2 list-disc my-2"><li><p>系统支持配置 thumbnail_suffix 参数，会自动在原图URL后添加缩略图后缀</p></li><li><p>如果配置了缩略图后缀，封面会使用 image.image_url + thumbnail_suffix 的优化版本</p></li><li><p>如果没有配置后缀，则直接使用原图URL</p></li></ul><h2>响应式尺寸优化</h2><p>封面图片会根据设备类型和网络状况动态调整参数：</p><p>移动端优化：</p><ul class="pl-2 list-disc my-2"><li><p>尺寸：180×250像素</p></li><li><p>质量：慢网络30%，正常网络40%</p></li><li><p>URL参数： w=180&amp;h=250&amp;fit=crop&amp;auto=compress,format&amp;q=30-40 平板端优化：</p></li><li><p>尺寸：250×350像素</p></li><li><p>质量：慢网络35%，正常网络45%</p></li><li><p>URL参数： w=250&amp;h=350&amp;fit=crop&amp;auto=compress,format&amp;q=35-45 桌面端优化：</p></li><li><p>尺寸：200×280像素</p></li><li><p>质量：慢网络35%，正常网络45%</p></li><li><p>URL参数： w=200&amp;h=280&amp;fit=crop&amp;auto=compress,format&amp;q=35-45</p></li></ul><h2>智能加载策略</h2><ul class="pl-2 list-disc my-2"><li><p>懒加载 ：使用 IntersectionObserver 实现视口内才加载</p></li><li><p>并发控制 ：限制同时加载的图片数量，避免网络拥塞</p></li><li><p>预加载 ：优先加载前4-6张封面图片</p></li><li><p>错误处理 ：加载失败时自动回退到原图</p></li><li><p>格式优化 ：自动转换为WebP等现代格式</p></li></ul><h2>性能优化特性</h2><ul class="pl-2 list-disc my-2"><li><p>硬件加速 ：使用 transform: translateZ(0) 启用GPU加速</p></li><li><p>渐进式加载 ：显示加载动画和进度提示</p></li><li><p>缓存机制 ：避免重复加载相同图片</p></li><li><p>网络检测 ：根据3G/4G/WiFi调整加载策略</p></li></ul><p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/08/02/NnOJshlFMT3iEoC.png" alt="1754074193119"></p><h2>前后端运行</h2><p>前端：web目录下<code>npm run dev</code></p><p>后端：<code>python run.py</code></p><h2>docker运行</h2><pre><code>docker run -d \
  --name memory \
  --platform linux/amd64 \
  -p 4314:9999 \
  --add-host host.docker.internal:host-gateway \
  -e DB_HOST=host.docker.internal \
  -e EXTERNAL_DB_HOST=host.docker.internal \
  -e TZ=Asia/Shanghai \
  noise233/memory:latest
</code></pre><p>如果你想挂载本地数据库文件，比如：</p><pre><code>docker run -d \
  --name memory \
  --platform linux/amd64 \
  -p 4314:9999 \
  -v /www/wwwroot/memory.noisework.cn/data:/app/data \
  --add-host host.docker.internal:host-gateway \
  -e DB_HOST=host.docker.internal \
  -e EXTERNAL_DB_HOST=host.docker.internal \
  -e TZ=Asia/Shanghai \
  noise233/memory:latest
</code></pre><p>连接 <a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="https://neon.com/">Neon 免费数据库</a>的 Docker 运行命令</p><pre><code>docker run -d \
  --name memory \
  --platform linux/amd64 \
  -p 4314:9999 \
  -e DATABASE_URL="postgresql://username:password@ep-xxx-xxx.us-east-2.aws.neon.tech/dbname?sslmode=require" \
  -e TZ=Asia/Shanghai \
  noise233/memory:latest
</code></pre><h2>docker-compose</h2><p>由于桌面版和docker后端api有冲突，docker请使用/api/v1，如果你想自己构建docker：</p><p><code>web/.env.productuon</code>请修改为</p><pre><code># 资源公共路径,需要以 /开头和结尾
VITE_PUBLIC_PATH = '/'

# 是否启用代理
VITE_USE_PROXY = true

# base api
VITE_BASE_API = '/api/v1'
</code></pre><p><code>web/.env.development</code>请修改为</p><pre><code># Docker环境下的前端配置
# 资源公共路径,需要以 /开头和结尾
VITE_PUBLIC_PATH = '/'

# 是否启用代理 - Docker环境下不需要代理
VITE_USE_PROXY = false

# base api - Docker环境下使用相对路径
VITE_BASE_API = '/api/v1'
</code></pre><p>然后运行</p><pre><code>docker-compose up -d
</code></pre><p>构建跨平台桌面端时</p><p><code>web/.env.productuon</code>请修改为</p><pre><code># Tauri桌面端环境配置
# 资源公共路径,需要以 /开头和结尾
VITE_PUBLIC_PATH = '/'

# 桌面端API配置 - 指向本地后端服务
VITE_BASE_API = 'http://127.0.0.1:9999/api/v1'

# 桌面端不使用代理
VITE_USE_PROXY = false

# 是否启用压缩
VITE_USE_COMPRESS = true

# 压缩类型
VITE_COMPRESS_TYPE = gzip
</code></pre><p><code>web/.env.development</code>请修改为</p><pre><code># Docker环境下的前端配置
# 资源公共路径,需要以 /开头和结尾
VITE_PUBLIC_PATH = '/'

# 是否启用代理
VITE_USE_PROXY = true

# base api
VITE_BASE_API = 'http://127.0.0.1:9999/api/v1'
</code></pre><h2>🚀 一键部署</h2><h3>本地快速部署</h3><pre><code class="language-bash"># 使用一键部署脚本
./deploy.sh
</code></pre><h3>云平台部署</h3><p>我们支持多种云平台的一键部署，详细说明请查看：</p><p>📖 <a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="./DEPLOYMENT.md"><strong>完整部署指南</strong></a></p><p>支持的平台：</p><ul class="pl-2 list-disc my-2"><li><p><a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="https://zeabur.com">Zeabur</a> - 使用 <code>zeabur.json</code></p></li><li><p><a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="https://fly.io">Fly.io</a> - 使用 <code>fly.toml</code></p></li><li><p><a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="https://railway.app">Railway</a> - 使用 <code>railway.json</code></p></li><li><p><a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="https://render.com">Render</a> - 使用 <code>render.yaml</code></p></li><li><p>Docker / Docker Compose - 本地部署</p></li></ul><p>双平台构建发布</p><pre><code>docker buildx build --platform linux/amd64,linux/arm64 -t noise233/memory:latest --push --no-cache .
</code></pre><p>Podman（替代Docker）</p><pre><code>podman manifest create noise233/memory:latest
podman build --platform linux/amd64 --manifest noise233/memory:latest .
podman build --platform linux/arm64 --manifest noise233/memory:latest .
podman manifest push noise233/memory:latest
</code></pre><pre><code>podman manifest create noise233/memory:dev
podman build --platform linux/amd64 --manifest noise233/memory:dev .
podman build --platform linux/arm64 --manifest noise233/memory:dev .
podman manifest push noise233/memory:dev
</code></pre><h2>Docker下使用</h2><ul class="pl-2 list-disc my-2"><li><p>使用<code>&lt;服务器IP地址&gt;:4314</code>或<code>域名</code>访问相册</p></li><li><p>后台管理：<code>&lt;服务器IP地址&gt;:4314/admin/</code>或<code>&lt;域名&gt;/admin</code></p></li><li><p>默认管理员账号：<code>admin</code>，密码：<code>123456</code>，请登录后及时修改用户名和密码</p></li></ul><h2>后台配置使用指南</h2><ul class="pl-2 list-disc my-2"><li><p></p></li></ul><h3>系统设置</h3><p>通用设置为后台工作台显示设置</p><ul class="pl-2 list-disc my-2"><li><p></p></li></ul><h3>网站设置</h3><p>支持icon、logo、网站名称、封面自定义设置</p><ul class="pl-2 list-disc my-2"><li><p></p></li></ul><h3>内容设置</h3><p>首页每次加载图片数为每一页加载显示的图片数，支持略缩图的后缀，但不要轻易设置</p><ul class="pl-2 list-disc my-2"><li><p></p></li></ul><h3>存储设置</h3><p>允许上传-选项很重要，打开才支持图片的上传设置（包括批量上传也依赖这个开关）</p><p>本地存储-默认路径为程序内的images文件夹，不要轻易设置url前缀，因为程序自动识别上传链接，如果你有自定义网址，可以当cdn加速前缀使用</p><p>备份相册-检测并打包下载本地上传的所有图片，如果本地上传过多图片速度会慢</p><p>备份数据库-仅限本地存储模式，可一键下载程序的数据库文件</p><p>云端存储-支持cloudflareR2\S3及兼容oss存储，以cloudflarer2为例： 前往<a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="https://cloudflare.com%E6%B3%A8%E5%86%8C%EF%BC%8C%E5%B9%B6%E5%9C%A8%E8%B4%A6%E6%88%B7%E4%B8%BB%E9%A1%B5%E6%89%BE%E5%88%B0%E2%80%9CR2%E5%AF%B9%E8%B1%A1%E5%AD%98%E5%82%A8%E2%80%9D%EF%BC%8C%E7%82%B9%E5%87%BB%E2%80%9C%E5%88%9B%E5%BB%BA%E5%AD%98%E5%82%A8%E6%A1%B6%E2%80%9D%E5%B9%B6%E8%AE%BE%E7%BD%AE%E5%AD%98%E5%82%A8%E6%A1%B6%E5%90%8D%E7%A7%B0%E5%B9%B6%E7%82%B9%E5%87%BBapi%E8%AE%BE%E7%BD%AE%E7%AE%A1%E7%90%86%E5%AF%86%E9%92%A5%EF%BC%8C%E5%86%8D%E7%82%B9%E5%87%BB%E5%B0%86r2%E5%92%8Capi%E9%85%8D%E5%90%88%E4%BD%BF%E7%94%A8%E9%9D%A2%E6%9D%BF%E8%AE%B0%E5%BD%95%E8%B4%A6%E6%88%B7ID">https://cloudflare.com注册，并在账户主页找到“R2对象存储”，点击“创建存储桶”并设置存储桶名称并点击api设置管理密钥，再点击将r2和api配合使用面板记录账户ID</a></p><p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/08/08/7lDVdAZSaR2OXqJ.png" alt="1754664940776"></p><p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/08/08/qmX75tv1frescgA.png" alt="222eq"></p><p>点进新创建的存储桶，找到设置并点击可查看具体存储信息</p><p>回到后台页：</p><p>端点（Endpoint）-对应S3 API</p><p>区域-对应位置，只填写英文如APAC</p><p>访问ID-对应帐户ID,在api设置将r2和api配合使用面板中</p><p>访问密钥-API密钥</p><p>存储桶（Bucket）-存储桶名称</p><p>存储路径-默认按年月日路径：{year}/{month}/{timestamp}_{filename}</p><p>URL前缀-对应公共开发 URL或者自定义域名</p><p>URL后缀-非必要不用填写</p><ul class="pl-2 list-disc my-2"><li><p></p></li></ul><h3>Token设置</h3><p>是为外部链接相册使用的，是为未来做插件而准备的，目前未完善</p><ul class="pl-2 list-disc my-2"><li><p></p></li></ul><h3>数据库设置</h3><p>你可以选择不同的数据库连接类型，支持本地SQlite、postgreSQL、mysql</p><p>以<a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="https://neon.com/">Neon免费数据库</a>为例进入网站面板，点击Connect to your database，查看链接信息</p><p>比如：<code>postgresql://nedb_owner:n44g_fFkBjTxr6@ep-dark-wid-ae7n-pooler.c-2.us-est-2.aws.n.tech/neondb?sslmode=require&amp;cha_binding=rire</code> 主机地址-为@后的直到/的地址（ep-dark-wid-ae7n-pooler.c-2.us-est-2.aws.n.tech）</p><p>端口-5432</p><p>数据库名-Database选项下你创建的数据库名</p><p>用户名-Role选项下显示的同时也是//之后:之前的nedb_owne</p><p>密码-为@符合之前的n44g_fFkBjTxr6</p><p>注意：点击测试连接需要最后保存，迁移数据库是增量迁移，如果字段相同不会覆盖，数据过多时花费时间会久</p><ul class="pl-2 list-disc my-2"><li><p></p></li></ul><h3>内容管理</h3><p>如果是本地上传的图片在列表页面点击删除时会一同删除源文件，链接图片则不会</p><p>使用批量上传前请确保已开启“图片上传”选项并选择了本地还是云端存储</p><p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/08/02/md7fpJsbanRZGP1.png" alt="1754122928815"></p><h2>更新</h2><ul class="pl-2 list-disc my-2"><li><p>增加多平台数据库连接及一键迁移</p></li></ul><p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/08/02/U3nYiH7h8aGS6bE.png" alt="1754070550620"></p><ul class="pl-2 list-disc my-2"><li><p>增加用户token设置，目前认证方式：JWT token+API token</p></li></ul><p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/08/02/5V7cSFgkRMzyBfv.png" alt="1754073880268"></p><ul class="pl-2 list-disc my-2"><li><p>增加批量上传案例脚本</p></li><li><p>优化手机端渲染速度及布局</p></li><li><p>优化首页缓存逻辑，浏览器默认24小时内缓存</p></li><li><p>添加载入动画及提示弹窗</p></li><li><p>增加本地上传和备份功能</p></li><li><p>增加压缩转换图片的功能选项</p></li></ul><hr><h2>预览</h2><p>后台页</p><p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/08/02/9Zz4ekyiqlYJFRD.png" alt="1754126989821"></p><p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/08/02/sWHKwyJu7kVqI5A.png" alt="1754127006714"></p><p>视频上传自动识别</p><p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/08/08/yiJht7jOnLE6KVb.png" alt="1754667335195"></p><p>点击图片查看</p><p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/08/08/Fgix4YusQ8hRKOL.png" alt="1754544187757"></p><p>视频播放</p><p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/08/08/qgHzLv9XBejmFas.png" alt="1754543470663"></p><h2>🔨 构建说明</h2><p>✅ 【点击展开】</p><h3>桌面应用构建</h3><p>本项目支持构建为桌面应用程序，基于 Tauri 框架开发。</p><p>环境要求</p><p><strong>通用要求：</strong></p><ul class="pl-2 list-disc my-2"><li><p>Node.js 16+</p></li><li><p>npm 或 yarn</p></li><li><p>Rust 1.70+</p></li></ul><p><strong>Windows 构建要求：</strong></p><ul class="pl-2 list-disc my-2"><li><p>Windows 10/11</p></li><li><p>Microsoft C++ Build Tools 或 Visual Studio 2019/2022</p></li><li><p>Windows SDK</p></li></ul><p><strong>macOS 构建要求：</strong></p><ul class="pl-2 list-disc my-2"><li><p>macOS 10.15+</p></li><li><p>Xcode Command Line Tools</p></li></ul><p><strong>Linux 构建要求：</strong></p><ul class="pl-2 list-disc my-2"><li><p>Ubuntu 18.04+ / Debian 10+ / Fedora 32+ 等</p></li><li><p>系统开发工具包</p></li></ul><p>构建步骤</p><ol class="pl-2 list-decimal my-2"><li><p><strong>安装依赖</strong></p><pre><code class="language-bash"># 进入前端目录
cd web

# 安装 Node.js 依赖
npm install

# 安装 Tauri CLI
npm install -g @tauri-apps/cli
</code></pre></li><li><p><strong>开发模式运行</strong></p><pre><code class="language-bash"># 启动开发服务器
npm run tauri dev
</code></pre></li><li><p><strong>生产构建</strong></p><pre><code class="language-bash"># 构建桌面应用
npm run tauri build
</code></pre></li></ol><p>Windows 平台构建</p><p><strong>环境配置：</strong></p><ol class="pl-2 list-decimal my-2"><li><p><strong>安装 Rust</strong></p><pre><code class="language-powershell"># 下载并安装 Rust
# 访问 https://rustup.rs/ 下载安装程序
# 或使用 winget
winget install Rustlang.Rustup
</code></pre></li><li><p><strong>安装 Microsoft C++ Build Tools</strong></p><pre><code class="language-powershell"># 使用 winget 安装
winget install Microsoft.VisualStudio.2022.BuildTools

# 或下载 Visual Studio Installer
# 选择 "C++ build tools" 工作负载
</code></pre></li><li><p><strong>安装 Windows SDK</strong></p><pre><code class="language-powershell"># 通过 Visual Studio Installer 安装
# 或使用 winget
winget install Microsoft.WindowsSDK
</code></pre></li></ol><p><strong>构建命令：</strong></p><pre><code class="language-powershell"># 进入项目目录
cd web

# 安装依赖
npm install

# 构建 Windows 应用
npm run tauri build

# 构建特定目标（可选）
npm run tauri build -- --target x86_64-pc-windows-msvc
</code></pre><p><strong>输出文件位置：</strong></p><ul class="pl-2 list-disc my-2"><li><p>可执行文件：<code>web/src-tauri/target/release/memory-app.exe</code></p></li><li><p>安装包：<code>web/src-tauri/target/release/bundle/msi/Memory-不负时光相册程序_1.0.0_x64_en-US.msi</code></p></li><li><p>便携版：<code>web/src-tauri/target/release/bundle/nsis/Memory-不负时光相册程序_1.0.0_x64-setup.exe</code></p></li></ul><p>macOS 平台构建</p><pre><code class="language-bash"># 进入项目目录
cd web

# 安装依赖
npm install

# 构建 macOS 应用
npm run tauri build

# 构建特定架构（可选）
npm run tauri build -- --target aarch64-apple-darwin  # Apple Silicon
npm run tauri build -- --target x86_64-apple-darwin   # Intel Mac
</code></pre><p><strong>输出文件位置：</strong></p><ul class="pl-2 list-disc my-2"><li><p>应用包：<code>web/src-tauri/target/release/bundle/macos/Memory-不负时光相册程序.app</code></p></li><li><p>DMG 安装包：<code>web/src-tauri/target/release/bundle/dmg/Memory-不负时光相册程序_1.0.0_aarch64.dmg</code></p></li></ul><p>Linux 平台构建</p><pre><code class="language-bash"># 安装系统依赖（Ubuntu/Debian）
sudo apt update
sudo apt install -y libwebkit2gtk-4.0-dev build-essential curl wget libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev

# 安装系统依赖（Fedora）
sudo dnf install webkit2gtk3-devel openssl-devel curl wget libappindicator-gtk3-devel librsvg2-devel

# 进入项目目录
cd web

# 安装依赖
npm install

# 构建 Linux 应用
npm run tauri build
</code></pre><p><strong>输出文件位置：</strong></p><ul class="pl-2 list-disc my-2"><li><p>可执行文件：<code>web/src-tauri/target/release/memory-app</code></p></li><li><p>AppImage：<code>web/src-tauri/target/release/bundle/appimage/memory-app_1.0.0_amd64.AppImage</code></p></li><li><p>DEB 包：<code>web/src-tauri/target/release/bundle/deb/memory-app_1.0.0_amd64.deb</code></p></li></ul><p>跨平台构建</p><p>如需在一个平台上构建多个平台的应用，可以使用 GitHub Actions 或其他 CI/CD 服务。</p><p>🚀 GitHub Actions 自动构建</p><p>本项目已配置 GitHub Actions 工作流，支持自动构建多平台桌面应用：</p><p><strong>工作流文件：</strong></p><ul class="pl-2 list-disc my-2"><li><p><code>.github/workflows/build-windows.yml</code> - 专门构建 Windows 平台</p></li><li><p><code>.github/workflows/build-multiplatform.yml</code> - 构建所有平台（Windows、macOS、Linux）</p></li></ul><p><strong>触发方式：</strong></p><pre><code class="language-bash"># 1. 推送代码自动构建
git push origin main

# 2. 创建标签自动发布
git tag v1.0.0
git push origin v1.0.0

# 3. 手动触发（在 GitHub Actions 页面）
</code></pre><p><strong>构建产物：</strong></p><ul class="pl-2 list-disc my-2"><li><p><strong>Windows</strong>: MSI 安装包、NSIS 便携版、可执行文件</p></li><li><p><strong>macOS</strong>: DMG 安装包、.app 应用包（Universal Binary）</p></li><li><p><strong>Linux</strong>: AppImage、DEB 包、可执行文件</p></li></ul><p><strong>配置要求：</strong></p><p>在 GitHub 仓库设置中添加以下 Secrets（可选）：</p><ul class="pl-2 list-disc my-2"><li><p><code>TAURI_PRIVATE_KEY</code>: Tauri 应用签名私钥</p></li><li><p><code>TAURI_KEY_PASSWORD</code>: 私钥密码</p></li></ul><p><strong>使用方法：</strong></p><ol class="pl-2 list-decimal my-2"><li><p>Fork 本仓库到你的 GitHub 账户</p></li><li><p>推送代码或创建标签</p></li><li><p>在 Actions 页面查看构建进度</p></li><li><p>从 Artifacts 或 Releases 下载构建产物</p></li></ol><p>详细说明请查看：<a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href=".github/workflows/README.md">GitHub Actions 构建指南</a></p><p><strong>手动构建示例：</strong></p><pre><code class="language-yaml"># .github/workflows/build.yml 示例
name: Build Desktop App

on:
  push:
    tags: ['v*']

jobs:
  build:
    strategy:
      matrix:
        platform: [macos-latest, ubuntu-20.04, windows-latest]
    
    runs-on: ${{ matrix.platform }}
    
    steps:
      - uses: actions/checkout@v4
      
      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 18
          
      - name: Install Rust
        uses: dtolnay/rust-toolchain@stable
        
      - name: Install dependencies (Ubuntu)
        if: matrix.platform == 'ubuntu-20.04'
        run: |
          sudo apt update
          sudo apt install -y libwebkit2gtk-4.0-dev build-essential curl wget libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev
          
      - name: Install frontend dependencies
        run: |
          cd web
          npm install
          
      - name: Build Tauri app
        run: |
          cd web
          npm run tauri build
</code></pre><p>构建配置</p><p>构建配置文件位于 <code>web/src-tauri/tauri.conf.json</code>，可以自定义：</p><ul class="pl-2 list-disc my-2"><li><p>应用名称和版本</p></li><li><p>图标和资源</p></li><li><p>窗口设置</p></li><li><p>构建目标</p></li><li><p>安装包类型</p></li></ul><p>故障排除</p><p><strong>常见问题：</strong></p><ol class="pl-2 list-decimal my-2"><li><p><strong>Rust 编译错误</strong></p><pre><code class="language-bash"># 更新 Rust 工具链
rustup update

# 清理构建缓存
cd web/src-tauri
cargo clean
</code></pre></li><li><p><strong>Windows 构建失败</strong></p><ul class="pl-2 list-disc my-2"><li><p>确保安装了正确版本的 Visual Studio Build Tools</p></li><li><p>检查 Windows SDK 是否正确安装</p></li><li><p>尝试以管理员身份运行命令</p></li></ul></li><li><p><strong>依赖安装失败</strong></p><pre><code class="language-bash"># 清理 npm 缓存
npm cache clean --force

# 删除 node_modules 重新安装
rm -rf node_modules package-lock.json
npm install
</code></pre></li></ol><h2>其它</h2><p><a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="https://github.com/rcy1314/Memory/blob/main/DOCKER_DATABASE_SETUP.md">Docker 环境下外部数据库连接配置指南</a></p><p>二次开发时请注意该项目使用v-model:value语法编写</p><h2>桌面版运行报错</h2><p>如果你运行后首页显示Network eroor的情况属于后端未运行，在最新版本的软件包内实际有后端文件，如果未自动运行，可手动运行解决报错，或者下载源码后执行后端命令，后端：<code>python3 run.py</code></p><p>仓库根目录中有很多python脚本是我用来测试api的非必要可删除文件</p><p>如果云端使用请上传压缩或webp格式图片，避免加载慢</p>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>探索发现</category>
    </item>
    <item>
      <title>AI Movie Clip - 基于python的智能视频剪辑系统</title>
      <link>https://noisevip.cn/article/ai-movie-clip-python</link>
      <guid isPermaLink="true">https://noisevip.cn/article/ai-movie-clip-python</guid>
      <pubDate>Sun, 10 Aug 2025 00:00:00 GMT</pubDate>
      <description><![CDATA[![1754825674517](https://s2.loli.net/2025/08/10/qNcxiVnhOQYvMpW.png)

一个基于人工智能的自动视频剪辑系统，能够自动分析视频内容并根据用户需求生成编辑后的视频。该项目为视频剪辑mcp提供了一个新的研究方向，它使用python脚本来分]]></description>
      <content:encoded><![CDATA[<p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/08/10/qNcxiVnhOQYvMpW.png" alt="1754825674517"></p><p>一个基于人工智能的自动视频剪辑系统，能够自动分析视频内容并根据用户需求生成编辑后的视频。该项目为视频剪辑mcp提供了一个新的研究方向，它使用python脚本来分析和处理视频，同时你可以编辑自己设定的模版进行一键创作。</p><p>开源：<a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="https://github.com/LumingMelody/Ai-movie-clip">https://github.com/LumingMelody/Ai-movie-clip</a></p><h2>功能特性</h2><ul class="pl-2 list-disc my-2"><li><p>🎬 <strong>视频自动分析</strong>：使用CV和ML模型分析视频内容</p></li><li><p>🎨 <strong>多样化模板</strong>：支持多种视频风格模板（社交媒体、商业、教育等）</p></li><li><p>🤖 <strong>AI内容生成</strong>：集成文本生成、图像生成和语音合成</p></li><li><p>🎭 <strong>特效和转场</strong>：丰富的视频效果和转场动画</p></li><li><p>🚀 <strong>API服务</strong>：提供FastAPI接口，支持批处理</p></li><li><p>🔌 <strong>MCP集成</strong>：支持Model Context Protocol扩展</p></li></ul><h2>快速开始</h2><h3>环境要求</h3><ul class="pl-2 list-disc my-2"><li><p>Python 3.8+</p></li><li><p>FFmpeg（用于视频处理）</p></li><li><p>CUDA（可选，用于GPU加速）</p></li></ul><h3>安装步骤</h3><ol class="pl-2 list-decimal my-2"><li><p><strong>克隆项目</strong></p></li></ol><pre><code>git clone https://github.com/LumingMelody/Ai-movie-clip.git
cd Ai-movie-clip
</code></pre><ol class="pl-2 list-decimal my-2"><li><p><strong>安装依赖</strong></p></li></ol><pre><code>pip install -r requirements.txt
</code></pre><ol class="pl-2 list-decimal my-2"><li><p><strong>配置环境变量</strong></p></li></ol><p>复制环境变量模板并填写您的配置：</p><pre><code>cp .env.example .env
</code></pre><p>编辑 <code>.env</code> 文件，填入您的API密钥：</p><pre><code># AI Model API Keys
DASHSCOPE_API_KEY=your_dashscope_api_key_here
OPENAI_API_KEY=your_openai_api_key_here

# OSS Configuration (Alibaba Cloud)
OSS_ACCESS_KEY_ID=your_oss_access_key_id_here
OSS_ACCESS_KEY_SECRET=your_oss_access_key_secret_here
OSS_BUCKET_NAME=your_bucket_name_here
</code></pre><p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/08/10/ikHgqEBTbf4wVDt.png" alt="1754825890851"></p><h3>获取API密钥</h3><ul class="pl-2 list-disc my-2"><li><p><strong>DashScope API Key</strong>: 访问 <a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="https://dashscope.console.aliyun.com/">阿里云DashScope控制台</a></p></li><li><p><strong>OpenAI API Key</strong>: 访问 <a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="https://platform.openai.com/api-keys">OpenAI平台</a></p></li><li><p><strong>OSS配置</strong>: 访问 <a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="https://oss.console.aliyun.com/">阿里云OSS控制台</a></p></li></ul><h2>使用方法</h2><h3>命令行工具</h3><pre><code># 分析视频
python main.py analyze video.mp4 --output analysis.json

# 自动剪辑视频
python main.py edit video.mp4 --duration 30 --style "抖音风"

# 查看更多选项
python main.py --help
</code></pre><h3>Web API服务</h3><pre><code># 启动FastAPI服务器
python app.py
# 或
uvicorn app:app --reload

# 访问API文档
# http://localhost:8000/docs
</code></pre><h3>API示例</h3><pre><code>import requests

# 分析视频
response = requests.post(
    "http://localhost:8000/analyze",
    files={"file": open("video.mp4", "rb")},
    data={"duration": 30}
)

# 生成编辑视频
response = requests.post(
    "http://localhost:8000/edit",
    json={
        "video_path": "path/to/video.mp4",
        "template": "douyin",
        "duration": 30
    }
)
</code></pre><h2>项目结构</h2><pre><code>Ai-movie-clip/
├── core/                  # 核心功能模块
│   ├── orchestrator/     # 工作流编排
│   ├── analyzer/         # 视频分析
│   ├── ai/              # AI模型集成
│   ├── clipeffects/     # 视频特效
│   ├── cliptransition/  # 转场效果
│   ├── clipgenerate/    # AI内容生成
│   └── cliptemplate/    # 视频模板
├── templates/           # Jinja2模板文件
├── config/             # 配置文件
├── main.py            # CLI入口
├── app.py             # API服务器
└── requirements.txt   # 依赖列表
</code></pre><h2>高级功能</h2><h3>自定义模板</h3><p>在 <code>templates/</code> 目录下创建新的模板文件：</p><pre><code># templates/custom/my_template.j2
产品名称：{{ product_name }}
特点：{{ features }}
价格：{{ price }}
</code></pre><h3>扩展AI模型</h3><p>在 <code>core/ai/ai_model_caller.py</code> 中添加新的模型：</p><pre><code>def call_custom_model(prompt):
    # 实现您的模型调用逻辑
    pass
</code></pre><h2>其它</h2><p>该项目属于新的，还有很多不完善的地方，但提供的思路是好的，如将提示词精炼后给到大模型时ai执行指令调用工具剪辑的流程</p><p>示例提示词模板（给大模型的prompt）：</p><pre><code>你是一个智能视频剪辑助手。现在我给你以下信息：

视频内容类型：{content_type}
视频片段数量：{num_videos}
视频分析结果：
- 场景切换频繁程度：{scene_change_freq}
- 是否包含人声：{has_speech}
- 是否包含人脸：{face_present}
- 主要对象：{main_objects}

请根据以上信息，生成一个适合该类型视频的剪辑策略，并输出具体的函数调用指令。

你的输出格式如下：
{
  "thought_process": [
    "第一步：识别出视频高潮部分在第10-15秒。",
    "第二步：裁剪冗余开头和结尾。",
    ...
  ],
  "actions": [
    {"function": "cut", "start": 0, "end": 5},
    {"function": "add_transition", "type": "fade", "start": 5, "duration": 1},
    ...
  ]
}
</code></pre><hr><h3>调用工具执行剪辑（使用 FFmpeg + Python）</h3><p>支持的函数示例：</p><p>函数名参数功能cut(start, end)开始时间、结束时间裁剪片段add_transition(type, start, duration)类型、开始时间、持续时间添加转场speedup(start, end, factor)区间、加速倍数加速播放apply_filter(filter_name, start, end)滤镜名称、区间应用滤镜concatenate(clips)片段列表合并多个片段</p><p>示例调用（使用 subprocess 调用 FFmpeg）：</p><pre><code class="language-python">import subprocess

def cut_video(input_path, output_path, start, end):
    cmd = f"ffmpeg -i {input_path} -ss {start} -to {end} -c copy {output_path}"
    subprocess.run(cmd, shell=True)
</code></pre><hr><p>通过完善不同的工作流就有了初步的mcp化功能，你可以拿这个项目作进一步的完善和研究</p>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>探索发现</category>
    </item>
    <item>
      <title>剪辑神器➕1-AutoClip智能视频切片器</title>
      <link>https://noisevip.cn/article/autoclip</link>
      <guid isPermaLink="true">https://noisevip.cn/article/autoclip</guid>
      <pubDate>Sat, 26 Jul 2025 00:00:00 GMT</pubDate>
      <description><![CDATA[🎬 AutoClip是基于AI的智能视频切片和合集推荐系统，支持从B站视频自动下载、字幕提取、智能切片和合集生成。 官网： https://zhouxiaoka.github.io/autoclip intro/ 开源： https://github.com/zhouxiaoka/autoclip mvp ✨ 功能特]]></description>
      <content:encoded><![CDATA[<p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/07/26/OFIVcBrbw8qPMhk.png" alt="1753534825187"></p><p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/07/26/S4vtgk2uRYm1ePX.png" alt=""></p><p>🎬 AutoClip是基于AI的智能视频切片和合集推荐系统，支持从B站视频自动下载、字幕提取、智能切片和合集生成。</p><p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/07/26/Tohv6J8fanbNCkO.png" alt="1753530000618"></p><p>官网：<a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="https://zhouxiaoka.github.io/autoclip_intro/">https://zhouxiaoka.github.io/autoclip_intro/</a></p><p>开源：<a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="https://github.com/zhouxiaoka/autoclip_mvp">https://github.com/zhouxiaoka/autoclip_mvp</a></p><h2>✨ 功能特性</h2><ul class="pl-2 list-disc my-2"><li><p>🔥 <strong>智能视频切片</strong>：基于AI分析视频内容，自动生成高质量切片</p></li><li><p>📺 <strong>B站视频下载</strong>：支持B站视频自动下载和字幕提取</p></li><li><p>🎯 <strong>智能合集推荐</strong>：AI自动分析切片内容，推荐相关合集</p></li><li><p>🎨 <strong>手动合集编辑</strong>：支持拖拽排序、添加/删除切片</p></li><li><p>📦 <strong>一键打包下载</strong>：支持所有切片和合集的一键打包下载</p></li><li><p>🌐 <strong>现代化Web界面</strong>：React + TypeScript + Ant Design</p></li><li><p>⚡ <strong>实时处理状态</strong>：实时显示处理进度和日志</p></li></ul><p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/07/26/xERsBeqM9Od2ngD.png" alt="1753533001235"></p><h3>环境要求</h3><ul class="pl-2 list-disc my-2"><li><p>Python 3.8+</p></li><li><p>Node.js 16+</p></li><li><p>通义千问API密钥（用于AI分析）</p></li></ul><h3>安装步骤</h3><p>克隆项目</p><pre><code>git clone git@github.com:zhouxiaoka/autoclip_mvp.git
cd autoclip_mvp
</code></pre><p>提示：截止发文时间，项目中遗忘了uploads文件夹，你需要自行创建该文件夹或代码修改，位置如下图，创建：</p><pre><code>mkdir -p uploads
</code></pre><p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/07/26/XwbFnBsuxC6TLly.png" alt="1753533416765"></p><p>安装后端依赖</p><pre><code># 创建虚拟环境
python3 -m venv venv
source venv/bin/activate  # Linux/Mac
# 或 venv\Scripts\activate  # Windows

# 安装依赖
pip install -r requirements.txt
</code></pre><p>安装前端依赖</p><pre><code>cd frontend
npm install
cd ..
</code></pre><p>配置API密钥</p><pre><code># 复制示例配置文件
cp data/settings.example.json data/settings.json

# 编辑配置文件，填入你的API密钥
{
  "dashscope_api_key": "你的通义千问API密钥",
  "model_name": "qwen-plus",
  "chunk_size": 5000,
  "min_score_threshold": 0.7,
  "max_clips_per_collection": 5,
  "default_browser": "chrome"
}
</code></pre><h3>启动服务</h3><p>方式一：使用启动脚本（推荐）</p><pre><code>chmod +x start_dev.sh
./start_dev.sh
</code></pre><p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/07/26/eJA9NY1QynBCMol.png" alt="1753529902784"></p><p>方式二：手动启动</p><pre><code># 启动后端服务
source venv/bin/activate
python backend_server.py

# 新开终端，启动前端服务
cd frontend
npm run dev
</code></pre><p>方式三：命令行工具</p><pre><code># 处理本地视频文件
python main.py --video input.mp4 --srt input.srt --project-name "我的项目"

# 处理现有项目
python main.py --project-id &lt;project_id&gt;

# 列出所有项目
python main.py --list-projects
</code></pre><h3>访问地址</h3><ul class="pl-2 list-disc my-2"><li><p>🌐 <strong>前端界面</strong>: <a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="http://localhost:3000/">http://localhost:3000</a></p></li><li><p>🔌 <strong>后端API</strong>: <a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="http://localhost:8000/">http://localhost:8000</a></p></li><li><p>📚 <strong>API文档</strong>: <a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="http://localhost:8000/docs">http://localhost:8000/docs</a></p></li></ul><p>你也可以在后台配置相关参数</p><p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/07/26/FeoGY2VO4bgKhv8.png" alt="1753529967293"></p><h2>切片处理进程</h2><p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/07/26/oOhyB1mfFG7cRq9.png" alt="1753534497605"></p><h2>效果预览</h2><p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/07/26/EZfvo5qgsYtBWLH.png" alt="1753534598636"></p><p></p><h2>其它</h2><h2>📁 项目结构</h2><pre><code>autoclip_mvp/
├── backend_server.py          # FastAPI后端服务
├── main.py                   # 命令行入口
├── start_dev.sh              # 开发环境启动脚本
├── requirements.txt           # Python依赖
├── .gitignore               # Git忽略文件
├── README.md                # 项目文档
│
├── frontend/                # React前端
│   ├── src/
│   │   ├── components/      # React组件
│   │   ├── pages/          # 页面组件
│   │   ├── services/       # API服务
│   │   ├── store/          # 状态管理
│   │   └── hooks/          # 自定义Hooks
│   ├── package.json        # 前端依赖
│   └── vite.config.ts      # Vite配置
│
├── src/                    # 核心业务逻辑
│   ├── main.py            # 主处理逻辑
│   ├── config.py          # 配置管理
│   ├── api.py             # API接口
│   ├── pipeline/          # 处理流水线
│   │   ├── step1_outline.py    # 大纲提取
│   │   ├── step2_timeline.py   # 时间轴生成
│   │   ├── step3_scoring.py    # 评分计算
│   │   ├── step4_title.py      # 标题生成
│   │   ├── step5_clustering.py # 聚类分析
│   │   └── step6_video.py      # 视频生成
│   ├── utils/             # 工具函数
│   │   ├── llm_client.py      # AI客户端
│   │   ├── video_processor.py # 视频处理
│   │   ├── text_processor.py  # 文本处理
│   │   ├── project_manager.py # 项目管理
│   │   ├── error_handler.py   # 错误处理
│   │   └── bilibili_downloader.py # B站下载
│   └── upload/            # 文件上传
│       └── upload_manager.py
│
├── data/                  # 数据文件
│   ├── projects.json     # 项目数据
│   └── settings.json     # 配置文件
│
├── uploads/              # 上传文件存储
│   ├── tmp/             # 临时下载文件
│   └── {project_id}/    # 项目文件
│       ├── input/       # 原始文件
│       └── output/      # 处理结果
│           ├── clips/   # 切片视频
│           └── collections/ # 合集视频
│
├── prompt/               # AI提示词模板
│   ├── business/        # 商业财经
│   ├── knowledge/       # 知识科普
│   ├── entertainment/   # 娱乐内容
│   └── ...
│
└── tests/               # 测试文件
    ├── test_config.py
    └── test_error_handler.py
</code></pre><h2>🔧 配置说明</h2><h3>API密钥配置</h3><p>在 <code>data/settings.json</code> 中配置你的通义千问API密钥：</p><pre><code>{
  "dashscope_api_key": "your-api-key-here",
  "model_name": "qwen-plus",
  "chunk_size": 5000,
  "min_score_threshold": 0.7,
  "max_clips_per_collection": 5,
  "default_browser": "chrome"
}
</code></pre><h3>浏览器配置</h3><p>支持Chrome、Firefox、Safari等浏览器用于B站视频下载：</p><pre><code>{
  "default_browser": "chrome"
}
</code></pre><h2>📖 使用指南</h2><h3>1. 上传本地视频</h3><ol class="pl-2 list-decimal my-2"><li><p>访问 <a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="http://localhost:3000/">http://localhost:3000</a></p></li><li><p>点击"上传视频"按钮</p></li><li><p>选择视频文件和字幕文件（必须）</p></li><li><p>填写项目名称和分类</p></li><li><p>点击"开始处理"</p></li></ol><h3>2. 下载B站视频</h3><ol class="pl-2 list-decimal my-2"><li><p>在首页点击"B站视频下载"</p></li><li><p>输入B站视频链接（必须是有字幕的视频）</p></li><li><p>选择浏览器（用于获取登录状态）</p></li><li><p>点击"开始下载"</p></li></ol><h3>3. 编辑合集</h3><ol class="pl-2 list-decimal my-2"><li><p>进入项目详情页面</p></li><li><p>点击合集卡片进入编辑模式</p></li><li><p>拖拽切片调整顺序</p></li><li><p>添加或删除切片</p></li><li><p>保存更改</p></li></ol><h3>4. 下载项目</h3><ol class="pl-2 list-decimal my-2"><li><p>在项目卡片上点击下载按钮</p></li><li><p>自动打包所有切片和合集</p></li><li><p>下载完整的zip文件</p></li></ol><h2>🛠️ 开发指南</h2><h3>后端开发</h3><pre><code># 启动开发服务器（支持热重载）
python backend_server.py

# 运行测试
pytest tests/
</code></pre><h3>前端开发</h3><pre><code>cd frontend
npm run dev    # 开发模式
npm run build  # 生产构建
npm run lint   # 代码检查
</code></pre><h3>添加新的视频分类</h3><ol class="pl-2 list-decimal my-2"><li><p>在 <code>prompt/</code> 目录下创建新的分类文件夹</p></li><li><p>添加对应的提示词模板文件</p></li><li><p>在前端 <code>src/services/api.ts</code> 中添加分类选项</p></li></ol><h2>其它问题</h2><p>如果你下载仓库文件并运行后发现已多了一个下载的案例，但不能查看，需要及时清除失效的视频避免终端持续报404</p><p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/07/26/SCZRBWV3ukjyaQr.png" alt="1753533785159"></p>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>探索发现</category>
    </item>
    <item>
      <title>CrossPaste-跨设备的粘贴神器，在任意设备间复制粘贴</title>
      <link>https://noisevip.cn/article/crosspaste</link>
      <guid isPermaLink="true">https://noisevip.cn/article/crosspaste</guid>
      <pubDate>Sat, 26 Jul 2025 00:00:00 GMT</pubDate>
      <description><![CDATA[此前已介绍过多个粘贴软件了，如PasteBar等，它们各有所长，但有没有适合不同设备之间使用的呢，有的，CrossPaste就很好满足了跨设备同时复制粘贴的问题

## 特性

- **🔄 实时共享**：设备之间实时共享粘贴板内容，操作自然流畅。
- **🖥️ 跨平台统一体验**：Mac、Win]]></description>
      <content:encoded><![CDATA[<p>此前已介绍过多个粘贴软件了，如PasteBar等，它们各有所长，但有没有适合不同设备之间使用的呢，有的，CrossPaste就很好满足了跨设备同时复制粘贴的问题</p><h2>特性</h2><ul class="pl-2 list-disc my-2"><li><p><strong>🔄 实时共享</strong>：设备之间实时共享粘贴板内容，操作自然流畅。</p></li><li><p><strong>🖥️ 跨平台统一体验</strong>：Mac、Windows 和 Linux 版本界面一致，操作习惯无需改变。</p></li><li><p><strong>📋 丰富的类型支持</strong>：轻松处理多种粘贴数据类型，包括文本、颜色、URL、HTML 富文本、图片和文件。</p></li><li><p><strong>🔒 端到端加密保护</strong>：采用非对称加密算法，全方位保障数据安全。</p></li><li><p><strong>🌐 仅局域网无服务器</strong>: 本地存储，无服务器架构。你的数据，唯你所有。隐私保护，由你掌控。</p></li><li><p><strong>🧹 智能空间管理</strong>：提供多样化的自动清理选项，高效管理粘贴板存储空间，无需手动干预。</p></li></ul><p>官网：<a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="https://crosspaste.com">https://crosspaste.com</a></p><p>开源：<a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="https://github.com/CrossPaste/crosspaste-desktop">https://github.com/CrossPaste/crosspaste-desktop</a></p><p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/07/26/slqgxwBnXoINucr.png" alt="粘贴板"></p><h1>粘贴板</h1><p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/07/26/QFXxRo3fZMqhgzE.png" alt="Description">粘贴板界面展示所有记录的粘贴板历史，基于时间降序排列。 用户可以在这个界面对选中的单个<a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="https://crosspaste.com/tutorial/pasteboard-paste-item#%E7%B2%98%E8%B4%B4%E6%9D%BF%E5%92%8C%E7%B2%98%E8%B4%B4%E9%A1%B9">粘贴板</a>进行操作。</p><h2>1. 拷贝</h2><p>拷贝粘贴板会直接应用到当前系统中，但不会进行设备间的同步（你在其他应用进行的拷贝默认都会在设备间共享）。</p><h2>2. 收藏</h2><p>收藏的粘贴板不会被软件自动清理</p><p>在搜索历史粘贴板时也可通过收藏来缩小搜索范围，因此你可以将收藏粘贴板当作 snippet 来使用。</p><h2>3. 类型</h2><p>显示类型会选择粘贴板中<a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="https://crosspaste.com/tutorial/pasteboard-paste-item.html#%E7%B2%98%E8%B4%B4%E7%B1%BB%E5%9E%8B%E7%9A%84%E4%BC%98%E5%85%88%E7%BA%A7">优先级</a>最高的类型图标</p><ol class="pl-2 list-decimal my-2"><li><p>当粘贴类型为 URL 时，会尝试显示对应站点的 favicon.ico</p></li><li><p>当粘贴类型为 HTML 时，会尝试显示粘贴集的来源软件</p></li><li><p>当粘贴类型为 File 时，会尝试显示文件类型对应的图标</p></li></ol><h2>4. 打开或单击粘贴集</h2><p>使用系统默认软件打开，方便进行进行二次编辑</p><h2>5. 删除</h2><p>WARNING</p><p>移除粘贴集，同时会释放对于的存储空间，无法从 CrossPaste 内恢复</p>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>探索发现</category>
    </item>
    <item>
      <title>eechat-跨平台本地部署LLM工具，支持mcp接入</title>
      <link>https://noisevip.cn/article/eechat-llm-mcp</link>
      <guid isPermaLink="true">https://noisevip.cn/article/eechat-llm-mcp</guid>
      <pubDate>Fri, 25 Jul 2025 07:33:03 GMT</pubDate>
      <description><![CDATA[eechat 是一款开源免费的国产 AI 应用，支持 Windows、macOS 和 Linux，集成了聊天、多模态指令执行（MCP）、知识库问答（RAG）、语音识别（ASR）、语音合成（TTS）等功能模块。



 	开箱即用，无需代码基础，适合非技术背景用户。
 	免费开源，国产的免费]]></description>
      <content:encoded><![CDATA[<section id="wenyan" class="preview" data-provider="WenYan">eechat 是一款开源免费的国产 AI 应用，支持 Windows、macOS 和 Linux，集成了聊天、多模态指令执行（MCP）、知识库问答（RAG）、语音识别（ASR）、语音合成（TTS）等功能模块。

<img title="" src="https://s2.loli.net/2025/07/22/XUy1jm6Fg24aRpY.jpg" alt="" />
<ul>
 	<li><strong>开箱即用</strong>，无需代码基础，适合非技术背景用户。</li>
 	<li><strong>免费开源</strong>，国产的免费开源应用，数据都存储在本地</li>
 	<li><strong>多模型支持</strong>，同时支持 API 模型和本地模型聊天，可以自定义配置自己喜欢的模型</li>
 	<li><strong>丰富的支持</strong>，支持 MCP、RAG 和插件支持</li>
</ul>
官网：<a href="https://www.ee.chat/zh">https://www.ee.chat/zh</a>
<h2>🖥️ 下载 eecha</h2>
<section></section>
<ul>
 	<li>官网下载：<a href="https://ee.chat">https://ee.chat</a></li>
 	<li>开源下载：<a href="https://github.com/Lucassssss/eechat/releases">https://github.com/Lucassssss/eechat/releases</a></li>
</ul>
<h1>功能介绍</h1>
<h2>对话</h2>
<section></section>基础 AI 对话能力，数据本地存储，支持上下文对话，提示词配置，模型参数配置等。

<img title="" src="https://docs.ee.chat/guide/code.png" alt="" />
<h2>MCP 能力</h2>
<section></section>MCP 功能，支持模型上下文协议，支持模型上下文的存储，支持模型上下文的共享，支持模型上下文的搜索等。

<img title="" src="https://docs.ee.chat/guide/mcp_chat.png" alt="" />

内置 MCP运行环境

<img title="" src="https://docs.ee.chat/guide/mcp_bin.png" alt="" />

内置 MCP 市场及常用工具

<img title="" src="https://docs.ee.chat/guide/mcp_main.png" alt="" />

支持与 Claude Desktop 同步配置

<img title="" src="https://docs.ee.chat/guide/mcp_config.png" alt="" />
<h2>本地模型</h2>
<section></section>支持在自己的电脑上运行开源模型。

<img title="" src="https://docs.ee.chat/guide/apimodel_light.png" alt="" />
<h2>API 模型</h2>
<section></section><img title="" src="https://docs.ee.chat/guide/localmodel_light.png" alt="" />
<h2>本地知识库</h2>
<section></section><img title="" src="https://docs.ee.chat/guide/rag.png" alt="" />
<h3>主要特性</h3>
-

一键集成、管理、运行多种 AI 工具与服务，让 AI 助手能力无限拓展

-

可视化添加新 MCP 应用，支持自动读取 README 或 AI 智能填充配置

-

内置 bun、uv 等运行环境自动检测与一键下载，无需手动配置依赖

-

MCP 工具热插拔，可随时添加、移除、升级，支持多实例并行运行

-

轻松查看、安装、启动、停止和删除各类 AI 工具，无需命令行操作

<img title="" src="https://www.ee.chat/img/mcp_main2.png" alt="" />

<img title="" src="https://www.ee.chat/img/mcp_add2.png" alt="" />
<h3>可视化配置</h3>
提供表单式可视化添加新 MCP 应用，支持自动读取 README 或 AI 智能填充配置，适合零基础用户快速集成新工具。

<img title="" src="https://www.ee.chat/img/mcp_config2.png" alt="" />
<h3>专业文件配置</h3>
内置专业 JSON 配置文件编辑器，支持格式化、重置、目录直达，满足进阶用户批量管理和深度定制需求。与Claude Desktop, Cursor, Cline 配置同步兼容。

<img title="" src="https://www.ee.chat/img/mcp_bin2.png" alt="" />
<h3>集成运行环境</h3>
内置 bun、uv 等运行环境自动检测与一键下载，无需手动配置依赖，保障各类 Node.js/Python 工具即装即用。
<h3>对话工具调用</h3>
所有 MCP 工具均可在聊天窗口直接调用，实现 AI 与工具的无缝协作。

-

对话工具一键开关，随时切换工具状态

-

多工具并行，支持多轮对话

<img title="" src="https://www.ee.chat/img/mcp_chat.png" alt="" />
<h2>支持的模型</h2>
<section></section>eechat 支持广泛的本地和基于 API 的模型，以满足您的需求。
<h3>本地模型</h3>
<h4>LLaVA</h4>
结合视觉编码器和 Vicuna 的多模态模型，用于视觉和语言理解。
<h4>Llama</h4>
各种尺寸的指令调优图像推理生成模型集合。
<h4>DeepSeek</h4>
与 OpenAI-o1 性能相当的第一代推理模型。
<h3>API 模型</h3>
<h4>OpenAI</h4>
连接到 OpenAI 的 GPT 模型，包括 GPT-3.5 和 GPT-4。
<h4>DeepSeek</h4>
通过 API 访问 DeepSeek 强大的语言模型。
<h4>Anthropic</h4>
集成 Anthropic 的 Claude 模型，用于高级推理。
<h4>更多模型</h4>
支持 Gemini、Together、Perplexity 和其他领先的 AI 提供商。

</section>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>AIGC</category>
    </item>
    <item>
      <title>更智能化的自动剪辑-剪映+MCP</title>
      <link>https://noisevip.cn/article/mcp</link>
      <guid isPermaLink="true">https://noisevip.cn/article/mcp</guid>
      <pubDate>Fri, 25 Jul 2025 02:00:00 GMT</pubDate>
      <description><![CDATA[![剪映+MCP](https://s2.loli.net/2025/07/25/HutEmBFAkrsVCYb.png)

自动化的剪辑如今也不是新鲜事了，在早期还是完全需要借助软件，到后来的可批量生产，再到如今的MCP时代，中间隔了很多，但技术是不断进步的，下面的案例只是一个例子，更多的是API]]></description>
      <content:encoded><![CDATA[<p><img src="https://s2.loli.net/2025/07/25/HutEmBFAkrsVCYb.png" alt="剪映+MCP"></p>
<p>自动化的剪辑如今也不是新鲜事了，在早期还是完全需要借助软件，到后来的可批量生产，再到如今的MCP时代，中间隔了很多，但技术是不断进步的，下面的案例只是一个例子，更多的是API的相关调用，今后也会有越来越多的实际例子。</p>
<p>该项目是一个基于Python的剪映/CapCut处理工具，来自《开源大模型食用指南》的作者，运行后可接入AI-MCP</p>
<p>项目地址：<a href="https://github.com/fancyboi999/capcut-mcp">https://github.com/fancyboi999/capcut-mcp</a></p>
<h2>特点</h2>
<ul>
<li><strong>跨平台支持</strong>：同时支持剪映和CapCut国际版</li>
<li><strong>自动化处理</strong>：支持批量处理和自动化工作流</li>
<li><strong>丰富的API</strong>：提供全面的API接口，方便集成到其他系统</li>
<li><strong>灵活的配置</strong>：通过配置文件实现灵活的功能定制</li>
<li><strong>AI增强</strong>：集成多种AI服务，提升视频制作效率</li>
</ul>
<h3>核心功能</h3>
<ul>
<li><strong>草稿文件管理</strong>：创建、读取、修改和保存剪映/CapCut草稿文件</li>
<li><strong>素材处理</strong>：支持视频、音频、图片、文本、贴纸等多种素材的添加和编辑</li>
<li><strong>特效应用</strong>：支持添加转场、滤镜、蒙版、动画等多种特效</li>
<li><strong>API服务</strong>：提供HTTP API接口，支持远程调用和自动化处理</li>
<li><strong>AI集成</strong>：集成多种AI服务，支持智能生成字幕、文本和图像</li>
</ul>
<h3>主要API接口</h3>
<ul>
<li><code>/create_draft</code>创建草稿</li>
<li><code>/add_video</code>：添加视频素材到草稿</li>
<li><code>/add_audio</code>：添加音频素材到草稿</li>
<li><code>/add_image</code>：添加图片素材到草稿</li>
<li><code>/add_text</code>：添加文本素材到草稿</li>
<li><code>/add_subtitle</code>：添加字幕到草稿</li>
<li><code>/add_effect</code>：添加特效到素材</li>
<li><code>/add_sticker</code>：添加贴纸到草稿</li>
<li><code>/save_draft</code>：保存草稿文件</li>
</ul>
<h2>配置说明</h2>
<h3>配置文件</h3>
<p>项目支持通过配置文件进行自定义设置。要使用配置文件：</p>
<ol>
<li>复制<code>config.json.example</code>为<code>config.json</code></li>
<li>根据需要修改配置项</li>
</ol>
<pre><code>cp config.json.example config.json
</code></pre>
<h3>环境</h3>
<h4>ffmpeg</h4>
<p>本项目依赖于ffmpeg，您需要确保系统中已安装ffmpeg，并且将其添加到系统的环境变量中。</p>
<h4>Python环境</h4>
<p>本项目需要 Python 3.8.20 版本，请确保您的系统已安装正确版本的 Python。</p>
<h4>安装依赖</h4>
<p>安装项目所需的依赖包：</p>
<pre><code>pip install -r requirements.txt
</code></pre>
<h3>运行服务器</h3>
<p>完成配置和环境设置后，执行以下命令启动服务器：</p>
<pre><code>python main.py
</code></pre>
<p>服务器启动后，您可以通过 API 接口访问相关功能。</p>
<h2>Api</h2>
<h3>添加视频</h3>
<pre><code>import requests

response = requests.post(&quot;http://localhost:9000/add_video&quot;, json={
    &quot;video_url&quot;: &quot;http://example.com/video.mp4&quot;,
    &quot;start&quot;: 0,
    &quot;end&quot;: 10,
    &quot;width&quot;: 1080,
    &quot;height&quot;: 1920
})

print(response.json())
</code></pre>
<h3>添加文本</h3>
<pre><code>import requests

response = requests.post(&quot;http://localhost:9000/add_text&quot;, json={
    &quot;text&quot;: &quot;你好，世界！&quot;,
    &quot;start&quot;: 0,
    &quot;end&quot;: 3,
    &quot;font&quot;: &quot;思源黑体&quot;,
    &quot;font_color&quot;: &quot;#FF0000&quot;,
    &quot;font_size&quot;: 30.0
})

print(response.json())
</code></pre>
<h3>保存草稿</h3>
<pre><code>import requests

response = requests.post(&quot;http://localhost:9000/save_draft&quot;, json={
    &quot;draft_id&quot;: &quot;123456&quot;,
    &quot;draft_folder&quot;:&quot;your capcut draft folder&quot;
})

print(response.json())
</code></pre>
<h3>复制草稿到剪映/capcut草稿路径</h3>
<p>调用<code>save_draft</code>会在服务器当前目录下生成一个<code>dfd_</code>开头的文件夹，将他复制到剪映/CapCut草稿目录，即可看到生成的草稿</p>
<h3>配置使用MCP</h3>
<p>在cursor中配置使用MCP，在cursor的设置中，添加MCP服务器，地址为<code>http://localhost:9001/mcp</code>，然后就可以在cursor中使用MCP了。</p>
<p>在Claude配置中添加以下内容：</p>
<pre><code>{
    &quot;mcpServers&quot;: {
        &quot;capcut-mcp&quot;: {
            &quot;type&quot;: &quot;http&quot;,
            &quot;url&quot;: &quot;http://localhost:9000/mcp&quot;
        }
    }
}
</code></pre>
<h2>代码说明</h2>
<p>config.json示例配置文件</p>
<p>你可以配置oss，也可以不配置，但配置后更方便，运行后一切都在云端完成。</p>
<pre><code>{
  &quot;is_capcut_env&quot;: true,
  &quot;draft_domain&quot;: &quot;https://www.install-ai-guider.top&quot;,
  &quot;port&quot;: 9001,
  &quot;preview_router&quot;: &quot;/draft/downloader&quot;,
  &quot;is_upload_draft&quot;: false,
  &quot;oss_config&quot;: {
    &quot;bucket_name&quot;: &quot;your-bucket-name&quot;,
    &quot;access_key_id&quot;: &quot;your-access-key-id&quot;,
    &quot;access_key_secret&quot;: &quot;your-access-key-secret&quot;,
    &quot;endpoint&quot;: &quot;https://your-endpoint.aliyuncs.com&quot;
  },
  &quot;mp4_oss_config&quot;: {
    &quot;bucket_name&quot;: &quot;your-mp4-bucket-name&quot;,
    &quot;access_key_id&quot;: &quot;your-access-key-id&quot;,
    &quot;access_key_secret&quot;: &quot;your-access-key-secret&quot;,
    &quot;region&quot;: &quot;your-region&quot;,
    &quot;endpoint&quot;: &quot;http://your-custom-domain&quot;
  }
}
</code></pre>
<p>其中oss_config、mp4_oss_config均为阿里云OSS的配置，你可以在官方<a href="https://oss.console.aliyun.com/overview">https://oss.console.aliyun.com/overview</a> 处设置查看相关参数</p>
<p><code>is_upload_draft</code>参数为是否开启草稿上传到oss，默认关闭</p>
<p>如果你还没有OSS可以自行创建</p>
<p><img src="https://s2.loli.net/2025/07/25/JFWKGAdbX6ogeHi.png" alt=""></p>
<p>OSS产品定价可访问<a href="https://www.aliyun.com/price/product?spm=5176.8465980.console-base_help.2.21241450iOuDbH#/oss/detail/ossbag">https://www.aliyun.com/price/product?spm=5176.8465980.console-base_help.2.21241450iOuDbH#/oss/detail/ossbag</a> 查看</p>
<p>创建成功后可查看endpoint地址或在oss设置中查看</p>
<p><img src="https://s2.loli.net/2025/07/25/qxwdOfupZTJMNEg.png" alt="1753447542128"></p>
<p>bucket_name为创建的oss名称</p>
<p>access_key_id、access_key_secret可点击右上角头像处查看</p>
<p><img src="https://s2.loli.net/2025/07/25/EXFYKHbASTsce4x.png" alt="截屏2025-07-25 20.50.19"></p>
<h2>运行</h2>
<p>然后运行<code>pip install -r requirements.txt</code></p>
<p><img src="https://s2.loli.net/2025/07/25/jhdfB7UqGsACOVP.png" alt="1753448269908"></p>
<h2>启动</h2>
<pre><code>python3 main.py
</code></pre>
<p><img src="https://s2.loli.net/2025/07/25/Kq1z3NwV24JDmvb.png" alt="1753448345646"></p>
<p><img src="https://s2.loli.net/2025/07/25/Kq1z3NwV24JDmvb.png" alt="1753448345646"></p>
<p><img src="https://s2.loli.net/2025/07/25/CPKmT2fuqD34SiI.png" alt="1753448403116"></p>
<p>以trae为例添加mcp</p>
<p><img src="https://s2.loli.net/2025/07/25/FUMATpO5mJu317n.jpg" alt=" 2025_07_25_21_03_49"></p>
<p>效果</p>
<p><img src="https://s2.loli.net/2025/07/25/odRKtamWCLcf6BQ.png" alt="1753449078341"></p>
<p><img src="https://s2.loli.net/2025/07/25/LoMAidlVNm3IqT1.png" alt="1753451838821"></p>
<p><img src="https://s2.loli.net/2025/07/25/yIqT31MX9BtKbO2.png" alt="1753451087725"></p>
<p>你可以在你的oss中下载该草稿，不过随便要求的效果可能真的不咋地，不过好在ai可以不断完善</p>
<p>下载该文件后可直接放入剪映的草稿中进行再次编辑，剪映草稿的位置可点击全局设置找到草稿位置。</p>
<p>注：如果你不启用OSS，可以使用原项目代码中的draft_domain，则</p>
<p><img src="https://s2.loli.net/2025/07/25/IH3N5O1v9lygVRm.png" alt="1753451359332"></p>
<p>推荐启动OSS。</p>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>探索发现</category>
    </item>
    <item>
      <title>又一个免费静态全球托管服务-sevalla</title>
      <link>https://noisevip.cn/article/sevalla</link>
      <guid isPermaLink="true">https://noisevip.cn/article/sevalla</guid>
      <pubDate>Fri, 25 Jul 2025 00:00:00 GMT</pubDate>
      <description><![CDATA[应用程序托管允许您将应用程序从源代码直接部署到 Sevalla 基础设施上。您还可以使用 管道 完全自动化此过程，并将源代码中的更改无缝推送到 QA 和生产环境，而无需重新构建应用程序。在 Sevalla 的应用程序托管上下文中，应用程序是服务器执行的一组指令，用于执行一项或多项任务。我们当前的基础设施旨在通过应用程序]]></description>
      <content:encoded><![CDATA[<p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/07/20/fG5eENF7MKi6wOz.png" alt="1753000405907"></p><p>应用程序托管允许您将应用程序从源代码直接部署到 Sevalla 基础设施上。您还可以使用<a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="https://docs.sevalla.com/applications/get-started/pipelines">管道</a>完全自动化此过程，并将源代码中的更改无缝推送到 QA 和生产环境，而无需重新构建应用程序。在 Sevalla 的应用程序托管上下文中，应用程序是服务器执行的一组指令，用于执行一项或多项任务。我们当前的基础设施旨在通过应用程序后面的服务器来服务和支持应用程序的部署。</p><p>官网：<a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="https://sevalla.com">https://sevalla.com</a></p><h2>你可以用 Sevalla 做什么？</h2><ul class="pl-2 list-disc my-2"><li><p>从 GitHub、GitLab、Bitbucket 或直接从 Docker 注册表部署<strong>应用程序</strong></p></li><li><p>一键设置 MySQL、PostgreSQL、MariaDB 或 Redis 等<strong>数据库</strong></p></li><li><p><strong>创建管道</strong>以管理环境（开发、QA、生产）</p></li><li><p>每个拉取请求的<strong>预览环境</strong></p></li><li><p>免费<strong>部署静态站点</strong></p></li></ul><p>预览图</p><p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/07/20/hNnya3s7C9tO5Do.png" alt="1753000516370"></p><p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/07/20/A6df2YRrEheWILM.png" alt="1753000608664"></p><p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/07/20/YM2QmaKlRhBuGSP.png" alt="1753000608664"></p>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>探索发现</category>
    </item>
    <item>
      <title>跨平台云盘挂载本地客户端-OpenList Desktop</title>
      <link>https://noisevip.cn/article/openlist-desktop</link>
      <guid isPermaLink="true">https://noisevip.cn/article/openlist-desktop</guid>
      <pubDate>Sat, 19 Jul 2025 03:36:07 GMT</pubDate>
      <description><![CDATA[OpenList Desktop是一个为 OpenList (Alist) 和 Rclone 设计的跨平台桌面客户端。它提供了一个现代化且用户友好的图形界面，帮助您轻松管理 Alist 服务和 Rclone 云盘挂载，无需记忆和输入繁琐的命令行指令。

开源地址：https://gith]]></description>
      <content:encoded><![CDATA[<section id="wenyan" class="preview" data-provider="WenYan"><img title="" src="https://s2.loli.net/2025/07/19/xpmdkjCZyo3fbzL.png" alt="" />

OpenList Desktop是一个为 <a href="https://github.com/OpenListTeam/OpenList">OpenList (Alist)</a> 和 <a href="https://rclone.org/">Rclone</a> 设计的跨平台桌面客户端。它提供了一个现代化且用户友好的图形界面，帮助您轻松管理 Alist 服务和 Rclone 云盘挂载，无需记忆和输入繁琐的命令行指令。

开源地址：<a href="https://github.com/qianye216/OpenList-Desktop">https://github.com/qianye216/OpenList-Desktop</a>

安卓开源：<a href="https://github.com/LeoHaoVIP/AListLiteAndroid">https://github.com/LeoHaoVIP/AListLiteAndroid</a>
<h2>✨ 功能特性</h2>
<section></section>
<ul>
 	<li><strong>Alist 服务管理</strong>: 轻松启动、停止和重启 Alist 服务。</li>
 	<li><strong>Rclone 核心服务</strong>: 管理 Rclone 的核心 <code>rcd</code> 服务，为所有挂载操作提供支持。</li>
 	<li><strong>参数化配置</strong>: 为 Alist 和 Rclone 提供图形化的启动参数配置界面。</li>
 	<li><strong>云盘挂载</strong>: 通过 Rclone 的 HTTP API 创建和管理云盘挂载，将云存储映射为本地磁盘。</li>
 	<li><strong>系统集成</strong>: 支持系统托盘，并可在 macOS 上隐藏 Dock 图标，实现真正的后台运行。</li>
 	<li><strong>开机自启</strong>: 可配置应用随系统启动，并支持静默启动。</li>
 	<li><strong>自动更新</strong>: 内置应用本身、Alist 和 Rclone 的更新检查器。</li>
 	<li><strong>个性化主题</strong>: 支持浅色、深色和跟随系统设置的主题，并允许自定义主题色。</li>
</ul>
<h2>🖼️ 截图</h2>
<section></section><img title="" src="https://s2.loli.net/2025/07/19/xP62M1E8nSlwdRO.png" alt="" />

<img title="" src="https://s2.loli.net/2025/07/19/CP4UWGQVDNT6K5E.png" alt="" />

<img title="" src="https://s2.loli.net/2025/07/19/zfmxhUuwd4Q2rsD.png" alt="" />

<img title="" src="https://s2.loli.net/2025/07/19/98DPvByo6CVZRQ4.png" alt="" />
<h2>🚀 安装与使用</h2>
<section></section>
<h3>1. 下载应用</h3>
GitHub Releases：<a href="https://github.com/qianye216/OpenList-Desktop/releases">https://github.com/qianye216/OpenList-Desktop/releases</a>

云盘：<a href="https://pan.quark.cn/s/684aeec7bd88">https://pan.quark.cn/s/684aeec7bd88</a>
<h3>2. 准备依赖</h3>
<h4>Rclone 挂载先决条件</h4>
为了使用 Rclone 的挂载功能，您需要预先安装以下依赖：
<ul>
 	<li><strong>Windows</strong>: 安装 <a href="https://winfsp.dev/rel/">WinFsp</a> (Windows File System Proxy)。</li>
 	<li><strong>macOS</strong>: 安装 <a href="https://osxfuse.github.io/">macFUSE</a>。</li>
 	<li><strong>Linux</strong>: 通过您的包管理器安装 <code>fuse</code>。例如，在 Debian/Ubuntu 上运行 <code>sudo apt-get install fuse</code>。</li>
</ul>
<h4>Alist &amp; Rclone 可执行文件</h4>
将您下载的 <code>alist</code> (或 <code>openlist</code>) 和 <code>rclone</code> 可执行文件放置在您电脑的任意目录中。
<h3>3. 配置应用</h3>
<ol>
 	<li>首次运行 <strong>OpenList Desktop</strong>。</li>
 	<li>导航到 <strong>设置</strong> -&gt; <strong>OpenList设置</strong>。</li>
 	<li>点击 <strong>工作目录</strong> 旁的 "选择" 按钮，选择您存放 <code>alist</code> 可执行文件的文件夹。</li>
 	<li>导航到 <strong>设置</strong> -&gt; <strong>Rclone设置</strong>。</li>
 	<li>点击 <strong>工作目录</strong> 旁的 "选择" 按钮，选择您存放 <code>rclone</code> 可执行文件的文件夹。</li>
 	<li>完成配置后，您就可以在主页和挂载页面启动并管理相关服务了。</li>
</ol>
<h2>🏗️ 项目结构</h2>
<section></section>
<pre><code>root
|  main.py                (入口脚本)
|  requirements.txt         (依赖文件)
|
└─app
    ├─common                (通用模块: 配置, 信号总线, 工具函数等)
    ├─components            (自定义UI组件)
    ├─resource              (资源文件: 图标, qss, 国际化文件)
    ├─services              (核心服务: Alist和Rclone管理器)
    └─view                  (界面视图: 主窗口, 各子界面)
</code></pre>
</section>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>资源分享</category>
    </item>
    <item>
      <title>小红书AI辅助创作插件-RedConvert</title>
      <link>https://noisevip.cn/article/ai-redconvert</link>
      <guid isPermaLink="true">https://noisevip.cn/article/ai-redconvert</guid>
      <pubDate>Sat, 19 Jul 2025 02:00:00 GMT</pubDate>
      <description><![CDATA[![Pleasenote](https://s2.loli.net/2025/07/19/WyRsCIZ1vo4dank.png)

这是一个 Chrome 扩展，支持在小红书笔记页面一键下载当前笔记的标题、正文和所有图片，并打包成 ZIP 文件保存到本地，还支持 AI 智能仿写、OCR 图片内容提]]></description>
      <content:encoded><![CDATA[<p><img src="https://s2.loli.net/2025/07/19/WyRsCIZ1vo4dank.png" alt="Pleasenote"></p>
<p>这是一个 Chrome 扩展，支持在小红书笔记页面一键下载当前笔记的标题、正文和所有图片，并打包成 ZIP 文件保存到本地，还支持 AI 智能仿写、OCR 图片内容提取、自动检查更新等功能。所有操作均在浏览器端完成，无需后端。</p>
<p>开源：<a href="https://github.com/Jamailar/RedConvert">https://github.com/Jamailar/RedConvert</a></p>
<p>云盘下载：<a href="https://pan.quark.cn/s/15736c1e986c">https://pan.quark.cn/s/15736c1e986c</a></p>
<hr>
<p><img src="https://s2.loli.net/2025/07/18/p49xaDhYMPQZv5o.png" alt="1752820507130"></p>
<h2>功能特性</h2>
<ul>
<li>一键抓取当前小红书笔记的标题、正文、图片，打包为 ZIP 下载</li>
<li>支持 AI 智能仿写（可自定义 API、模型、领域、风格、个性化等）</li>
<li>支持 OCR 图片内容提取（跳转外部表单）</li>
<li>自动检测扩展新版本并提醒下载</li>
<li>设置页支持 API Key、模型名、领域、改写要求、风格、个性化等持久化保存</li>
<li>现代美观的 UI，所有设置和操作均在弹窗内完成</li>
<li>支持 Chrome 浏览器（Manifest V3）</li>
</ul>
<hr>
<p><img src="https://s2.loli.net/2025/07/18/Y53CEgaLeVxDNZA.png" alt="1752820596834"></p>
<h2>安装与本地开发</h2>
<p>🎥 点击查看视频演示：</p>
<p><a href="https://www.bilibili.com/video/BV1RwTxzaEAJ">👉 在 Bilibili 上观看</a></p>
<h3>1. 准备工作</h3>
<ul>
<li>前往 <a href="https://github.com/Jamailar/RedConvert/releases/latest">Releases 页面</a> 下载最新的 zip 包</li>
<li>解压 zip 包到本地任意文件夹</li>
</ul>
<h3>2. 本地加载扩展</h3>
<ol>
<li>打开 Chrome，访问 <code>chrome://extensions/</code></li>
<li>右上角开启&quot;开发者模式&quot;</li>
<li>点击&quot;加载已解压的扩展程序&quot;</li>
<li>选择刚刚解压的文件夹（包含 manifest.json 的文件夹）</li>
<li>成功后会看到扩展图标出现在工具栏</li>
</ol>
<h3>3. 使用方法</h3>
<h4>3.1 下载小红书笔记</h4>
<ol>
<li>登录小红书网页版，打开任意一条笔记页面（URL 形如 <code>https://www.xiaohongshu.com/discovery/item/xxxxxx</code>）</li>
<li>点击浏览器右上角的扩展图标</li>
<li>弹窗会显示当前笔记标题和&quot;一键打包下载&quot;按钮</li>
<li>点击按钮，扩展会自动抓取内容并打包 ZIP，浏览器会自动下载</li>
<li>下载完成后，解压 ZIP 可查看 TXT 文本和所有图片</li>
</ol>
<h4>3.2 AI 智能仿写</h4>
<ol>
<li>在弹窗点击&quot;AI文字仿写&quot;按钮，自动提取当前笔记内容并调用 AI 接口生成仿写内容</li>
<li>首次使用前请点击左下角&quot;设置&quot;按钮，填写：<ul>
<li>AI 接口端口（API Base URL）</li>
<li>API Key</li>
<li>模型名（可通过&quot;测试&quot;按钮自动获取模型列表）</li>
<li>目标领域、改写要求、模仿语气风格、个性化（可选）</li>
</ul>
</li>
<li>设置内容会自动保存，下次打开自动回显</li>
<li>仿写结果支持一键复制</li>
</ol>
<h4>3.3 OCR 图片内容提取</h4>
<ol>
<li>点击&quot;提取图片内容（OCR）&quot;按钮，会跳转到外部表单页面进行图片内容提取</li>
</ol>
<h4>3.4 自动检查更新</h4>
<ul>
<li>每次打开弹窗时会自动检查 GitHub 最新版本，如有新版本会在底部弹出红色横幅提醒，点击即可跳转下载</li>
</ul>
<hr>
<h2>设置项说明</h2>
<ul>
<li><strong>API Base URL</strong>：如 <code>https://api.openai.com/v1</code> 或自定义后端</li>
<li><strong>API Key</strong>：你的 OpenAI 或兼容服务的密钥</li>
<li><strong>模型名</strong>：如 <code>gpt-3.5-turbo</code>，可通过&quot;测试&quot;按钮自动获取</li>
<li><strong>目标领域</strong>：如&quot;母婴&quot;、&quot;健身&quot;、&quot;教育&quot;等</li>
<li><strong>改写要求</strong>：如&quot;风格更口语化，突出卖点...&quot;</li>
<li><strong>模仿语气风格</strong>：可粘贴示例内容，AI 会模仿其语气</li>
<li><strong>个性化</strong>：填写作者个人信息，AI 会参考其经历和知识库进行创作</li>
</ul>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>资源分享</category>
    </item>
    <item>
      <title>MAC上的虚拟桌面宠物器-Vpet</title>
      <link>https://noisevip.cn/article/mac-vpet</link>
      <guid isPermaLink="true">https://noisevip.cn/article/mac-vpet</guid>
      <pubDate>Sat, 19 Jul 2025 02:00:00 GMT</pubDate>
      <description><![CDATA[![1752921628221](https://s2.loli.net/2025/07/19/TkDRbUjrLiogzN9.png)

这是一个二次开发的项目，整合了原版的动画及打包制作了MAC安装包，它可以出现在你的系统桌面的任何地方，也会随互动有特定的动作，还蛮有意思的

项目地址：http]]></description>
      <content:encoded><![CDATA[<p><img src="https://s2.loli.net/2025/07/19/TkDRbUjrLiogzN9.png" alt="1752921628221"></p>
<p>这是一个二次开发的项目，整合了原版的动画及打包制作了MAC安装包，它可以出现在你的系统桌面的任何地方，也会随互动有特定的动作，还蛮有意思的</p>
<p>项目地址：<a href="https://github.com/justaLoli/VPet-Mac">https://github.com/justaLoli/VPet-Mac</a></p>
<p>云盘：<a href="https://pan.quark.cn/s/62596470429a">https://pan.quark.cn/s/62596470429a</a></p>
<h2>功能：</h2>
<p>✅ 开始、关闭、正常效果的动画播放</p>
<p>✅ 拖动效果</p>
<p>✅ 「互动」菜单里的互动，即睡觉、学习、工作等（带计时器，但没有经验、金钱加成）</p>
<p>✅ 自动事件（发呆、待机、睡觉等）</p>
<p>✅ 桌宠自动移动</p>
<p>✅ 摸头</p>
<h2>预览</h2>
<p><img src="https://s2.loli.net/2025/07/19/7xwrSIO3d5QGBHA.png" alt="截屏2025-07-19 15.36.02"></p>
<p><img src="https://s2.loli.net/2025/07/19/Cdi3UpsBtDHKA5g.png" alt="截屏2025-07-19 15.36.51"></p>
<p><img src="https://s2.loli.net/2025/07/19/82sE9eLD3BoUhmd.png" alt="截屏2025-07-19 15.37.55"></p>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>探索发现</category>
    </item>
    <item>
      <title>开源软件精选-跨平台轻量小宇宙播客桌面版</title>
      <link>https://noisevip.cn/article/3120</link>
      <guid isPermaLink="true">https://noisevip.cn/article/3120</guid>
      <pubDate>Fri, 18 Jul 2025 02:00:00 GMT</pubDate>
      <description><![CDATA[![screenshot_01](https://s2.loli.net/2025/07/18/B1sa4iQCGUNjm79.png)

horizon使用 [wails](https://wails.io/) + [react](https://react.dev/) 构建的第三方小宇宙桌面客户]]></description>
      <content:encoded><![CDATA[<p><img src="https://s2.loli.net/2025/07/18/B1sa4iQCGUNjm79.png" alt="screenshot_01"></p>
<p>horizon使用 <a href="https://wails.io/">wails</a> + <a href="https://react.dev/">react</a> 构建的第三方小宇宙桌面客户端，</p>
<p>开源：<a href="https://github.com/ultrazg/horizon">https://github.com/ultrazg/horizon</a></p>
<h2>特征</h2>
<p>跨平台支持 Windows 和 MacOS</p>
<p>轻量精简，大小不足10M</p>
<p>界面美观，得益于 <a href="https://react.dev/">react</a> 特性，运行十分流畅</p>
<h2>下载</h2>
<p>仓库：<a href="https://github.com/ultrazg/horizon/releases">https://github.com/ultrazg/horizon/releases</a></p>
<p>云盘：<a href="https://pan.quark.cn/s/d95076b12aab">https://pan.quark.cn/s/d95076b12aab</a></p>
<h2>预览</h2>
<p><img src="https://s2.loli.net/2025/07/18/smI5pYrEOM87HeW.png" alt="screenshot_06"></p>
<p><img src="https://s2.loli.net/2025/07/18/mrQj5xCOPK9ZVpR.png" alt="screenshot_04"></p>
<p><img src="/Users/noise/Downloads/screenshot_03.png" alt="screenshot_03"></p>
<p><img src="https://s2.loli.net/2025/07/18/op73TV1bILFUyrX.png" alt="screenshot_02"></p>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>资源分享</category>
    </item>
    <item>
      <title>开源软件精选-不足20M的跨平台桌面记事本应用</title>
      <link>https://noisevip.cn/article/20m</link>
      <guid isPermaLink="true">https://noisevip.cn/article/20m</guid>
      <pubDate>Fri, 18 Jul 2025 02:00:00 GMT</pubDate>
      <description><![CDATA[![1752651534074](https://s2.loli.net/2025/07/16/aZ1lcGmWqgAC5MJ.png)

一个现代化的跨平台桌面记事本应用，基于Flask + PyWebView开发，提供原生桌面体验。

开源：https://github.com/jom111-1]]></description>
      <content:encoded><![CDATA[<p><img src="https://s2.loli.net/2025/07/16/aZ1lcGmWqgAC5MJ.png" alt="1752651534074"></p>
<p>一个现代化的跨平台桌面记事本应用，基于Flask + PyWebView开发，提供原生桌面体验。</p>
<p>开源：<a href="https://github.com/jom111-111/notebook-app">https://github.com/jom111-111/notebook-app</a>
网盘下载：<a href="https://pan.quark.cn/s/180b4b338ee0">https://pan.quark.cn/s/180b4b338ee0</a></p>
<h2>✨ 功能特性</h2>
<ul>
<li>🖥️ <strong>原生桌面应用</strong>: 基于PyWebView的真正桌面应用体验</li>
<li>🌍 <strong>跨平台支持</strong>: Windows和macOS原生支持</li>
<li>🔌 <strong>无需联网</strong>: 完全离线运行，数据本地存储</li>
<li>📝 <strong>笔记管理</strong>: 创建、编辑、删除笔记</li>
<li>🔍 <strong>全文搜索</strong>: 快速找到需要的笔记内容</li>
<li>🏷️ <strong>标签系统</strong>: 为笔记添加标签，便于分类管理</li>
<li>⭐ <strong>收藏功能</strong>: 标记重要笔记</li>
<li>🌙 <strong>深色主题</strong>: 现代化的深色界面设计</li>
<li>💾 <strong>自动保存</strong>: 每30秒自动保存编辑内容</li>
<li>⌨️ <strong>快捷键</strong>: 支持Ctrl+S保存、Ctrl+N新建等快捷键</li>
<li>📱 <strong>响应式</strong>: 界面自适应不同窗口尺寸</li>
<li>🔒 <strong>数据隔离</strong>: 每个用户的数据独立存储</li>
<li>🚀 <strong>即开即用</strong>: 绿色软件，无需安装</li>
</ul>
<h2>📦 数据存储</h2>
<h3>Windows</h3>
<pre><code>%USERPROFILE%\.notebook_app\notes.db
</code></pre>
<h3>macOS/Linux</h3>
<pre><code>~/.notebook_app/notes.db
</code></pre>
<p>用户数据安全地存储在用户主目录中，<strong>完全离线运行，无需联网</strong>。多用户环境下数据完全隔离，保护隐私安全。</p>
<p><img src="https://s2.loli.net/2025/07/16/ZXST7yQaEUbhoA6.png" alt="1752651992527"></p>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>资源分享</category>
    </item>
    <item>
      <title>Fast3d-高精准AI快速生成3D模型器</title>
      <link>https://noisevip.cn/article/fast3d-ai-3d</link>
      <guid isPermaLink="true">https://noisevip.cn/article/fast3d-ai-3d</guid>
      <pubDate>Fri, 18 Jul 2025 02:00:00 GMT</pubDate>
      <description><![CDATA[![1752826418073](https://s2.loli.net/2025/07/18/y1k3Q275nhNZLED.png)

Fast3D是一个可以让你使用AI几秒内生成3D模型的新产品，同时支持图片或文字描述来生成

官网：https://fast3d.io/zh

![175282]]></description>
      <content:encoded><![CDATA[<p><img src="https://s2.loli.net/2025/07/18/y1k3Q275nhNZLED.png" alt="1752826418073"></p>
<p>Fast3D是一个可以让你使用AI几秒内生成3D模型的新产品，同时支持图片或文字描述来生成</p>
<p>官网：<a href="https://fast3d.io/zh">https://fast3d.io/zh</a></p>
<p><img src="https://s2.loli.net/2025/07/18/9uiLvkQFsZo7SlM.png" alt="1752824585126"></p>
<h2>特征</h2>
<ul>
<li><h3>免费体验3D生成</h3>
<p>立即免费试用，体验从文本或图像快速生成高质量3D模型。</p>
</li>
<li><h3>同时支持 文生3D和图生3D</h3>
<p>多模态输入支持，从文本或图像直接生成3D模型，支持定制风格，操作更简单。</p>
</li>
<li><h3>10秒生成</h3>
<p>10秒内用文本、单图、多视图生成3D模型，可自定义多种风格，操作简单。</p>
</li>
<li><h3>高精度几何生成</h3>
<p>精确的几何形状生成，保证模型结构的准确性和真实感，提供专业级模型质量。</p>
</li>
<li><h3>应用领域广泛</h3>
<p>支持游戏、3D打印、AR/VR、元宇宙、产品设计等多个行业领域，提供全格式网格模型。</p>
</li>
</ul>
<p><img src="https://s2.loli.net/2025/07/18/fXOC1YIJGEuSmBH.png" alt="1752824367416"></p>
<h2>高精度几何生成</h2>
<p>利用先进技术生成高精度几何形状，实现对各种细节的精细且准确的呈现，无论是复杂的纹理结构还是精细的轮廓线，都展现出令人印象深刻的真实效果和精致纹理</p>
<p><img src="https://s2.loli.net/2025/07/18/wKzNP8M5qROplTJ.png" alt="1752824353709"></p>
<h3>图片生成案例</h3>
<p>不带纹理</p>
<p><img src="https://s2.loli.net/2025/07/18/4QMzTpCVN6fljSo.png" alt="1752825116051"></p>
<p><video width="100%" height="100%"  src="https://static.codemao.cn/bcx/SJYTlFPUge.webm?hash=FqIwnQfDlwCkhFwH-8agnjBBwO8C"  controls loop></video></p>
<p>带纹理</p>
<p><img src="https://s2.loli.net/2025/07/18/wyPnAN5rgXIcxlJ.png" alt="1752825469003"></p>
<p><video width="100%" height="100%"  src="https://static.codemao.cn/bcx/rykmWFPUgg.webm?hash=FojDc8h1UFqYML8p09yUsj0hIpwI"  controls loop></video></p>
<h2>定价</h2>
<p><img src="https://s2.loli.net/2025/07/18/CIwU3DEvPalmdMb.png" alt="1752826184604"></p>
<p>每个免费账户可每月循环使用1000点数，其它价格还可以</p>
<p>已生成的模型你可以在我的资产中找到</p>
<p><img src="https://s2.loli.net/2025/07/18/Ez3QRP8pGZq1e4B.png" alt="1752826291668"></p>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>探索发现</category>
    </item>
    <item>
      <title>🔥AI时代神器！Revornix让你的资讯管理效率翻倍！🚀</title>
      <link>https://noisevip.cn/article/ai-revornix</link>
      <guid isPermaLink="true">https://noisevip.cn/article/ai-revornix</guid>
      <pubDate>Wed, 16 Jul 2025 00:00:00 GMT</pubDate>
      <description><![CDATA[这是一个集合了文档知识库、智能解析、AI助手、mcp、用户专栏等功能的现代化工具



官网：https://revornix.com/zh

目前该工具还处于不断完善中，你可以访问官网来查看最新开发状态及加入官方社群,下方来源于官方介绍
功能特性


 	跨平台可用：当]]></description>
      <content:encoded><![CDATA[<p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/07/16/MnAYzv12dpJPoDX.png" alt="" title=""> 这是一个集合了文档知识库、智能解析、AI助手、mcp、用户专栏等功能的现代化工具 <img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/07/16/Q72BLJAXFbKTPfG.png" alt="" title=""> 官网：<a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="https://revornix.com/zh">https://revornix.com/zh</a> 目前该工具还处于不断完善中，你可以访问官网来查看最新开发状态及加入官方社群,下方来源于官方介绍</p><h2>功能特性</h2><ul class="pl-2 list-disc my-2"><li><p>跨平台可用：当前支持网页端，后续将会支持iOS端APP和微信小程序。</p></li><li><p>一站资讯收集：一站式资讯收集，包括新闻、博客、论坛等。</p></li><li><p>文档转化&amp;向量化存储：基于多模态大模型，将文件转化为Markdown，经过Embedding后存入行业top级别领先的milvus。</p></li><li><p>原生多租户：设计成了一个多租户系统，可以支持多个用户同时使用，并且每个用户都可以拥有自己的文档库，彼此独立。</p></li><li><p>本地化&amp;开源：代码开源，所有数据均存储在本地，无需担心数据泄露问题。</p></li><li><p>智能助手&amp;内置MCP：基于内置MCP的智能AI助手能够与你基于文档和其他工具进行对话，并支持多模型切换。</p></li><li><p>大模型无缝接入：内置模型接入口，你可以自由配置与选择想使用的大模型。（需要基于openai协议）</p></li><li><p>多语言&amp;响应式：无论你是中文用户还是英文用户，无论你是使用手机还是电脑，都能获得良好的使用体验。</p></li></ul><h2>Docker 方式</h2><h3>克隆仓库到本地</h3><pre><code>git&nbsp;clone&nbsp;git@github.com:Qingyon-AI/Revornix.gitcd&nbsp;Revornix
</code></pre><h3>环境变量配置</h3><pre><code>cp&nbsp;./envs/.api.env.example&nbsp;./envs/.api.envcp&nbsp;./envs/.file.env.example&nbsp;./envs/.file.envcp&nbsp;./envs/.celery.env.example&nbsp;./envs/.celery.envcp&nbsp;./envs/.hot.env.example&nbsp;./envs/.hot.envcp&nbsp;./envs/.mcp.env.example&nbsp;./envs/.mcp.envcp&nbsp;./envs/.web.env.example&nbsp;.env
</code></pre><p>前往对应的环境变量文件配置，详情见<a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="https://revornix.com/zh/docs/environment">环境变量配置篇章</a> 💡 一般情况下，你仅仅只需要配置用户认证机制的<code>SECRET_KEY</code>这一参数，其他参数保持默认即可。注意不同服务的<code>SECRET_KEY</code>必须保持一致，否则会导致不同服务之间的用户认证体系无法互通。</p><h3>docker 拉取必要仓库并启动</h3><pre><code>docker&nbsp;compose&nbsp;up&nbsp;-d
</code></pre><p>当所有服务均启动之后，访问 <a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="http://localhost/">http://localhost </a> 即可看到前端页面，注意由于后端服务启动时间较长，前端可能需要等待一段时间（正常情况下为 3-5 分钟左右）才能正常请求接口，可以通过<code>docker compose logs api</code>查看核心后端服务启动状态。</p><h2>手动部署方式</h2><p>除非你需要自己修改部分源码适配自定义功能，否则不建议使用这种。流程确实会比较复杂。 💡 强烈建议使用 conda 针对每个服务创建不同的 python 虚拟环境，因为不同服务之间的 python 依赖可能存在冲突。当然如果你有别的python虚拟环境管理工具，也可以使用别的。</p><h3>克隆仓库到本地</h3><pre><code>git&nbsp;clone&nbsp;git@github.com:Qingyon-AI/Revornix.gitcd&nbsp;Revornix
</code></pre><h3>环境变量配置</h3><pre><code>cp&nbsp;./envs/.api.env.example&nbsp;./api/.envcp&nbsp;./envs/.file.env.example&nbsp;./file-backend/.envcp&nbsp;./envs/.celery.env.example&nbsp;./celery-worker/.envcp&nbsp;./envs/.hot.env.example&nbsp;./daily-hot/.envcp&nbsp;./envs/.mcp.env.example&nbsp;./mcp-server/.envexport&nbsp;ENV=dev
</code></pre><p>前往对应的环境变量文件配置，详情见<a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="https://revornix.com/zh/docs/environment">环境变量配置篇章</a></p><h3>初始化一些必要的数据</h3><pre><code>cd&nbsp;apipython&nbsp;-m&nbsp;script.init_vector_base_datapython&nbsp;-m&nbsp;script.init_sql_base_data
</code></pre><h3>安装并且启动基础服务</h3><p>💡 如果你没有安装mysql和redis以及milvus，那么你需要手动在本地安装这些服务，并修改环境变量文件中的对应参数配置。 考虑到这些属于比较麻烦且不重要的工作，我特地做了一个<code>docker-compose-local.yaml</code>文件，你可以直接使用这个文件下载并且启动这些服务。 ⚠️ 注意：如果你本地已经安装了其中的部分服务，请按照你的实际情况在<code>docker-compose-local.yaml</code>文件中关闭对应的服务配置，否则可能会引起一些意料之外的情况。</p><pre><code>docker&nbsp;compose&nbsp;-f&nbsp;./docker-compose-local.yaml&nbsp;up&nbsp;-d&nbsp;
</code></pre><h3>启动核心后端服务</h3><pre><code>cd&nbsp;apiconda&nbsp;create&nbsp;-n&nbsp;api&nbsp;python=3.11&nbsp;-ypip&nbsp;install&nbsp;-r&nbsp;./requirements.txtfastapi&nbsp;run&nbsp;--port&nbsp;8001
</code></pre><h3>启动MCP服务端服务</h3><pre><code>cd&nbsp;mcp-serverconda&nbsp;create&nbsp;-n&nbsp;mcp-server&nbsp;python=3.11&nbsp;-ypip&nbsp;install&nbsp;-r&nbsp;./requirements.txtfastapi&nbsp;run&nbsp;--port&nbsp;8003
</code></pre><h3>启动热搜聚集服务</h3><pre><code>cd&nbsp;daily-hotpnpm&nbsp;i&nbsp;pnpm&nbsp;dev
</code></pre><h3>启动文件后端服务</h3><pre><code>cd&nbsp;file-backendconda&nbsp;create&nbsp;-n&nbsp;file-backend&nbsp;python=3.11&nbsp;-ypip&nbsp;install&nbsp;-r&nbsp;./requirements.txtfastapi&nbsp;run&nbsp;--port&nbsp;8002
</code></pre><h3>启动 celery 任务序列</h3><pre><code>cd&nbsp;celery-workerconda&nbsp;create&nbsp;-n&nbsp;celery-worker&nbsp;python=3.11&nbsp;-ypip&nbsp;install&nbsp;-r&nbsp;./requirements.txtcelery&nbsp;-A&nbsp;common.celery.app.celery_app&nbsp;worker&nbsp;--loglevel=info&nbsp;--pool&nbsp;threads
</code></pre><h3>启动前端服务</h3><pre><code>cd&nbsp;webpnpm&nbsp;ipnpm&nbsp;dev
</code></pre><p>当你将所有服务均启动之后，访问 <a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="http://localhost:3000/">http://localhost:3000 </a> 即可看到前端页面</p><h1>仪表盘</h1><p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/07/16/C9dwRu2K6lyxb7n.png" alt="" title=""></p><h1>账户体系</h1><p>由于Revornix原生支持多租户，也就是说，你的每个用户都可以拥有自己的账户，并且拥有自己的专栏。 如果你想，Revornix可以不仅仅是一个你自己的文档库，他可以是一个知识社区，而这也是我真正想最终打造成的样子—— <strong>一个高质量的知识社区。</strong> 这也是我想花大精力上线云版本的原因之一，我想做一个范例出来，让知识的流转变得轻松简单。</p><h2>用户主页</h2><p>每个用户都有一个自己的主页，可以在这里看到TA的专栏列表。当前我只设置允许浏览头像、昵称、个性签名、专栏、粉丝以及关注，后续也会视情况进行一定改动。 <img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/07/16/m2NbcVjJk8s1yad.png" alt="" title=""> 你可以关注TA，也可以在TA的专栏中留言。</p><h2>账户设置</h2><p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/07/16/57qMl6phTJWiBzK.png" alt="" title=""> 为了让社区体系更完整，我对应的开发了用户的账户设置体系，你可以点击界面左下角的用户头像-&gt;账户进入账户设置页面，在这里你可以设置自己的头像、昵称、个性签名。</p><h1>文档</h1><p>本系统支持多类型文档来源，当前支持如下：网站文档，速记文档，文件分析。 <img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/07/16/aHLUvtf2wN9Q5uJ.png" alt="" title=""></p><h2>文档收录</h2><p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/07/16/b9igLwYMXIev1yk.png" alt="" title=""> 有多种收录文档、资讯的方式，其中最简单的方式也是最直白的方式就是通过网站端的增加文档。</p><h1>文档解析引擎</h1><p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/07/16/m5hMi7xnZL1ESNu.png" alt="" title=""> 在<code>v0.2.0</code>及之后的版本里，文档转化引擎将可以由用户自行决定，而不再局限于MinerU（文件）/Jina（网站）。具体配置页面入口在<strong>设置-&gt;引擎管理</strong>。</p><h1>热搜</h1><p>本项目的热搜集结功能基于<a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="https://github.com/imsyy/DailyHotApi">DailyHotApi </a> <img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/07/16/lZE4UAHokLFs2qy.png" alt="" title=""></p><h1>MCP</h1><p>在<code>v0.1.0</code>及以后的版本，均已内部集成了MCP客户端，你可以通过设置中的MCP管理轻松配置MCP服务端。 <img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/07/16/7JZGBgAxRPkVLwH.png" alt="" title=""></p><h1>通知管理</h1><p>现在你可以在设置页面内通过简单的配置将通知功能集成到你的系统中。 <img class="max-w-full rounded-md my-2" src="https://qingyon-revornix-public.oss-cn-beijing.aliyuncs.com/images/202507012144925.png" alt="" title=""><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/07/16/HwvIXMckF7Oy3Kr.png" alt="" title=""> 注意你需要先配置通知源和通知目标。 <img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/07/16/N8o3XHPUZws5zd9.png" alt="" title=""> 其中通知源是你的发送信息的源系统，比如邮件源、飞书、企业微信、Apple APNS、短信服务提供商等，通知目标则是你的接收信息的终端，比如飞书、企业微信、邮件、设备等。</p><h1>自定义模型</h1><p>本系统支持自定义模型，但注意当前仅支持符合openai协议的模型。 <img class="max-w-full rounded-md my-2" src="https://qingyon-revornix-public.oss-cn-beijing.aliyuncs.com/images/202507031514832.png" alt="" title=""></p><h1>Revornix AI</h1><p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/07/16/vb2i5B89kE3mIYL.png" alt="" title=""> 本项目内置集成了文档向量化和MCP客户端/服务端。 基于这一点，Revornix AI具备了主动思考并和你的文档交互的能力。同时也可以通过增加MCP Server接口的方式来和其他所有支持MCP的服务交互。</p><h1>专栏</h1><p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/07/16/L5B3uH6IPSMJsDW.png" alt="" title=""></p><hr><p>基础工作流程图 <img class="max-w-full rounded-md my-2" src="https://qingyon-revornix-public.oss-cn-beijing.aliyuncs.com/images/202507021546517.svg" alt="" title=""></p>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>AIGC</category>
    </item>
    <item>
      <title>Mailman - 智能邮件管理系统</title>
      <link>https://noisevip.cn/article/mailman</link>
      <guid isPermaLink="true">https://noisevip.cn/article/mailman</guid>
      <pubDate>Wed, 16 Jul 2025 00:00:00 GMT</pubDate>
      <description><![CDATA[Mailman 是一个功能强大的现代化邮件管理系统，提供邮件同步、智能解析、触发器自动化和AI助手等功能。支持多种邮件协议，具有直观的Web界面和强大的后端API。

开源：https://github.com/seongminhwan/mailman

## 🚀 主要特性

### 📧 邮件管]]></description>
      <content:encoded><![CDATA[<p>Mailman 是一个功能强大的现代化邮件管理系统，提供邮件同步、智能解析、触发器自动化和AI助手等功能。支持多种邮件协议，具有直观的Web界面和强大的后端API。</p><p>开源：<a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="https://github.com/seongminhwan/mailman">https://github.com/seongminhwan/mailman</a></p><h2>🚀 主要特性</h2><h3>📧 邮件管理</h3><ul class="pl-2 list-disc my-2"><li><p><strong>多账户支持</strong>：管理多个邮件账户（Gmail、Outlook、IMAP等）</p></li><li><p><strong>OAuth2认证</strong>：支持Gmail、Outlook等OAuth2安全认证</p></li><li><p><strong>实时同步</strong>：自动同步邮件，支持增量同步和定时同步</p></li><li><p><strong>智能解析</strong>：自动解析邮件内容，提取关键信息和附件</p></li><li><p><strong>全局搜索</strong>：强大的全局邮件搜索，支持高级过滤和实时搜索</p></li><li><p><strong>邮件提取</strong>：智能提取邮件中的结构化数据</p></li><li><p><strong>邮件工具</strong>：丰富的邮件处理工具集</p></li></ul><h3>🤖 AI集成</h3><ul class="pl-2 list-disc my-2"><li><p><strong>多AI支持</strong>：支持OpenAI、Claude、Gemini等多种AI提供商</p></li><li><p><strong>数据库配置</strong>：通过Web界面灵活配置和管理AI服务</p></li><li><p><strong>智能提取</strong>：使用AI提取邮件中的结构化数据和关键信息</p></li><li><p><strong>模板生成</strong>：AI助手生成邮件提取模板和处理规则</p></li><li><p><strong>内容分析</strong>：智能分析邮件内容，提取业务数据</p></li><li><p><strong>可视化配置</strong>：拖拽式AI配置界面，无需编程知识</p></li></ul><h3>⚡ 自动化功能</h3><ul class="pl-2 list-disc my-2"><li><p><strong>触发器系统</strong>：基于条件的邮件处理自动化</p></li><li><p><strong>定时任务</strong>：邮件同步和处理的定时调度</p></li><li><p><strong>事件监听</strong>：实时监听邮件事件</p></li><li><p><strong>工作流管理</strong>：复杂的邮件处理工作流</p></li></ul><h3>🛡️ 安全特性</h3><ul class="pl-2 list-disc my-2"><li><p><strong>多重认证</strong>：支持用户名密码、OAuth2等多种认证方式</p></li><li><p><strong>OAuth2集成</strong>：完整的OAuth2流程，支持Gmail、Outlook等主流邮件服务</p></li><li><p><strong>会话管理</strong>：安全的用户会话管理和自动过期机制</p></li><li><p><strong>数据加密</strong>：敏感数据加密存储，API密钥安全管理</p></li><li><p><strong>权限控制</strong>：基于角色的访问控制和细粒度权限管理</p></li><li><p><strong>安全传输</strong>：HTTPS/WSS加密通信</p></li></ul><h2>界面预览</h2><h3>主界面</h3><p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/07/16/KxW68gqM1rvPXhL.png" alt="仪表板"></p><h3>邮件账户管理</h3><p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/07/16/IEc9b6sSAyrYBL3.png" alt="邮箱账户管理"></p><h2>邮件管理</h2><p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/07/16/ElnYhPxkDvo4z6B.png" alt="邮件管理"></p><h2>同步配置</h2><p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/07/16/VdpiQtoTPRnf82s.png" alt="同步配置"></p><h2>邮件监听和提取</h2><p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/07/16/KOE74dPVmQLn5aR.png" alt="取件"></p><h2>邮件取件模板</h2><p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/07/16/NjUJIsdziRhVeq3.png" alt="取件模板"></p><h3>AI助手</h3><p><img class="max-w-full rounded-md my-2" src="https://s2.loli.net/2025/07/16/834QwVC1XBKOZph.png" alt="AI示例"></p><h2>🚀 快速开始</h2><h3>环境要求</h3><ul class="pl-2 list-disc my-2"><li><p><strong>Go</strong>: 1.23+</p></li><li><p><strong>Node.js</strong>: 18+</p></li><li><p><strong>MySQL</strong>: 8.0+</p></li><li><p><strong>Docker</strong>: 最新版本（推荐）</p></li><li><p><strong>Docker Compose</strong>: 最新版本</p></li></ul><p>Mailman支持多种部署方式，满足不同场景的需求：</p><h3>快速开始 (推荐)</h3><p>使用Docker All-in-One镜像，一键启动完整系统：</p><pre><code>docker run -d \
  --name mailman \
  -p 3000:3000 \
  -v mailman_data:/app/data \
  mailman:latest
</code></pre><h3>使用Docker Compose部署（推荐）</h3><p>克隆项目</p><pre><code>git clone https://github.com/seongminhwan/mailman.git
cd mailman
</code></pre><p>配置环境变量</p><pre><code>cp .env.example .env
# 编辑.env文件，设置必要的环境变量
</code></pre><p>启动服务</p><pre><code>docker-compose up -d
</code></pre><p>访问应用</p><ul class="pl-2 list-disc my-2"><li><p>前端界面：<a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="http://localhost/">http://localhost:80</a></p></li><li><p>后端API：<a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="http://localhost:8080/">http://localhost:8080</a></p></li><li><p>API文档：<a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="http://localhost:8080/swagger/index.html">http://localhost:8080/swagger/index.html</a></p></li></ul><h3>使用All-in-One镜像部署</h3><p>All-in-One镜像包含了完整的前端和后端服务，是最简单的部署方式。</p><p>使用SQLite数据库（推荐）</p><pre><code># 基础部署 - 使用SQLite数据库
docker run -d \
  --name mailman \
  -p 80:80 \
  -p 8080:8080 \
  -v mailman_data:/app \
  ghcr.io/seongminhwan/mailman-all:latest
</code></pre><p>数据持久化配置</p><p>为了确保数据持久化，建议使用以下配置：</p><pre><code># 创建数据目录
mkdir -p ./data

# 运行容器并挂载数据目录
docker run -d \
  --name mailman \
  -p 80:80 \
  -p 8080:8080 \
  -v $(pwd)/data:/app \
  -e DB_DRIVER=sqlite \
  -e DB_NAME=/app/mailman.db \
  ghcr.io/seongminhwan/mailman-all:latest
</code></pre><p>使用MySQL数据库</p><pre><code># 连接外部MySQL数据库
docker run -d \
  --name mailman \
  -p 80:80 \
  -p 8080:8080 \
  -e DB_DRIVER=mysql \
  -e DB_HOST=your_mysql_host \
  -e DB_PORT=3306 \
  -e DB_USER=your_mysql_user \
  -e DB_PASSWORD=your_mysql_password \
  -e DB_NAME=mailman \
  ghcr.io/seongminhwan/mailman-all:latest
</code></pre><p>完整配置示例</p><pre><code># 包含所有常用配置的完整示例
docker run -d \
  --name mailman \
  -p 80:80 \
  -p 8080:8080 \
  -v $(pwd)/data:/app \
  -e DB_DRIVER=sqlite \
  -e DB_NAME=/app/mailman.db \
  # -e OPENAI_API_KEY=your-openai-api-key \  # 已废弃，现在通过Web界面配置AI服务
  -e LOG_LEVEL=INFO \
  --restart unless-stopped \
  ghcr.io/seongminhwan/mailman-all:latest
</code></pre><p>重要注意事项</p><p>⚠️ <strong>数据库文件挂载注意事项</strong>：</p><ol class="pl-2 list-decimal my-2"><li><p><strong>数据目录权限</strong>：确保挂载的数据目录有正确的读写权限</p></li><li><p><strong>SQLite文件位置</strong>：SQLite数据库文件默认保存在 <code>/app/mailman.db</code></p></li><li><p><strong>数据备份</strong>：定期备份 <code>/app</code> 目录中的数据文件</p></li><li><p><strong>容器更新</strong>：更新容器时，数据目录挂载确保数据不丢失</p></li></ol><p>📋 <strong>端口说明</strong>：</p><ul class="pl-2 list-disc my-2"><li><p><code>80</code>: 前端Web界面</p></li><li><p><code>8080</code>: 后端API服务</p></li></ul><p>🔧 <strong>环境变量配置</strong>：</p><ul class="pl-2 list-disc my-2"><li><p><code>DB_DRIVER</code>: 数据库类型（<code>sqlite</code> 或 <code>mysql</code>）</p></li><li><p><code>DB_NAME</code>: 数据库名称或SQLite文件路径</p></li><li><p><code>OPENAI_API_KEY</code>: OpenAI API密钥（已废弃，现在通过Web界面配置AI服务）</p></li><li><p><code>LOG_LEVEL</code>: 日志级别（DEBUG, INFO, WARN, ERROR）</p></li></ul><h3>本地开发部署</h3><p>后端部署</p><p>进入后端目录</p><pre><code>cd backend
</code></pre><p>安装依赖</p><pre><code>go mod download
</code></pre><p>配置数据库</p><pre><code># 启动MySQL数据库
docker run -d --name mailman-mysql \
  -e MYSQL_ROOT_PASSWORD=rootpassword \
  -e MYSQL_DATABASE=mailman \
  -e MYSQL_USER=mailman \
  -e MYSQL_PASSWORD=mailmanpassword \
  -p 3306:3306 \
  mysql:8.0
</code></pre><p>设置环境变量</p><pre><code>export DB_HOST=localhost
export DB_PORT=3306
export DB_USER=mailman
export DB_PASSWORD=mailmanpassword
export DB_NAME=mailman
# export OPENAI_API_KEY=your-openai-api-key  # 已废弃，现在通过Web界面配置AI服务
</code></pre><p>运行后端服务</p><pre><code>go run cmd/mailman/main.go
</code></pre><p>前端部署</p><p>进入前端目录</p><pre><code>cd frontend
</code></pre><p>安装依赖</p><pre><code>npm install
</code></pre><p>配置环境变量</p><pre><code>cp .env.local.example .env.local
# 编辑.env.local文件设置API地址
</code></pre><p>启动开发服务器</p><pre><code>npm run dev
</code></pre><h3>生产环境部署</h3><p>构建前端</p><pre><code>cd frontend
npm run build
</code></pre><p>构建后端</p><pre><code>cd backend
go build -o mailman cmd/mailman/main.go
</code></pre><p>使用生产配置</p><pre><code>docker-compose -f docker-compose.yml up -d
</code></pre><h2>⚙️ 配置说明</h2><h3>环境变量</h3><p>数据库配置</p><pre><code>DB_DRIVER=mysql
DB_HOST=localhost
DB_PORT=3306
DB_USER=mailman
DB_PASSWORD=mailmanpassword
DB_NAME=mailman
DB_SSLMODE=disable
</code></pre><p>AI服务配置</p><p>⚠️ <strong>重要变更</strong>：AI服务配置已改为通过Web界面管理，不再使用环境变量。</p><p>部署完成后，请通过前端界面配置AI服务：</p><ol class="pl-2 list-decimal my-2"><li><p>登录到前端界面</p></li><li><p>进入"设置"或"AI配置"页面</p></li><li><p>添加您的AI服务提供商配置（OpenAI、Claude、Gemini等）</p></li><li><p>设置API密钥、基础URL和模型等参数</p></li></ol><p>服务器配置</p><pre><code>SERVER_HOST=0.0.0.0
SERVER_PORT=8080
LOG_LEVEL=INFO
</code></pre><h3>邮件账户配置</h3><p>支持的邮件协议：</p><ul class="pl-2 list-disc my-2"><li><p><strong>IMAP</strong>: Gmail, Outlook, Yahoo Mail等</p></li><li><p><strong>Exchange</strong>: Microsoft Exchange Server</p></li><li><p><strong>POP3</strong>: 传统POP3协议</p></li></ul><p>配置示例：</p><pre><code>{
  "provider": "gmail",
  "email": "user@gmail.com",
  "password": "app-password",
  "imap_host": "imap.gmail.com",
  "imap_port": 993,
  "smtp_host": "smtp.gmail.com",
  "smtp_port": 587,
  "use_tls": true
}
</code></pre><h2>📚 API文档</h2><h3>Swagger文档</h3><p>启动后端服务后，可访问：</p><ul class="pl-2 list-disc my-2"><li><p><strong>URL</strong>: <a target="_blank" rel="noopener noreferrer" class="text-blue-500 underline cursor-pointer hover:text-blue-700" href="http://localhost:8080/swagger/index.html">http://localhost:8080/swagger/index.html</a></p></li><li><p><strong>格式</strong>: OpenAPI 3.0</p></li></ul><h3>主要API端点</h3><p>认证相关</p><ul class="pl-2 list-disc my-2"><li><p><code>POST /api/auth/login</code> - 用户登录</p></li><li><p><code>POST /api/auth/logout</code> - 用户登出</p></li><li><p><code>GET /api/auth/user</code> - 获取用户信息</p></li></ul><p>邮件账户</p><ul class="pl-2 list-disc my-2"><li><p><code>GET /api/accounts</code> - 获取邮件账户列表</p></li><li><p><code>POST /api/accounts</code> - 添加邮件账户</p></li><li><p><code>PUT /api/accounts/{id}</code> - 更新邮件账户</p></li><li><p><code>DELETE /api/accounts/{id}</code> - 删除邮件账户</p></li></ul><p>邮件管理</p><ul class="pl-2 list-disc my-2"><li><p><code>GET /api/emails</code> - 获取邮件列表</p></li><li><p><code>GET /api/emails/{id}</code> - 获取邮件详情</p></li><li><p><code>POST /api/emails/sync</code> - 同步邮件</p></li><li><p><code>POST /api/emails/search</code> - 全局邮件搜索</p></li><li><p><code>GET /api/emails/search/global</code> - 高级全局搜索</p></li><li><p><code>POST /api/emails/extract</code> - 邮件数据提取</p></li><li><p><code>GET /api/emails/stats</code> - 邮件统计信息</p></li></ul><p>触发器</p><ul class="pl-2 list-disc my-2"><li><p><code>GET /api/triggers</code> - 获取触发器列表</p></li><li><p><code>POST /api/triggers</code> - 创建触发器</p></li><li><p><code>PUT /api/triggers/{id}</code> - 更新触发器</p></li><li><p><code>DELETE /api/triggers/{id}</code> - 删除触发器</p></li></ul><p>OAuth2认证</p><ul class="pl-2 list-disc my-2"><li><p><code>GET /api/oauth2/providers</code> - 获取支持的OAuth2提供商</p></li><li><p><code>POST /api/oauth2/authorize</code> - 发起OAuth2授权</p></li><li><p><code>GET /api/oauth2/callback/{provider}</code> - OAuth2回调处理</p></li><li><p><code>POST /api/oauth2/refresh</code> - 刷新访问令牌</p></li><li><p><code>DELETE /api/oauth2/revoke</code> - 撤销授权</p></li></ul><p>AI功能</p><ul class="pl-2 list-disc my-2"><li><p><code>GET /api/ai/config</code> - 获取AI配置列表</p></li><li><p><code>POST /api/ai/config</code> - 创建AI配置</p></li><li><p><code>PUT /api/ai/config/{id}</code> - 更新AI配置</p></li><li><p><code>DELETE /api/ai/config/{id}</code> - 删除AI配置</p></li><li><p><code>POST /api/ai/config/{id}/test</code> - 测试AI配置</p></li><li><p><code>POST /api/ai/extract</code> - AI内容提取</p></li><li><p><code>POST /api/ai/template/generate</code> - AI生成提取模板</p></li><li><p><code>GET /api/ai/templates</code> - 获取AI模板列表</p></li></ul><p>同步配置</p><ul class="pl-2 list-disc my-2"><li><p><code>GET /api/sync/config</code> - 获取同步配置</p></li><li><p><code>POST /api/sync/config</code> - 创建同步配置</p></li><li><p><code>PUT /api/sync/config/{id}</code> - 更新同步配置</p></li><li><p><code>POST /api/sync/start</code> - 启动邮件同步</p></li><li><p><code>POST /api/sync/stop</code> - 停止邮件同步</p></li></ul><h2>🔧 功能使用指南</h2><h3>添加邮件账户</h3><ol class="pl-2 list-decimal my-2"><li><p>登录系统后，点击"账户管理"</p></li><li><p>点击"添加账户"按钮</p></li><li><p>选择邮件提供商（Gmail、Outlook等）</p></li><li><p>输入邮件地址和认证信息</p></li><li><p>测试连接并保存</p></li></ol><h3>配置OAuth2认证</h3><ol class="pl-2 list-decimal my-2"><li><p>进入"设置" → "OAuth2配置"</p></li><li><p>选择邮件提供商（Gmail、Outlook等）</p></li><li><p>填写OAuth2应用信息：</p><ul class="pl-2 list-disc my-2"><li><p>客户端ID (Client ID)</p></li><li><p>客户端密钥 (Client Secret)</p></li><li><p>重定向URI</p></li></ul></li><li><p>保存配置并测试连接</p></li><li><p>完成OAuth2授权流程</p></li></ol><h3>配置AI服务</h3><ol class="pl-2 list-decimal my-2"><li><p>进入"设置" → "AI配置"</p></li><li><p>点击"添加AI配置"</p></li><li><p>选择AI提供商（OpenAI、Claude、Gemini）</p></li><li><p>填写配置信息：</p><ul class="pl-2 list-disc my-2"><li><p>配置名称</p></li><li><p>API密钥</p></li><li><p>模型名称（可选）</p></li><li><p>API端点（可选）</p></li></ul></li><li><p>测试配置连接</p></li><li><p>设置为默认AI服务（可选）</p></li></ol><h3>全局邮件搜索</h3><ol class="pl-2 list-decimal my-2"><li><p>在顶部导航栏找到搜索框</p></li><li><p>输入搜索关键词</p></li><li><p>使用高级搜索选项：</p><ul class="pl-2 list-disc my-2"><li><p>发件人过滤</p></li><li><p>时间范围</p></li><li><p>邮件状态</p></li><li><p>账户筛选</p></li></ul></li><li><p>查看搜索结果并进行操作</p></li></ol><h3>邮件同步管理</h3><ol class="pl-2 list-decimal my-2"><li><p>进入"邮件" → "同步管理"</p></li><li><p>配置同步设置：</p><ul class="pl-2 list-disc my-2"><li><p>同步频率（实时/定时）</p></li><li><p>同步范围（全量/增量）</p></li><li><p>邮件数量限制</p></li></ul></li><li><p>启动自动同步</p></li><li><p>监控同步状态和日志</p></li></ol><h3>使用AI功能</h3><ol class="pl-2 list-decimal my-2"><li><p>在邮件详情页面，点击"AI助手"</p></li><li><p>选择AI功能：</p><ul class="pl-2 list-disc my-2"><li><p>内容提取：提取邮件中的关键信息</p></li><li><p>智能分类：自动分类邮件类型</p></li><li><p>内容摘要：生成邮件摘要</p></li><li><p>模板生成：创建提取模板</p></li></ul></li><li><p>配置AI参数和提示词</p></li><li><p>执行AI分析并查看结果</p></li><li><p>保存或应用AI处理结果</p></li></ol><p></p>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>探索发现</category>
    </item>
    <item>
      <title>铁路12306抢票独家秘籍！自动化➕AI MCP让你轻松搞定⽕⻋票！</title>
      <link>https://noisevip.cn/article/12306-ai-mcp</link>
      <guid isPermaLink="true">https://noisevip.cn/article/12306-ai-mcp</guid>
      <pubDate>Tue, 15 Jul 2025 02:00:00 GMT</pubDate>
      <description><![CDATA[![123](https://s2.loli.net/2025/07/15/jkTnWB1m5O6M32h.png)

火车票难买？抢票难？不存在的，除了多年前大家熟知的BypassBypass程序，现在可以更快更便捷的查票买票，快来跟着试试新时代买票查票的技能吧！

## python自动化一键买]]></description>
      <content:encoded><![CDATA[<p><img src="https://s2.loli.net/2025/07/15/jkTnWB1m5O6M32h.png" alt="123"></p>
<p>火车票难买？抢票难？不存在的，除了多年前大家熟知的BypassBypass程序，现在可以更快更便捷的查票买票，快来跟着试试新时代买票查票的技能吧！</p>
<h2>python自动化一键买票</h2>
<p><img src="https://s2.loli.net/2025/07/15/Mj3IDclb5WJ6fUS.png" alt="1752563940068"></p>
<p>该项目通过使用 Selenium 和 Python 自动化实现了12306网站的火车票预定。它能自动完成登录、验证码处理、座位选择等步骤，帮助用户高效抢票</p>
<p>项目地址：<a href="https://github.com/jjh-ui/Auto_train_ticket_grabbing">https://github.com/jjh-ui/Auto_train_ticket_grabbing</a></p>
<p>演示</p>
<p><video width="100%" height="100%"  src="https://static.codemao.cn/bcx/B1WfHsQLlx.mp4?hash=lnAvDrHPQC7TiV4EHwRDBbLAZJ15"  controls loop></video></p>
<p>运行该项目需要在机器上安装 Python。同时，你还需要安装以下库：</p>
<p>安装所需的 Python 库： pip install selenium==4.31.0</p>
<p>克隆该项目或下载文件：</p>
<pre><code>git clone https://github.com/yourusername/railway-ticket-booking.git
</code></pre>
<h4>配置</h4>
<p>在运行程序之前，确保在根目录下的 account_information.txt 文件中提供你的账户信息。</p>
<p>文件格式如下： username=你的用户名 password=你的密码 id=身份证后四位</p>
<p>如果不配置则可根据弹出的浏览器使用扫码登录</p>
<p>而在代码中你需要事先修改起点站和终点站及时间信息</p>
<h2><img src="https://s2.loli.net/2025/07/15/Z61F42mNbrvJ5Ex.png" alt="1752564156184">使用</h2>
<p>python3 buy.py 程序会自动打开浏览器窗口并执行以下步骤：</p>
<p>登录到你的 12306 账户。</p>
<p>等待直到设定的预定时间（你可以在脚本中修改这个时间）。</p>
<p>自动选择车次和乘客。</p>
<p>完成购票过程。</p>
<p>运行时会根据设置的查询次数来完成查询</p>
<p><img src="https://s2.loli.net/2025/07/15/7d8ODzJ6xosy3Up.png" alt="1752563994023"></p>
<p>注意：该项目预设了购票为学生票，你可在在代码122行选择乘客处修改相关乘客元素</p>
<h2>12306-MCP服务</h2>
<p>12306 MCP Server 是一个基于 Model Context Protocol (MCP) 的高性能火车票查询后端系统。它通过标准化接口提供官方 12306 的实时数据服务，包括余票查询、车站信息、列车经停站、中转换乘方案等核心功能。</p>
<p>项目地址：<a href="https://github.com/drfccv/mcp-server-12306">https://github.com/drfccv/mcp-server-12306</a></p>
<h2><img src="https://s2.loli.net/2025/07/15/cmbVMZ7r64A5aKX.png" alt="1752571728560">本地一键部署</h2>
<pre><code># 克隆项目
git clone https://github.com/drfccv/12306-mcp-server.git
cd 12306-mcp-server

# 安装依赖
uv sync

# 更新车站信息（必须先执行）
uv run python scripts/update_stations.py

# 启动服务器
uv run python scripts/start_server.py
</code></pre>
<h3>Docker 部署</h3>
<pre><code># 直接拉取已构建镜像
 docker pull drfccv/12306-mcp-server:latest

# 运行容器（映射8000端口）
 docker run -d -p 8000:8000 --name 12306-mcp-server drfccv/12306-mcp-server:latest
</code></pre>
<blockquote>
<p>如需自定义开发或本地修改后再打包，可用如下命令自行构建镜像：</p>
<pre><code>docker build -t drfccv/12306-mcp-server:latest .
</code></pre>
</blockquote>
<h3>配置</h3>
<p>复制 <code>.env.example</code> 为 <code>.env</code> 并按需修改：</p>
<pre><code>cp .env.example .env
</code></pre>
<hr>
<h2>🤖 API &amp; 工具一览</h2>
<h3>MCP 客户端配置示例</h3>
<pre><code>{
  &quot;mcpServers&quot;: {
    &quot;12306&quot;: {
      &quot;url&quot;: &quot;http://localhost:8000/mcp&quot;
    }
  }
}
</code></pre>
<p><img src="https://s2.loli.net/2025/07/15/QDuaJ8SbfjAt3FT.png" alt="1752571445953"></p>
<p><img src="https://s2.loli.net/2025/07/15/XCItFi4jQdeZH95.png" alt="1752574414125"></p>
<p><img src="https://s2.loli.net/2025/07/15/1gzVbdofCyEeODN.png" alt="1752574506226"></p>
<p>总：本身搭建没有过多好讲的，python自动化更多的是抢票购票，而在mcp中更多的则是查询和结合其它AI功能，比如安排更合理的出行等，最后需要说明的是以上全部是在12306官方的基础上完成的，请勿相信除官方外的其它平台</p>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>探索发现</category>
    </item>
    <item>
      <title>让cloudflare更有实际价值，workers Ai 快速上手</title>
      <link>https://noisevip.cn/article/cloudflare-workers-ai</link>
      <guid isPermaLink="true">https://noisevip.cn/article/cloudflare-workers-ai</guid>
      <pubDate>Mon, 14 Jul 2025 02:00:00 GMT</pubDate>
      <description><![CDATA[![workersAi1](https://s2.loli.net/2025/07/14/FPy9mDuilIKWSMf.png)导语：cloudflare多样强大的功能，使得它在网站页面托管，CDN的加速访问等被大家熟知，而我也经常使用它如托管的导航站的备用地址、Workers功能，如tg机器人的]]></description>
      <content:encoded><![CDATA[<p><img src="https://s2.loli.net/2025/07/14/FPy9mDuilIKWSMf.png" alt="workersAi1">导语：cloudflare多样强大的功能，使得它在网站页面托管，CDN的加速访问等被大家熟知，而我也经常使用它如托管的导航站的备用地址、Workers功能，如tg机器人的互动、还有反代等功能，那如今cloudflare还有更值得探索和好玩的功能吗？AI的加入似乎让这个问题有了进一步的解答。下面就以实际的项目部署案例来说明。</p>
<h2>使用MCP外挂</h2>
<p>这是官方新推出的一项外挂，在 Cloudflare 上部署您自己的远程 MCP 服务器，有两个选项：</p>
<ul>
<li><strong>无需身份验证</strong> — 任何人都可以连接和使用服务器（无需登录）。</li>
<li><strong>使用<a href="https://developers.cloudflare.com/agents/guides/remote-mcp-server/#add-authentication">身份验证和授权 </a></strong>— 用户在访问工具之前登录，您可以根据用户的权限控制代理可以调用哪些工具。</li>
</ul>
<h2>开始构建</h2>
<p>项目案例：Telegram频道MCP服务器</p>
<p>项目地址：<a href="https://github.com/wenyuanw/telegram-channel-mcp">https://github.com/wenyuanw/telegram-channel-mcp</a></p>
<p><img src="https://s2.loli.net/2025/07/14/mO9nKzscAGvYdV4.png" alt="1752472582321"></p>
<p>这是一个基于Cloudflare Workers的MCP (Model Context Protocol) 服务器，用于向Telegram频道发送消息。该服务器提供了一个标准化的接口，可以通过MCP协议与AI助手（如Claude Desktop）集成，实现自动化的Telegram频道消息发送功能。</p>
<p><img src="https://s2.loli.net/2025/07/14/EFT3gX7dBatoeAR.png" alt="1752472788720"></p>
<h2>特点</h2>
<ul>
<li>🚀 <strong>基于Cloudflare Workers</strong> - 全球分布式边缘计算，低延迟高性能</li>
<li>🤖 <strong>MCP协议支持</strong> - 与Claude Desktop等AI助手无缝集成</li>
<li>📱 <strong>Telegram Bot集成</strong> - 通过Telegram Bot API发送消息到指定频道</li>
<li>🛡️ <strong>TypeScript开发</strong> - 完整的类型安全保障</li>
<li>⚡ <strong>实时通信</strong> - 支持SSE (Server-Sent Events) 连接</li>
</ul>
<p><strong>功能:</strong></p>
<ul>
<li>自动发送消息到指定的Telegram频道</li>
<li>支持Markdown格式化</li>
<li>返回发送状态确认</li>
</ul>
<h3>前置要求</h3>
<ol>
<li><strong>Cloudflare账户</strong> - 用于部署Workers</li>
<li><strong>Telegram Bot</strong> - 需要创建Bot并获取Token</li>
<li><strong>Telegram频道</strong> - 需要将Bot添加为频道管理员</li>
<li><strong>Node.js</strong> - 本地开发环境</li>
</ol>
<h3>一键部署</h3>
<p><img src="https://camo.githubusercontent.com/dbfce91befb9e3595169aab72f1307a504559b7acc255ba911a0e170b927c485/68747470733a2f2f6465706c6f792e776f726b6572732e636c6f7564666c6172652e636f6d2f627574746f6e" alt="部署到Cloudflare Workers"></p>
<p>使用地址：<a href="https://deploy.workers.cloudflare.com/?url=https://github.com/cloudflare/ai/tree/main/demos/remote-mcp-authless">https://deploy.workers.cloudflare.com/?url=https://github.com/cloudflare/ai/tree/main/demos/remote-mcp-authless</a></p>
<p>部署完成后，你的MCP服务器将在类似 <code>telegram-channel-mcp.&lt;your-account&gt;.workers.dev/sse</code> 的URL上运行。</p>
<h3>环境变量配置</h3>
<p>在 <code>.dev.vars</code> 文件中配置以下环境变量：</p>
<pre><code># Telegram Bot Token (从 @BotFather 获取)
BOT_TOKEN=&quot;your_bot_token_here&quot;

# Telegram频道ID (以-100开头的频道ID)
CHANNEL_ID=&quot;-1001234567890&quot;
</code></pre>
<h4>获取Telegram配置信息</h4>
<ol>
<li><strong>获取Bot Token:</strong><ul>
<li>在Telegram中联系 <a href="https://t.me/BotFather">@BotFather</a></li>
<li>发送 <code>/newbot</code> 创建新Bot</li>
<li>按提示设置Bot名称和用户名</li>
<li>复制获得的Token</li>
</ul>
</li>
<li><strong>获取频道ID:</strong><ul>
<li>将Bot添加为频道管理员</li>
<li>向频道发送任意消息</li>
<li>访问 <code>https://api.telegram.org/bot&lt;BOT_TOKEN&gt;/getUpdates</code></li>
<li>在返回的JSON中找到频道ID（负数，以-100开头）</li>
</ul>
</li>
</ol>
<h3>部署到Cloudflare</h3>
<pre><code># 本地开发
pnpm run dev

# 部署到生产环境
pnpm run deploy

# 设置生产环境变量
wrangler secret put BOT_TOKEN
wrangler secret put CHANNEL_ID
</code></pre>
<h2>与AI助手集成</h2>
<p>添加以下配置：</p>
<pre><code>{
  &quot;mcpServers&quot;: {
    &quot;telegram-channel&quot;: {
      &quot;command&quot;: &quot;npx&quot;,
      &quot;args&quot;: [
        &quot;mcp-remote&quot;,
        &quot;http://localhost:8787/sse&quot;  // or remote-mcp-server-authless.your-account.workers.dev/sse
      ]
    }
  }
}
</code></pre>
<h2>API端点</h2>
<h3><code>/sse</code></h3>
<p>Server-Sent Events连接端点，用于与MCP客户端建立实时通信</p>
<p><code>/mcp</code></p>
<p>标准MCP协议端点</p>
<h2>📝 自定义开发</h2>
<h3>添加新的MCP工具</h3>
<p>在 <code>src/index.ts</code> 的 <code>init()</code> 方法中使用 <code>this.server.tool(...)</code> 添加新工具：</p>
<pre><code>this.server.tool(
  &quot;your-tool-name&quot;,
  {
    parameter: z.string(),
  },
  async ({ parameter }) =&gt; {
    // 你的工具逻辑
    return { content: [{ type: &quot;text&quot;, text: &quot;结果&quot; }] };
  },
);
</code></pre>
<h2>官方文档示例</h2>
<p>示例地址：<a href="https://deploy.workers.cloudflare.com/?url=https://github.com/cloudflare/ai/tree/main/demos/remote-mcp-authless">https://deploy.workers.cloudflare.com/?url=https://github.com/cloudflare/ai/tree/main/demos/remote-mcp-authless</a></p>
<p>这会将您的 MCP 服务器部署到如下所示的 URL： <code>remote-mcp-server-authless.&lt;your-account&gt;.workers.dev/sse</code></p>
<p>或者，您可以使用下面的命令行在本地计算机上创建远程 MCP 服务器：</p>
<pre><code>npm create cloudflare@latest -- my-mcp-server --template=cloudflare/ai/demos/remote-mcp-authless
</code></pre>
<h2>Workers AI使用</h2>
<p>官方介绍视频</p>
<p><a href="https://www.youtube.com/watch?v=l7EwEpZyTpw">https://www.youtube.com/watch?v=l7EwEpZyTpw</a></p>
<p>简要介绍</p>
<p>Workers AI 允许您在 Cloudflare 网络中使用自己的代码运行 AI 模型——无论是来自 Workers、Pages 还是通过 Cloudflare API。它在一个统一平台上与 Vectorize（矢量数据库）、R2（数据湖）和 AI Gateway 紧密集成，以减少工具泛滥。</p>
<h6>优势</h6>
<h5>在边缘部署快速的实时 AI</h5>
<p>使用最新的 GPU 硬件在更靠近用户的地方运行模型，确保应用的低延迟和高性能。</p>
<h5>代管式 AI 推理</h5>
<p>复杂性更低，部署 AI 的速度更快。我们部署、优化、扩展 AI 推理，使您可以集中精力处理构建工作。</p>
<h5>支持最热门的 AI 模型</h5>
<p>使用最新的 AI 模型（Llama、Stable Diffusion、Mistral 等）开发您的应用，以保持竞争优势并提供最佳的用户体验。</p>
<h3>开始使用</h3>
<p>项目案例：使用 Cloudflare Workers 的免费 AI 图像生成 API
项目地址：<a href="https://github.com/saurav-z/free-image-generation-api">https://github.com/saurav-z/free-image-generation-api</a></p>
<p>该项目允许您使用 Cloudflare Workers 部署自己的<strong>免费 AI 图像生成 API</strong>，每天最多可进行 <strong>100,000 次 API 调用</strong> 。使用 Stable Diffusion XL 等强大的模型从文本提示中生成令人惊叹的图像！</p>
<h2>特征</h2>
<ul>
<li>🆓 <strong>每天 100,000 次免费 API 调用</strong> （Cloudflare Workers AI 免费套餐）</li>
<li>⚡ 从文本提示中<strong>快速</strong>生成图像</li>
<li>🛠️ <strong>易于部署</strong> - 无需编码经验</li>
<li>🔒 使用 API 密钥身份验证<strong>进行安全保护</strong></li>
<li>🎯 <strong>提供多种 AI 模型</strong></li>
</ul>
<hr>
<h2>如何运作</h2>
<ul>
<li>📤 使用项目提供的 <code>worker.js</code> 文件部署 Cloudflare Worker</li>
<li>🌐 Worker 公开了一个简单的 API 终端节点，用于生成图像</li>
<li>🔐 您使用自己的 API 密钥进行身份验证</li>
<li>🤖 The Worker 使用 Cloudflare 的免费 AI 模型生成图像</li>
</ul>
<hr>
<h2>部署</h2>
<h3>1.  获取 Cloudflare 帐户</h3>
<ul>
<li>如果您没有 <a href="https://dash.cloudflare.com/sign-up">Cloudflare</a>，请在 Cloudflare 注册</li>
</ul>
<h3>2. 创建一个新的工作程序</h3>
<ul>
<li>转到 <a href="https://dash.cloudflare.com/workers">Cloudflare Workers 仪表板</a></li>
<li>点击 <strong>“Create application”</strong> </li>
<li>选择 <strong>“Create Worker”</strong></li>
<li>给它起个名字，比如 <code>free-image-generation-api</code> </li>
<li>点击 <strong>“Deploy”</strong> 创建一个 Hello World worker</li>
</ul>
<h3>3. 替换 worker 代码</h3>
<ul>
<li>在 worker 编辑器中，将默认的 Hello World 代码替换为此存储库📄中的 <code>worker.js</code> 代码</li>
<li>单击 <strong>“Save and Deploy”</strong> ✅</li>
</ul>
<p>当然你可以通过克隆项目到自己的仓库，然后直接选择导入存储库进行部署</p>
<p><img src="https://s2.loli.net/2025/07/14/6YW7thegspQCX8D.png" alt="1752420730187"></p>
<h3>4. 设置环境变量</h3>
<ul>
<li>在您的工作人员仪表板中，转到 <strong>“Settings”</strong> &gt; <strong>“Variables”</strong> </li>
<li>在 <strong>“Environment Variables（环境变量）”</strong> 下，单击 <strong>“Add variable”（添加变量）</strong> ➕</li>
<li>名称：<code>API_KEY</code> </li>
<li>值：<code>your-secret-api-key</code>（替换为强密钥） </li>
<li>单击 <strong>“Save and Deploy”</strong></li>
</ul>
<h3>5. 启用 Workers AI</h3>
<ul>
<li>在 Cloudflare 仪表板中，转到 <strong>“Workers &amp; Pages”</strong> &gt; <strong>“AI”</strong> </li>
<li>为您的账户启用 Workers AI（免费套餐就足够了）</li>
</ul>
<h3>6. 为worker 添加 AI 绑定</h3>
<ul>
<li>返回工作人员的控制面板</li>
<li>点击 <strong>“设置”</strong>&gt; <strong>“变量”</strong> </li>
<li>向下滚动到 <strong>“Service bindings”</strong> 部分</li>
<li>点击 <strong>“Add binding”</strong> </li>
<li>变量名称：<code>AI</code> </li>
<li>服务：从下拉列表中选择🤖**“Workers AI”**</li>
<li>单击 <strong>“Save and Deploy”</strong> ✅</li>
</ul>
<blockquote>
<p>⚠️ <strong>重要提示：</strong> 如果没有此 AI 绑定，您的工作人员将无法访问 Cloudflare 的 AI 模型！</p>
</blockquote>
<h3>7.  获取URL</h3>
<ul>
<li>可在控制面板📍中找到确切的 URL地址 https://<your-worker-name>.<your-subdomain>.workers.dev</li>
</ul>
<hr>
<h2>用法</h2>
<h3>cURL 示例</h3>
<pre><code>curl -X POST https://&lt;your-worker-name&gt;.&lt;your-subdomain&gt;.workers.dev \
  -H &quot;Authorization: Bearer your-secret-api-key&quot; \
  -H &quot;Content-Type: application/json&quot; \
  -d &#39;{&quot;prompt&quot;: &quot;A cute robot cooking breakfast&quot;}&#39; \
  --output image.jpg
</code></pre>
<h3>JavaScript 示例</h3>
<pre><code>const res = await fetch(&quot;https://&lt;your-worker-name&gt;.&lt;your-subdomain&gt;.workers.dev&quot;, {
  method: &quot;POST&quot;,
  headers: {
    &quot;Authorization&quot;: &quot;Bearer your-secret-api-key&quot;,
    &quot;Content-Type&quot;: &quot;application/json&quot;,
  },
  body: JSON.stringify({ prompt: &quot;A futuristic city in the clouds&quot; }),
});
const blob = await res.blob();
const img = document.createElement(&quot;img&quot;);
img.src = URL.createObjectURL(blob);
img.style.height = &quot;500px&quot;;
document.body.appendChild(img);
</code></pre>
<p>对我来说Workers AI更多的解决了中间件及AI代理的问题，比如，使用它来转换多个不同模型格式的问题或使用上述项目将API带入到其它平台来使用。如下图中使用N8N和TG的示例</p>
<p><img src="https://s2.loli.net/2025/07/13/9Wk36dKhlvszwHc.jpg" alt="workflow"></p>
<p>workers Ai实际使用中就是一个可以直接部署调用的云端Ai代理，这个代理很多的是参与API的通信和你的其它项目的联动</p>
<hr>
<p>上述通过实际案例来进一步使用cloudflare的AI相关功能，对多数人而言，它让AI开发部署变的更简单直接，当然如有对workers Ai的基础搭建有疑问可以自行查阅官方文档（地址：<a href="https://developers.cloudflare.com/workers-ai/%EF%BC%89">https://developers.cloudflare.com/workers-ai/）</a></p>
<p>如果你不方便访问项目地址，以下为文生图worker.js文件代码：</p>
<pre><code>export default {
    async fetch(request, env) {
        const API_KEY = env.API_KEY;
        const url = new URL(request.url);
        const auth = request.headers.get(&quot;Authorization&quot;);

        // 🔐 Simple API key check
        if (auth !== `Bearer ${API_KEY}`) {
            return json({ error: &quot;Unauthorized&quot; }, 401);
        }

        // 🚫 Only allow POST requests to /
        if (request.method !== &quot;POST&quot; || url.pathname !== &quot;/&quot;) {
            return json({ error: &quot;Not allowed&quot; }, 405);
        }

        try {
            const { prompt } = await request.json();

            if (!prompt) return json({ error: &quot;Prompt is required&quot; }, 400);

            // Choose model from the following list:
            // &quot;@cf/blackforestlabs/ux-1-schnell&quot;
            // &quot;@cf/bytedance/stable-diffusion-xl-lightning&quot;
            // &quot;@cf/lykon/dreamshaper-8-lcm&quot;
            // &quot;@cf/runwayml/stable-diffusion-v1-5-img2img&quot;
            // &quot;@cf/runwayml/stable-diffusion-v1-5-inpainting&quot;
            // &quot;@cf/stabilityai/stable-diffusion-xl-base-1.0&quot;

            // 🧠 Generate image from prompt
            const result = await env.AI.run(
                &quot;@cf/stabilityai/stable-diffusion-xl-base-1.0&quot;,
                { prompt }
            );

            return new Response(result, {
                headers: { &quot;Content-Type&quot;: &quot;image/jpeg&quot; },
            });
        } catch (err) {
            return json({ error: &quot;Failed to generate image&quot;, details: err.message }, 500);
        }
    },
};

// 📦 Function to return JSON responses
function json(data, status = 200) {
    return new Response(JSON.stringify(data), {
        status,
        headers: { &quot;Content-Type&quot;: &quot;application/json&quot; },
    });
}
</code></pre>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>探索发现</category>
    </item>
    <item>
      <title>video2ppt-将任意视频智能转换为精美PPT</title>
      <link>https://noisevip.cn/article/video2ppt-ppt</link>
      <guid isPermaLink="true">https://noisevip.cn/article/video2ppt-ppt</guid>
      <pubDate>Thu, 19 Jun 2025 06:13:11 GMT</pubDate>
      <description><![CDATA[Video2PPT是一个免费的在线工具，可以将任意来源的视频转换为PPT演示文稿。无论是本地视频文件、在线视频链接还是实时录屏，我们都能帮您提取关键信息，生成精美的PPT文档。

在线体验地址：https://video2ppt.com
项目特点


 	多源支持: 支持本地视频]]></description>
      <content:encoded><![CDATA[<section id="wenyan" class="preview" data-provider="WenYan"><img title="" src="https://s2.loli.net/2025/06/05/XPRFHImZGwxC2a6.png" alt="" />

Video2PPT是一个免费的在线工具，可以将任意来源的视频转换为PPT演示文稿。无论是本地视频文件、在线视频链接还是实时录屏，我们都能帮您提取关键信息，生成精美的PPT文档。

在线体验地址：<a href="https://video2ppt.com">https://video2ppt.com</a>
<h2>项目特点</h2>
<section></section>
<ul>
 	<li><strong>多源支持</strong>: 支持本地视频文件、在线视频链接或实时录屏</li>
 	<li><strong>实时提取</strong>: 边看视频边生成PPT，适合网络会议、研讨会、在线课程等多种场景</li>
 	<li><strong>隐私安全</strong>: 所有处理均在本地完成，不会上传视频内容，保证数据隐私和安全</li>
 	<li><strong>完全免费</strong>: 所有功能免费使用，无广告干扰</li>
 	<li><strong>智能总结</strong>: 自动提取视频中的关键信息点，生成结构化的PPT内容</li>
</ul>
开源地址： <a href="https://github.com/Wangxs404/video2ppt">https://github.com/Wangxs404/video2ppt</a>
<h3>支持多种来源</h3>
本地视频、在线视频链接、YouTube、Bilibili等平台，一键导入，快速处理。
<h3>实时录屏提取</h3>
边开会边录制，自动识别屏幕内容，提取关键信息，高效记录会议要点。
<h3>智能内容提取</h3>
自动识别视频中的文字、图表、重点内容，生成结构化PPT，省时省力。
<h2>使用方法</h2>
<section></section>
<h3>上传或提供视频</h3>
上传本地视频文件，或提供在线视频链接，也可以选择直接录制屏幕。

智能处理分析

我们的AI系统自动分析视频内容，识别关键信息，提取重要画面和文字。
<h3>下载PPT文件</h3>
几分钟内完成处理，生成专业PPT文件，可直接下载使用或进一步编辑。
<h2>本地开发运行</h2>
<section></section>
<h3>安装步骤</h3>
<ol>
 	<li><strong>克隆仓库</strong>
<pre><code>git clone https://github.com/AxisIndie/video2ppt.git
cd video2ppt
</code></pre>
</li>
 	<li><strong>安装依赖</strong>
<pre><code>npm install
# 或
yarn install
# 或
pnpm install
</code></pre>
</li>
 	<li><strong>启动开发服务器</strong>
<pre><code>npm run dev
# 或
yarn dev
# 或
pnpm dev
</code></pre>
</li>
 	<li><strong>打开浏览器</strong>

访问 <a href="http://localhost:3000/">http://localhost:3000</a></li>
</ol>
</section>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>AIGC</category>
    </item>
    <item>
      <title>本地化AI提示词管理工具</title>
      <link>https://noisevip.cn/article/ai-14</link>
      <guid isPermaLink="true">https://noisevip.cn/article/ai-14</guid>
      <pubDate>Thu, 19 Jun 2025 02:00:00 GMT</pubDate>
      <description><![CDATA[![主要截图](https://s2.loli.net/2025/06/19/Ao8OdqUTFybXtW6.png)

## 介绍

如果你不想使用别人的云端提示词，更想不断优化提示词管理，那这个工具可太适合你了

项目地址：https://github.com/yarin-zhang/AI-Gi]]></description>
      <content:encoded><![CDATA[<p><img src="https://s2.loli.net/2025/06/19/Ao8OdqUTFybXtW6.png" alt="主要截图"></p>
<h2>介绍</h2>
<p>如果你不想使用别人的云端提示词，更想不断优化提示词管理，那这个工具可太适合你了</p>
<p>项目地址：<a href="https://github.com/yarin-zhang/AI-Gist">https://github.com/yarin-zhang/AI-Gist</a></p>
<h2>特点</h2>
<p>AI Gist 提供基础的 AI 提示词管理功能，旨在帮助用户高效地创建、组织和使用 AI 提示词。</p>
<ul>
<li><strong>提示词模板管理</strong>：集中管理和组织所有 AI 提示词模板</li>
<li><strong>变量填充</strong>：支持在提示词中定义变量，使用时可动态填充</li>
<li><strong>分类与标签</strong>：通过分类和标签系统轻松查找和过滤提示词</li>
<li><strong>历史记录</strong>：保存使用过的提示词，方便重复使用和优化</li>
</ul>
<p>[<img src="https://s2.loli.net/2025/06/19/YfoQnmZ6cUP4Dg7.png" alt="特点01"></p>
<p>AI Gist 还集成了 AI 模型，支持自动生成和调整提示词，提升管理效率。用之前，改一改。</p>
<ul>
<li><strong>AI 模型集成</strong>：支持多种 AI 模型，包括本地模型和在线模型</li>
<li><strong>AI 提示词生成</strong>：通过 AI 模型自动生成提示词，提升创作效率</li>
<li><strong>AI 快速调整</strong>：支持快速调整提示词风格并提取变量</li>
</ul>
<p><img src="https://s2.loli.net/2025/06/19/KbTDHs4Ne639Vt1.png" alt="特点02"></p>
<p>AI Gist 关注隐私和数据安全，所有数据都存储在本地，并支持 WebDAV 在不同设备间同步。</p>
<ul>
<li><strong>掌控数据</strong>：拥有完整的数据控制，完整支持导出和导入</li>
<li><strong>本地优先</strong>：所有数据存储在本地，确保隐私和安全</li>
<li><strong>WebDAV</strong>：支持 WebDAV 同步，方便在多设备间共享数据</li>
<li><strong>跨平台支持</strong>：支持 Windows、macOS 和 Linux 系统</li>
</ul>
<p>[<img src="https://s2.loli.net/2025/06/19/nRwkJ3QVlPxc9Y7.png" alt="特点03"></p>
<h2>⬇️ 下载</h2>
<p><a href="https://github.com/yarin-zhang/AI-Gist/releases/latest"><img src="https://camo.githubusercontent.com/bf49585b23ea3a52121e042572eaca0ee19926035fc4f6f74773fa648915e96f/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f796172696e2d7a68616e672f41492d476973743f7374796c653d666c6174" alt="GitHub release (latest by date)"></a> <a href="https://github.com/yarin-zhang/AI-Gist/releases"><img src="https://camo.githubusercontent.com/135098fa54fd9e88dfdd121f7deaa1255384febeee36c07fee6e1371e6a6cba2/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f646f776e6c6f6164732f796172696e2d7a68616e672f41492d476973742f746f74616c3f7374796c653d666c6174" alt="GitHub all releases"></a></p>
<table>
<thead>
<tr>
<th>平台</th>
<th>下载链接</th>
<th>说明</th>
</tr>
</thead>
<tbody><tr>
<td><a href="https://camo.githubusercontent.com/648177ead83b1ed2912aedb23312b6b38cc1309128c582d6a28cf8c86161e86a/68747470733a2f2f637573746f6d2d69636f6e2d6261646765732e64656d6f6c61622e636f6d2f62616467652f57696e646f77732d3030373844363f6c6f676f3d77696e646f77733131266c6f676f436f6c6f723d7768697465"><img src="https://camo.githubusercontent.com/648177ead83b1ed2912aedb23312b6b38cc1309128c582d6a28cf8c86161e86a/68747470733a2f2f637573746f6d2d69636f6e2d6261646765732e64656d6f6c61622e636f6d2f62616467652f57696e646f77732d3030373844363f6c6f676f3d77696e646f77733131266c6f676f436f6c6f723d7768697465" alt="Windows"></a></td>
<td><a href="https://github.com/yarin-zhang/AI-Gist/releases/latest">https://github.com/yarin-zhang/AI-Gist/releases/latest</a></td>
<td>Windows 安装程序</td>
</tr>
<tr>
<td><a href="https://camo.githubusercontent.com/606cff5133de3bbf71c359d0d78685e381d2d09ba34fb02a07eb57996432c4e3/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6d61634f532d3030303030303f7374796c653d666c6174266c6f676f3d6170706c65266c6f676f436f6c6f723d7768697465"><img src="https://camo.githubusercontent.com/606cff5133de3bbf71c359d0d78685e381d2d09ba34fb02a07eb57996432c4e3/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6d61634f532d3030303030303f7374796c653d666c6174266c6f676f3d6170706c65266c6f676f436f6c6f723d7768697465" alt="macOS"></a></td>
<td><a href="https://github.com/yarin-zhang/AI-Gist/releases/latest">https://github.com/yarin-zhang/AI-Gist/releases/latest</a></td>
<td>适用于 Apple 芯片</td>
</tr>
<tr>
<td><a href="https://camo.githubusercontent.com/606cff5133de3bbf71c359d0d78685e381d2d09ba34fb02a07eb57996432c4e3/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6d61634f532d3030303030303f7374796c653d666c6174266c6f676f3d6170706c65266c6f676f436f6c6f723d7768697465"><img src="https://camo.githubusercontent.com/606cff5133de3bbf71c359d0d78685e381d2d09ba34fb02a07eb57996432c4e3/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6d61634f532d3030303030303f7374796c653d666c6174266c6f676f3d6170706c65266c6f676f436f6c6f723d7768697465" alt="macOS"></a></td>
<td><a href="https://github.com/yarin-zhang/AI-Gist/releases/latest">https://github.com/yarin-zhang/AI-Gist/releases/latest</a></td>
<td>适用于 Intel 芯片</td>
</tr>
<tr>
<td><a href="https://camo.githubusercontent.com/9ab20bff209934f9d7249297d0e6e80d09cb419502410a1799ce296005d832b0/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c696e75782d4643433632343f7374796c653d666c6174266c6f676f3d6c696e7578266c6f676f436f6c6f723d626c61636b"><img src="https://camo.githubusercontent.com/9ab20bff209934f9d7249297d0e6e80d09cb419502410a1799ce296005d832b0/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c696e75782d4643433632343f7374796c653d666c6174266c6f676f3d6c696e7578266c6f676f436f6c6f723d626c61636b" alt="Linux"></a></td>
<td><a href="https://github.com/yarin-zhang/AI-Gist/releases/latest">https://github.com/yarin-zhang/AI-Gist/releases/latest</a></td>
<td>通用 Linux 应用</td>
</tr>
</tbody></table>
<h2>🚀 安装说明</h2>
<ul>
<li><strong>Windows：</strong> 下载 <code>.exe</code> 文件后双击运行安装</li>
<li><strong>macOS：</strong> 下载 <code>.dmg</code> 文件后打开，将应用拖拽到应用程序文件夹，在终端执行 <code>xattr -cr /Applications/AI\ Gist.app</code> 以解除“已损坏”报错后启动。</li>
<li><strong>Linux：</strong> 下载 <code>.AppImage</code> 文件后添加执行权限：<code>chmod +x ai-gist-linux.AppImage</code></li>
</ul>
<h2>📒 使用说明</h2>
<p>方法一：手动维护数据</p>
<ul>
<li>在应用中手动添加提示词模板、变量和分类标签</li>
<li>使用时直接选择模板，输入变量值即可</li>
</ul>
<p>方法二：AI 生成提示词</p>
<ul>
<li>先在应用中添加 AI 模型（支持纯本地 Ollama、LM Studio 模型，以及常见的 OpenAI、DeepSeek 等在线模型）。</li>
<li>在首页使用 AI 模型生成提示词。</li>
</ul>
<h2>开发说明</h2>
<h3>安装依赖</h3>
<pre><code>yarn install
</code></pre>
<h3>启动开发环境</h3>
<pre><code>yarn dev
</code></pre>
<h3>其他常用命令</h3>
<pre><code># 开发相关
yarn dev            # 启动应用并开启热重载
yarn build          # 打包应用，输出目录为 &quot;dist&quot;

# 跨平台构建
yarn build:win      # 构建 Windows 安装包
yarn build:mac      # 构建 macOS 安装包
yarn build:linux    # 构建 Linux 安装包
</code></pre>
<h3>开发指南</h3>
<p>详细的开发指南请参阅 <a href="https://github.com/yarin-zhang/AI-Gist/blob/main/docs">docs</a> 目录：</p>
<ul>
<li>[IndexedDB 架构指南]<a href="https://github.com/yarin-zhang/AI-Gist/blob/main/docs/indexeddb-architecture.md">https://github.com/yarin-zhang/AI-Gist/blob/main/docs/indexeddb-architecture.md</a></li>
<li>[GitHub Actions 自动构建与发布]<a href="https://github.com/yarin-zhang/AI-Gist/blob/main/docs/github-actions.md">https://github.com/yarin-zhang/AI-Gist/blob/main/docs/github-actions.md</a></li>
</ul>
<h2>应用截图</h2>
<p><img src="https://s2.loli.net/2025/06/19/fEI1q5C8yhodRF3.png" alt="截图01"></p>
<p><img src="https://s2.loli.net/2025/06/19/lVgdsWSiOK2zkBG.png" alt="截图02"></p>
<p><img src="https://s2.loli.net/2025/06/19/brnp3Gf15iPEhWu.png" alt="截图03"></p>
<p><img src="https://s2.loli.net/2025/06/19/mnPFeiY5o4zawyh.png" alt="截图04"></p>
<p><img src="https://s2.loli.net/2025/06/19/YquhGWz45fpEavl.png" alt="截图05"></p>
<p><img src="https://s2.loli.net/2025/06/19/s4Jtmf5KWcMEwVP.png" alt="截图06"></p>
<p><img src="https://s2.loli.net/2025/06/19/ticKry2BVkjIYmf.png" alt="截图07"></p>
<p><img src="https://s2.loli.net/2025/06/19/uZDYjGeNy3r4ksJ.png" alt="截图08"></p>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>资源分享</category>
    </item>
    <item>
      <title>完全免费的AI文本转语音，一键部署</title>
      <link>https://noisevip.cn/article/ai-4</link>
      <guid isPermaLink="true">https://noisevip.cn/article/ai-4</guid>
      <pubDate>Mon, 26 May 2025 02:00:00 GMT</pubDate>
      <description><![CDATA[![1748146403780](https://s2.loli.net/2025/05/25/Zut6BsGDiklAw8S.png)

LibreTTS 是一款免费的在线文本转语音工具，支持多种声音选择，可调节语速和语调，提供即时试听和下载功能，这个程序支持多国语言和ai配音，配音感情丰富，支持]]></description>
      <content:encoded><![CDATA[<p><img src="https://s2.loli.net/2025/05/25/Zut6BsGDiklAw8S.png" alt="1748146403780"></p>
<p>LibreTTS 是一款免费的在线文本转语音工具，支持多种声音选择，可调节语速和语调，提供即时试听和下载功能，这个程序支持多国语言和ai配音，配音感情丰富，支持ai调整语气</p>
<p>项目地址：<a href="https://github.com/LibreSpark/LibreTTS">https://github.com/LibreSpark/LibreTTS</a></p>
<p>在线预览：<a href="https://libretts.is-an.org">https://libretts.is-an.org</a></p>
<p><img src="https://s2.loli.net/2025/05/25/BK6haogcrv42MEf.png" alt="1748103829101"></p>
<h2>功能特点</h2>
<ul>
<li>🎯 支持超过300种不同语言和口音的声音</li>
<li>🔊 实时预览和试听功能</li>
<li>⚡ 支持长文本自动分段处理</li>
<li>🎛️ 可调节语速和语调</li>
<li>📱 响应式设计，支持移动端</li>
<li>💾 支持音频下载</li>
<li>📝 历史记录功能（最多保存50条）</li>
<li>🔌 支持添加自定义OpenAI格式的TTS API</li>
</ul>
<h2>API 说明</h2>
<p>本项目提供以下 API 端点:</p>
<h3>Edge API 路径</h3>
<ul>
<li><code>/api/tts</code> - 文本转语音 API<ul>
<li>支持 GET/POST 方法</li>
<li>GET 示例: <code>/api/tts?t=你好世界&amp;v=zh-CN-XiaoxiaoNeural&amp;r=0&amp;p=0</code></li>
<li>POST 示例: 请求体为JSON格式 <code>{&quot;text&quot;: &quot;你好世界&quot;, &quot;voice&quot;: &quot;zh-CN-XiaoxiaoNeural&quot;, &quot;rate&quot;: 0, &quot;pitch&quot;: 0}</code></li>
</ul>
</li>
<li><code>/api/voices</code> - 获取可用语音列表 API<ul>
<li>仅支持 GET 方法</li>
<li>示例: <code>/api/voices?l=zh&amp;f=1</code> (l参数用于筛选语言，f参数指定返回格式)</li>
</ul>
</li>
</ul>
<p>例如：<code>https://libretts.is-an.org/api/tts</code></p>
<h2>部署指南</h2>
<h3>Vercel 部署</h3>
<ol>
<li>Fork 本仓库到你的 GitHub 账号</li>
<li>登录 <a href="https://vercel.com/">Vercel</a>，点击 &quot;New Project&quot;</li>
<li>导入你 fork 的仓库，并选择默认设置部署即可</li>
<li>部署完成后，你会获得一个 <code>your-project.vercel.app</code> 的域名</li>
</ol>
<h3>Cloudflare Pages 部署</h3>
<ol>
<li>Fork 本仓库到你的 GitHub 账号</li>
<li>登录 Cloudflare Dashboard，进入 Pages 页面</li>
<li>创建新项目，选择从 Git 导入：<ul>
<li>选择你 fork 的仓库</li>
<li>构建设置：<ul>
<li>构建命令：留空</li>
<li>输出目录：<code>/</code></li>
<li>环境变量：无需设置</li>
</ul>
</li>
</ul>
</li>
<li>部署完成后，你会获得一个 <code>xxx.pages.dev</code> 的域名</li>
</ol>
<h2>环境变量</h2>
<p>除了原有配置外，现在项目支持设置环境变量 PASSWORD 来开启访问密码验证。如果 PASSWORD 非空，则用户第一次访问页面时会显示密码输入界面，输入正确后在该设备上后续访问将不再需要验证。</p>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>探索发现</category>
    </item>
    <item>
      <title>popclip插件合集</title>
      <link>https://noisevip.cn/article/popclip-2</link>
      <guid isPermaLink="true">https://noisevip.cn/article/popclip-2</guid>
      <pubDate>Fri, 23 May 2025 04:07:36 GMT</pubDate>
      <description><![CDATA[前言：给出代码的选中自动识别安装，需要下载安装的请前往相关地址安装
一、Blinko笔记
自制的，代码如下：
// #popclip extension for Send to Blinko
// name: Blinko笔记
// icon: square filled BK]]></description>
      <content:encoded><![CDATA[<section id="wenyan" class="preview" data-provider="WenYan"><img title="" src="https://s2.loli.net/2025/05/23/394WYz2f8tRGNBK.jpg" alt="" />

前言：给出代码的选中自动识别安装，需要下载安装的请前往相关地址安装
<h2>一、Blinko笔记</h2>
<section></section>自制的，代码如下：
<pre><code>// #popclip extension for Send to Blinko
// name: Blinko笔记
// icon: square filled BK
// language: javascript
// module: true
// entitlements: [network]
// options: [{
//   identifier: "siteUrl",
//   label: "服务端地址",
//   type: "string",
//   defaultValue: "https://note.noisework.cn",
//   description: "请确保地址正确，不要带末尾斜杠"
// }, {
//   identifier: "token",
//   label: "API Token",
//   type: "string",
//   description: "从设置页面获取最新Token"
// }]

async function sendToShuo(input, options) {
    try {
        // 参数预处理
        const siteUrl = (options.siteUrl || "").replace(/\/+$/g, "");
        const token = (options.token || "").trim();
        const content = (input.text || "").trim();
        
        // 验证参数
        if (!/^https:\/\/[\w.-]+(:\d+)?$/.test(siteUrl)) {
            throw new Error("地址格式错误，示例: https://note.noisework.cn");
        }
        if (!token) throw new Error("Token不能为空");
        if (!content) throw new Error("选中文本不能为空");

        // 发送请求
        await sendRequestWithXMLHttpRequest(siteUrl, token, content);
        PopClip.showText("✓ 发送成功");
    } catch (error) {
        handleRequestError(error);
    }
}

// 使用 XMLHttpRequest 实现网络请求
function sendRequestWithXMLHttpRequest(siteUrl, token, content) {
    return new Promise((resolve, reject) =&gt; {
        const xhr = new XMLHttpRequest();
        const url = `${siteUrl}/api/v1/note/upsert`;

        xhr.open("POST", url, true);
        xhr.setRequestHeader("Content-Type", "application/json");
        xhr.setRequestHeader("Authorization", `Bearer ${token}`);

        xhr.timeout = 10000; // 设置超时时间（10秒）
        
        // 设置回调函数
        xhr.onreadystatechange = () =&gt; {
            if (xhr.readyState === XMLHttpRequest.DONE) {
                if (xhr.status &gt;= 200 &amp;&amp; xhr.status &lt; 300) {
                    resolve(xhr.responseText);
                } else {
                    let errorMsg = `请求失败 (${xhr.status})`;
                    try {
                        const data = JSON.parse(xhr.responseText);
                        errorMsg = data.message || errorMsg;
                    } catch {}
                    reject(new Error(errorMsg));
                }
            }
        };

        // 处理网络错误
        xhr.onerror = () =&gt; reject(new Error("网络错误"));
        
        // 处理超时错误
        xhr.ontimeout = () =&gt; reject(new Error("请求超时"));

        try {
            // 发送请求
            const payload = JSON.stringify({
                content: `#Popclip\
${content}`, // 内容字段
                type: 0, // 类型，固定为 0
                attachments: [], // 附件，空数组
                isArchived: null, // 是否归档
                isTop: null, // 是否置顶
                isShare: null, // 是否分享
                isRecycle: null, // 是否放入回收站
                references: [null] // 参考内容
            });
            xhr.send(payload);
        } catch (error) {
            reject(new Error("请求发送失败: " + error.message));
        }
    });
}

// 错误处理
function handleRequestError(error) {
    console.error("请求错误:", error);
    
    const errorMap = {
        "Failed to fetch": "无法连接到服务器",
        "aborted": "请求超时",
        "网络错误": "网络错误",
        "401": "认证失败，请检查Token",
        "404": "API地址不存在"
    };

    const message = Object.entries(errorMap).find(([key]) =&gt; 
        error.message.includes(key)
    )?.[1] || `请求错误: ${error.message.split('\
')[0].slice(0, 50)}`;

    PopClip.showText(`❌ ${message}`);
}

exports.actions = [{
    title: "发送至Blinko",
    code: sendToShuo,
    icon: "square filled BK"
}];
</code></pre>
<h2>二、多模式AI写手</h2>
<section></section>
<pre><code>// #popclip extension for ChatGPT
// name: smart writer
// icon: iconify:fluent:calligraphy-pen-24-regular
// language: javascript
// module: true
// entitlements: [network]
// options: [{
//   identifier: apikey, label: API Key, type: string,
//   description: 'Obtain API key from https://platform.openai.com/account/api-keys'
// }]

const prefixes = {
    "polish": "你是我的写作助手，检查接收到的文字的拼写、语法错误，对其进行润色:\
",
    "xiaohongshu": "扮演文本助理，使用小红书的 Emoji 风格润色我的内容，特点是每行开头都是一个相关表情符号，达到引人入胜的目的:\
",
    "Summarize": "归纳总结这些文字，同时用列表列出要点:\
",
    "translate": "将发送的文字内容都翻译成中文，如果内容是中文则翻译成标准的英文:\
",
    "Official": "你将扮演专业的微信公众号运营者，优化润色我给的内容成为爆款标题:\
",
}
async function chat (input, options, lang, prefixName) {
  const openai = require("axios").create({
    baseURL: "https://www.noiseapi.top/v1",
    headers: { Authorization: `Bearer ${options.apikey}` },
  });

let messages
  switch (lang) {
    case "en":
      messages = [
        {"role": "system", "content": "I want you act as a proofreader. I will provide you texts and I would like you to review them for any spelling, grammar, or punctuation errors."},
        {"role": "user", "content": `Proofread the following content and give me the result without extra delarations or comments:\
\
${input.text}`},
      ]
      break;
    case "zh":
      messages = [
        {"role": "system", "content": "你是我的写作助手，检查接收到的文字的拼写、语法错误，向我提供修改后的文字。"},
        {"role": "user", "content": `修改下面的文字，直接输出修改后的结果，不需要额外的声明:\
${input.text}`}
      ]
      break;
  }

  if (prefixName) {
      messages = [{"role": "user", "content": `${prefixes[prefixName]}${input.text}`}]
  }

  const { data } = await openai.post("/chat/completions", {
    model: "free-gpt-4o-2024-08-06",
    messages,
  });
  const result = data.choices[0].message;
  return input.text.trimEnd() + "\
\
" + result.content.trim();
};

exports.actions = [
{
  title: "公众号爆款标题",
  icon: "circle 标题",
  after: "paste-result",
  code: async (input, options) =&gt; chat(input, options, "", "Official"),
},
{
  title: "小红书风格",
  icon: "circle 红书",
  after: "paste-result",
  code: async (input, options) =&gt; chat(input, options, "", "xiaohongshu"),
},
{
  title: "总结内容",
  icon: "circle 总结",
  after: "paste-result",
  code: async (input, options) =&gt; chat(input, options, "", "Summarize"),
},
{
  title: "中英互译",
  icon: "square 翻译",
  after: "paste-result",
  code: async (input, options) =&gt; chat(input, options, "", "translate"),
},
{
  title: "润色",
  icon: "square 润色",
  after: "paste-result",
  code: async (input, options) =&gt; chat(input, options, "", "polish"),
},
];
</code></pre>
<h2>三、Github搜索</h2>
<section></section><a href="https://github.com/Wooden-Robot/Search-Github-PopClip">https://github.com/Wooden-Robot/Search-Github-PopClip</a>

这是一个简单的 PopClip 插件，可以让您在 Mac 上直接搜索 Github 项目。只需选中要搜索的文本并触发插件，您无需复制粘贴即可快速查找结果。

功能

选中文本后，单击 Github 图标即可在 Github 上搜索。

在默认浏览器中打开搜索结果。

快速高效的搜索体验。

安装

下载 Search_Github_Extension.popclipextz 文件。

双击文件，安装该插件到 PopClip。

安装完成后，您可以在任何应用中选中文本，点击 PopClip 菜单中的 Github 按钮进行搜索。
<h2>四、文本发送到 flomo</h2>
<section></section><a href="https://github.com/extrastu/popclip-flomoplus">https://github.com/extrastu/popclip-flomoplus</a>

主作 SendToFlomo 将所选文本发送到 flomo。

配置

API 密钥

要使用此扩展，您需要为其提供 flomo 的 API 密钥 帐户。要获取 API 密钥：

在此处注册 flomo 帐户： <a href="https://flomoapp.com/">https://flomoapp.com/</a>

在此处生成 API 密钥：<a href="https://v.flomoapp.com/mine?source=incoming_webhook">https://v.flomoapp.com/mine?source=incoming_webhook</a>

将 API 密钥复制并粘贴到 API 密钥字段中 扩展的设置。
<h2>五、本地GPT-SoVITS</h2>
<section></section>GPT-SoVITS接入苹果MacOs效率工具PopClip

安装PopClip软件

启动GPT-SoVITS接口服务

选中shell脚本的代码，安装插件即可

<a href="https://github.com/v3ucn/GPT-SoVITS_FOR_PopClip">https://github.com/v3ucn/GPT-SoVITS_FOR_PopClip</a>

六、说说笔记扩展
<pre><code>// #popclip extension for Send to Shuo
// name: 说说笔记
// icon: square filled 说
// language: javascript
// module: true
// entitlements: [network]
// options: [{
//   identifier: "siteUrl",
//   label: "服务端地址",
//   type: "string",
//   defaultValue: "https://note.noisework.cn",
//   description: "请确保地址正确，不要带末尾斜杠"
// }, {
//   identifier: "token",
//   label: "API Token",
//   type: "string",
//   description: "从设置页面获取最新Token"
// }]

async function sendToShuo(input, options) {
    try {
        // 参数预处理
        const siteUrl = (options.siteUrl || "").replace(/\/+$/g, "");
        const token = (options.token || "").trim();
        const content = (input.text || "").trim();
        
        // 验证参数
        if (!/^https:\/\/[\w.-]+(:\d+)?$/.test(siteUrl)) {
            throw new Error("地址格式错误，示例: https://note.noisework.cn");
        }
        if (!token) throw new Error("Token不能为空");
        if (!content) throw new Error("选中文本不能为空");

        // 发送请求
        await sendRequestWithXMLHttpRequest(siteUrl, token, content);
        PopClip.showText("✓ 发送成功");
    } catch (error) {
        handleRequestError(error);
    }
}

// 使用 XMLHttpRequest 实现网络请求
function sendRequestWithXMLHttpRequest(siteUrl, token, content) {
    return new Promise((resolve, reject) =&gt; {
        const xhr = new XMLHttpRequest();
        const url = `${siteUrl}/api/token/messages`;

        xhr.open("POST", url, true);
        xhr.setRequestHeader("Content-Type", "application/json");
        xhr.setRequestHeader("Authorization", `Bearer ${token}`);

        xhr.timeout = 10000; // 设置超时时间（10秒）
        
        // 设置回调函数
        xhr.onreadystatechange = () =&gt; {
            if (xhr.readyState === XMLHttpRequest.DONE) {
                if (xhr.status &gt;= 200 &amp;&amp; xhr.status &lt; 300) {
                    resolve(xhr.responseText);
                } else {
                    let errorMsg = `请求失败 (${xhr.status})`;
                    try {
                        const data = JSON.parse(xhr.responseText);
                        errorMsg = data.message || errorMsg;
                    } catch {}
                    reject(new Error(errorMsg));
                }
            }
        };

        // 处理网络错误
        xhr.onerror = () =&gt; reject(new Error("网络错误"));
        
        // 处理超时错误
        xhr.ontimeout = () =&gt; reject(new Error("请求超时"));

        try {
            // 发送请求
            const payload = JSON.stringify({
                content: `#Popclip\
${content}`,
                type: "text"
            });
            xhr.send(payload);
        } catch (error) {
            reject(new Error("请求发送失败: " + error.message));
        }
    });
}

// 错误处理
function handleRequestError(error) {
    console.error("请求错误:", error);
    
    const errorMap = {
        "Failed to fetch": "无法连接到服务器",
        "aborted": "请求超时",
        "网络错误": "网络错误",
        "401": "认证失败，请检查Token",
        "404": "API地址不存在"
    };

    const message = Object.entries(errorMap).find(([key]) =&gt; 
        error.message.includes(key)
    )?.[1] || `请求错误: ${error.message.split('\
')[0].slice(0, 50)}`;

    PopClip.showText(`❌ ${message}`);
}

exports.actions = [{
    title: "发送至说说笔记",
    code: sendToShuo,
    icon: "square filled 说"
}];
</code></pre>
<h2>七、快速生成ray.so截图</h2>
<section></section>介绍：将所选文本发送到 ray.so 以获得美丽的图像 您的代码。

<a href="https://github.com/dofy/PopClip-Extensions">https://github.com/dofy/PopClip-Extensions</a>
<h2>八、Obsidian 插件</h2>
<section></section><a href="https://github.com/canburaks/obsidian-popclip">https://github.com/canburaks/obsidian-popclip</a>

它是如何工作的？

工作流有两个部分。

安装 Popclip 扩展。

安装 Obsidian 插件。

第一部分：Popclip 扩展

您可以选择以下文本来安装扩展。填写 作为您的 Obsidian Vault 名称，并作为目标目录，该目录必须相对于 Vault 的根目录。vaultlocation
<pre><code># PopClip - Obsidian extension, markdown variant 
name: ObsidianClipper 
icon: O 
capture html: true
options: 
- identifier: "vault" 
  label: "Vault name" 
  type: string
- identifier: "path"
  label: "Location"
  type: string
javascript: | 
    const vaultName = encodeURIComponent(popclip.options.vault) 
    const fileLocation = encodeURIComponent(popclip.options.path)
    const data = {
      clipping: popclip.input.markdown,
      path: fileLocation || undefined,
    }
    let clipping = popclip.input.markdown 
    if (popclip.context.browserUrl.length &gt; 0) { // append markdown source link if available 
      data["title"] = popclip.context.browserTitle
      data["source"] = popclip.context.browserUrl
    } 
    clipping = encodeURIComponent(JSON.stringify(data))
    popclip.openUrl(`obsidian://advanced-uri?vault=${vaultName}&amp;daily=true&amp;heading=popclip&amp;data=%0A${clipping}&amp;mode=append`) 
#end
</code></pre>
安装 Obsidian 插件。

我还没有提交插件。我打算尽快提交。

因此，您需要手动安装它：

下载 Obsidian Popclip 插件的 GitHub 存储库。

复制 directory 下的文件夹。popclipdist

将复制的文件夹粘贴到 Obsidian 插件文件夹 下。popclip.obsidian/plugins

重新启动 Obsidian。
<h2>九、Bilibili搜索</h2>
<section></section>一个简单的 PopClip 扩展，根据 Bilibili.com 中的选定视频直接将您带到 Bilibili.com。

<a href="https://github.com/brucemomo/PopClip-Extension-Bilibili">https://github.com/brucemomo/PopClip-Extension-Bilibili</a>
<h2>十、memos创建新备忘录</h2>
<section></section><a href="https://github.com/beffiy/popclip-usememos-extension">https://github.com/beffiy/popclip-usememos-extension</a>

一个简单的 popclip 扩展，用于 usememos 创建新备忘录。
<h2>十一、发送到Cursor Editor</h2>
<section></section><a href="https://github.com/rizumita/composerize">https://github.com/rizumita/composerize</a>

一个 PopClip 扩展，用于将所选文本发送到光标编辑器的编辑器功能。它通过保留以前的剪贴板数据来安全地处理剪贴板内容。
<h2>特征</h2>
<section></section>
<ul>
 	<li>自动将所选文本发送到 Cursor 的书写器</li>
 	<li>保留剪贴板内容</li>
 	<li>使用错误消息优雅地处理错误</li>
 	<li>无需配置</li>
</ul>
<h2>用法</h2>
<section></section>
<ol>
 	<li>选择要发送到 Composer 的任何文本</li>
 	<li>单击 PopClip 菜单中的 Composerize 按钮</li>
 	<li>该扩展将：
<ul>
 	<li>临时存储当前的剪贴板内容</li>
 	<li>将所选文本发送到 Cursor 的 Composer</li>
 	<li>恢复以前的剪贴板内容</li>
</ul>
</li>
</ol>
<h2>要求</h2>
<section></section>
<ul>
 	<li>PopClip（推荐最新版本）</li>
 	<li>光标编辑器</li>
 	<li>PopClip 的 macOS 辅助功能权限</li>
</ul>
<h2>安装</h2>
<section></section>
<ol>
 	<li>双击 <code>composerize.popclipext</code> 文件夹</li>
 	<li>在 PopClip 的对话框中确认安装</li>
 	<li>出现提示时授予必要的权限</li>
</ol>
<h2>十二、小红书搜索</h2>
<section></section>划词点击图标跳转至小红书网页版搜索

下载：<a href="https://pan.quark.cn/s/6e7361338d14">https://pan.quark.cn/s/6e7361338d14</a>

解压后双击安装
<h2>十三、搜索 Z-lib 书籍</h2>
<section></section><a href="https://github.com/Wooden-Robot/Search_Z-lib_PopClip">https://github.com/Wooden-Robot/Search_Z-lib_PopClip</a>

这是一个简单的 PopClip 插件，可以让您在 Mac 上直接搜索 Z-lib 书籍。只需选中要搜索的文本并触发插件，您无需复制粘贴即可快速查找结果。
<h2>功能</h2>
<section></section>
<ul>
 	<li>选中文本后，单击 <code>Z</code> 即可在 Z-lib 上搜索。</li>
 	<li>在默认浏览器中打开搜索结果。</li>
 	<li>快速高效的搜索体验。</li>
</ul>
<h2>安装</h2>
<section></section>
<ol>
 	<li>下载 <a href="https://github.com/Wooden-Robot/Search_Z-lib_PopClip/releases/download/v0.01/Search_Z-lib_Extension.popclipextz">Search_Z-lib_Extension.popclipextz</a> 文件。</li>
 	<li>双击文件，安装该插件到 PopClip。</li>
 	<li>安装完成后，您可以在任何应用中选中文本，点击 PopClip 菜单中的 <code>Z</code> 按钮进行搜索。</li>
</ol>
<h2>十四、深度求索翻译</h2>
<section></section>
<pre><code> #popclip
 {"name": "深度求索翻译", "icon": "square filled 翻", "interpreter": "python3", "options": [{"identifier": "apikey", "label": "DeepSeek API Key", "type": "string"}], "after": "paste-result"}

import os
import json
import urllib.request
import urllib.error

def translate():
    # 获取环境变量
    text = os.environ['POPCLIP_TEXT']
    api_key = os.environ['POPCLIP_OPTION_APIKEY']
    
    # 准备请求数据
    data = {
        "model": "deepseek-chat",
        "messages": [
            {
                "role": "system",
                "content": "你现在是一位英文翻译专家，专注于翻译用户提供的内容。如果用户提交的内容是中文，请将其翻译成英文；如果是英文，则翻译成简体中文。请注意，你无需对内容提出任何评论或解答，仅需提供准确的翻译。"
            },
            {
                "role": "user",
                "content": text
            }
        ],
        "temperature": 0.3
    }
    
    # 准备请求
    headers = {
        "Content-Type": "application/json",
        "Authorization": f"Bearer {api_key}"
    }
    
    try:
        # 创建请求
        req = urllib.request.Request(
            "https://api.deepseek.com/v1/chat/completions",
            data=json.dumps(data).encode('utf-8'),
            headers=headers,
            method="POST"
        )
        
        # 发送请求
        with urllib.request.urlopen(req) as response:
            result = json.loads(response.read().decode('utf-8'))
            translation = result['choices'][0]['message']['content'].strip()
            print(translation, end='')
            
    except urllib.error.URLError as e:
        print(f"请求错误: {str(e)}", end='')
    except json.JSONDecodeError:
        print("JSON解析错误", end='')
    except KeyError:
        print("API响应格式错误", end='')
    except Exception as e:
        print(f"未知错误: {str(e)}", end='')

translate()
</code></pre>
</section>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>资源分享</category>
    </item>
    <item>
      <title>oba live tool-抖音小店、巨量百应、抖音团购、小红书直播小工具</title>
      <link>https://noisevip.cn/article/oba-live-tool</link>
      <guid isPermaLink="true">https://noisevip.cn/article/oba-live-tool</guid>
      <pubDate>Fri, 23 May 2025 02:00:00 GMT</pubDate>
      <description><![CDATA[![cov99er](https://s2.loli.net/2025/04/23/SpyvGca6gf14XTQ.png)

一个用于直播带货工具，支持抖音小店、巨量百应、抖音团购、小红书千帆平台，能自动弹窗，自动发言，AI助力回复，支持win、mac

项目地址：https://github.c]]></description>
      <content:encoded><![CDATA[<p><img src="https://s2.loli.net/2025/04/23/SpyvGca6gf14XTQ.png" alt="cov99er"></p>
<p>一个用于直播带货工具，支持抖音小店、巨量百应、抖音团购、小红书千帆平台，能自动弹窗，自动发言，AI助力回复，支持win、mac</p>
<p>项目地址：<a href="https://github.com/qiutongxue/oba-live-tool">https://github.com/qiutongxue/oba-live-tool</a></p>
<p>预览</p>
<p><img src="https://s2.loli.net/2025/04/23/OPcLl3KVU79p5Y6.png" alt="主界面预览"></p>
<p><img src="https://s2.loli.net/2025/04/23/TjIHUR89craoxp7.png" alt="ai"></p>
<p><img src="https://s2.loli.net/2025/04/23/5goMdkl9ZrUQXDe.png" alt="自动回复"></p>
<h2>✨ 功能</h2>
<p>🍟 <strong>多账号管理</strong>：支持多组账号配置，针对不同直播间使用不同的配置</p>
<p>🎯 <strong>智能消息助手</strong>：自动发送消息，告别重复机械喊话</p>
<p>📦 <strong>商品自动讲解</strong>：自动商品弹窗，随心所欲弹讲解</p>
<p>💃 <strong>AI 自动回复</strong>：实时监听直播互动评论（包括进入直播间、点赞、关注、加入品牌会员、加入粉丝团、下单信息等）、自动生成回复内容</p>
<p>🤖 <strong>AI 智能助理</strong>：接入 DeepSeek，支持官方、OpenRouter、硅基流动、火山引擎等所有支持 openai chat接口的提供商</p>
<h2>🚀 快速开始</h2>
<h3>系统要求</h3>
<ul>
<li>操作系统：Windows 10 及以上 | MacOS 也能试试</li>
<li>浏览器：电脑上需要安装 Chrome 或 Edge 浏览器</li>
<li>抖音小店/巨量百应/抖音团购/小红书千帆：账号需要能正常进入中控台</li>
</ul>
<h3>下载安装</h3>
<p>访问 <a href="https://github.com/qiutongxue/oba-live-tool/releases/latest">Releases</a> 页面下载最新版本安装包</p>
<p>或<a href="https://pan.quark.cn/s/c09f681c5cfc">https://pan.quark.cn/s/c09f681c5cfc</a></p>
<h3>源码构建</h3>
<pre><code class="language-bash">git clone https://github.com/qiutongxue/oba-live-tool.git
cd oba-live-tool
pnpm install
pnpm build
</code></pre>
<h2>📖 使用方法</h2>
<h3>第一步：连接到中控台</h3>
<blockquote>
<p>自动发言、自动弹窗、自动回复功能都需要先连接到中控台才能使用。</p>
</blockquote>
<ol>
<li>点击功能列表的「打开中控台」进入直播控制台页面，点击「连接直播控制台」按钮<blockquote>
<p>如果软件显示找不到浏览器，或者想要自己指定浏览器位置，请前往 <strong>应用设置</strong> 页面的 <strong>浏览器设置</strong> 中进行相关设置。</p>
</blockquote>
</li>
<li>如果是第一次连接，请在弹出的页面中登录账号</li>
<li>等待控制台状态显示绿色圆点和「已连接」，即连接成功</li>
</ol>
<blockquote>
<p>抖音小店和巨量百应理论上支持所有功能，抖音团购和小红书暂时只支持弹窗和自动发言</p>
</blockquote>
<h3>自动弹窗和自动发言</h3>
<h4>自动弹窗</h4>
<ul>
<li>自动弹窗的商品 ID 为直播间上架商品的序号（从 1 开始），并非商品的真实 ID！</li>
</ul>
<h4>自动发言</h4>
<ul>
<li>抖音团购和小红书没有提供置顶功能，所以勾选了置顶也没用</li>
</ul>
<blockquote>
<p>目前暂时还没提供运行时更新设置的功能，所以如果需要让新的任务配置生效，需要<strong>重启任务</strong>。</p>
</blockquote>
<h3>自动回复</h3>
<blockquote>
<p>自动回复目前只支持<strong>抖音小店/巨量百应</strong>两个平台</p>
</blockquote>
<p>自动回复目前可以通过两种方式监听直播互动信息：</p>
<ol>
<li>中控台的直播互动窗口：只有评论互动内容</li>
<li>直播大屏主播版：拥有评论互动、进入直播间、点赞、加入品牌会员、关注直播间、加入粉丝团、下单信息</li>
</ol>
<h4>注意事项</h4>
<ul>
<li>请预先在自动回复的<strong>设置</strong>里设置好要回复的内容</li>
<li><strong>关键词回复</strong>和<strong>AI回复</strong>可以同时设置，在同时设置的情况下，若命中了关键词则优先使用关键词回复，未命中情况下才会执行AI回复<ul>
<li>若重复的<strong>关键词</strong>出现在多个规则中，优先使用序号靠前的规则</li>
</ul>
</li>
<li>入场、点赞等额外互动消息的自动回复等功能只有把入口设置为<strong>罗盘大屏</strong>时才生效</li>
<li>程序会自动将回复内容里的所有 <code>{用户名}</code>替换为实际的用户昵称，你可以灵活调整<code>{用户名}</code>出现的位置<ul>
<li>比如此时进入直播间的用户叫张三，且设置了自动回复的内容为 <code>@{用户名} 欢迎来到直播间</code>，实际发送的内容为 <code>@张三 欢迎来到直播间</code><ul>
<li>如果设置了隐藏用户名，实际发送的内容为 <code>@张*** 欢迎来到直播间</code></li>
</ul>
</li>
</ul>
</li>
<li>当配置了多条回复内容时，程序会随机选择一条发送</li>
<li>先点击<strong>开始监听</strong>按钮准备开始监听评论消息，监听成功后<strong>开始任务</strong>才能正常执行自动回复。</li>
</ul>
<h5>AI回复</h5>
<ol>
<li><a href="#api-key-%E8%AE%BE%E7%BD%AE">设置好你的 API KEY 及模型</a>，确保可用。</li>
<li>在「提示词配置」中设置好相关的提示词。</li>
</ol>
<blockquote>
<p>提示词决定了 AI 会扮演什么样的角色，以及 AI 会如何回答用户的问题，会计入 token 消耗。</p>
</blockquote>
<p>开启 AI 回复时，程序会将「开始任务」之后的新的用户评论交给 AI 处理，用户评论会以 JSON 格式原封不动地作为对话的内容交给 AI：</p>
<pre><code class="language-JSON">{
  &quot;nickname&quot;: &quot;用户昵称&quot;,
  &quot;content&quot;: &quot;用户评论内容&quot;,
}
</code></pre>
<p>所以可以把 <code>nickname</code>、<code>commentTag</code> 等插入到提示词中，你的提示词可以是：</p>
<pre><code class="language-md">你是一个直播间的助手，负责回复观众的评论。请参考下面的要求、产品介绍和直播商品，用简短友好的语气回复，一定一定不要超过45个字。

## 要求

- 回复格式为：@&lt;nickname第一个字符&gt;*** &lt;你的回复&gt; （注意！：三个星号是必须的）
...
</code></pre>
<h3>AI 助手</h3>
<p>AI 助手只支持文本对话，在使用 AI 助手功能前，请先设置好你的 API KEY 及模型，确保可用。</p>
<h3>API KEY 设置</h3>
<p>想要使用 AI 功能，需要先设置 API KEY。</p>
<p>软件提供了四种 DeepSeek 模型的预设：</p>
<ul>
<li><a href="https://platform.deepseek.com/">DeepSeek</a></li>
<li><a href="https://openrouter.ai/">OpenRouter</a></li>
<li><a href="https://www.siliconflow.cn/">硅基流动</a></li>
<li><a href="https://console.volcengine.com/ark/">火山引擎</a></li>
</ul>
<p>除此之外，「自定义」还支持几乎任何兼容 openai 对话模型接口的服务。</p>
<p>在 「AI 助手」或「自动回复」的页面，点击「配置 API Key」按钮，就能选择自己需要的提供商和模型了。</p>
<p><strong>注意:</strong> 有的（大多数）模型是收费的，使用 AI 功能前请一定要先了解清楚，使用收费模型时请确保自己在提供商的账户有能够消耗的额度。</p>
<h4>火山引擎</h4>
<p>火山引擎的设置方式和其它提供商有些微区别，除了需要 API KEY 之外，还需要 <a href="https://console.volcengine.com/ark/region:ark+cn-beijing/endpoint">创建接入点</a>。创建成功后，将接入点的 id 复制到原先选择模型的位置中即可使用。</p>
<p><img src="/Library/Github/noiseblog/source/_posts/screenshot/volc_endpoint.png" alt="火山引擎接入点"></p>
<h3>其它</h3>
<h4>软件更新</h4>
<p>你可以选择更新源，但是目前最稳定的还是 Github。</p>
<p>亲测：Github 绝对可用。<code>gh-proxy.com</code> 偶尔可用。其余的github代理基本都不可用。</p>
<h4>开发者模式</h4>
<p>启用开发者模式后，可以使用鼠标右键菜单，在菜单中可打开开发者工具。</p>
<p>启用开发者模式后，连接到中控台时会关闭浏览器的无头模式。</p>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>资源分享</category>
    </item>
    <item>
      <title>自媒体运营助手自动化工具，一键发布到小红书、快手、抖音、油管、B站等平台</title>
      <link>https://noisevip.cn/article/6967</link>
      <guid isPermaLink="true">https://noisevip.cn/article/6967</guid>
      <pubDate>Fri, 23 May 2025 02:00:00 GMT</pubDate>
      <description><![CDATA[![coeever](https://s2.loli.net/2025/05/23/7239Mujx85LgWkN.png)

## 介绍

一个基于浏览器自动化的自媒体运营工具，可实现一键视频搬家、一键发布视频到多平台,抖音视频下载，一键搬家到其他平台（快手、YouTube、小红书、美拍、哔哩哔哩]]></description>
      <content:encoded><![CDATA[<p><img src="https://s2.loli.net/2025/05/23/7239Mujx85LgWkN.png" alt="coeever"></p>
<h2>介绍</h2>
<p>一个基于浏览器自动化的自媒体运营工具，可实现一键视频搬家、一键发布视频到多平台,抖音视频下载，一键搬家到其他平台（快手、YouTube、小红书、美拍、哔哩哔哩等）</p>
<p>项目地址：<a href="https://github.com/spider-ios/autox-release">https://github.com/spider-ios/autox-release</a></p>
<p>使用前请确保系统已安装 Chrome 浏览器。软件依赖 Chrome 实现自动操作。</p>
<h2>预览</h2>
<p><img src="https://s2.loli.net/2025/05/23/S3YLtgshklouPaf.png" alt="主页"></p>
<p><img src="https://s2.loli.net/2025/05/23/MmwdOUcF7VYRDQJ.png" alt="主页"></p>
<h2>使用（来自仓库说明）</h2>
<h4>首次使用时操作步骤：</h4>
<p>如果要发布的平台（如 YouTube、小红书等）尚未登录账号，程序将提示您进行登录。</p>
<p>您可以点击程序页面中的 “打开浏览器” 按钮，系统会自动为您打开一个新的浏览器窗口。如下图所示： <img src="https://s2.loli.net/2025/05/23/tBUw8Kkf5jiJrxW.jpg" alt="打开浏览器">或</p>
<p><img src="https://s2.loli.net/2025/05/23/D826IYljOf5tZVG.png" alt="打开浏览器"></p>
<p>在这个新打开的浏览器中，请访问对应平台（如 youtube.com、xiaohongshu.com）并登录您的账号。</p>
<p>注意： 程序打开的浏览器是一个与您平时使用的浏览器隔离的进程（例如另一个独立的 Chrome 实例），它不会共享历史登录状态或插件。</p>
<p>登录成功后，浏览器会自动保存您的登录状态。只要不长时间退出或清除缓存，程序在后续发布时无需重复登录。</p>
<h4>📌 说明：</h4>
<p>每个平台都需要单独登录一次；</p>
<p>浏览器保持登录状态是确保发布成功的前提；</p>
<p>如果发现登录失效，可重新点击“打开浏览器”按钮进行登录。</p>
<h3>📥 抖音搬家功能</h3>
<blockquote>
<p><img src="https://s2.loli.net/2025/05/23/rbzYWscRdZ45owP.png" alt="抖音搬家"></p>
</blockquote>
<h4>🔐 发布平台登录说明</h4>
<p>使用前需确保浏览器已登录对应平台账号：</p>
<ul>
<li>首次使用或登录状态失效时，请点击界面中的“打开浏览器”按钮</li>
<li>在新打开的浏览器中登录对应平台（如 YouTube、小红书等）</li>
<li>软件启动的浏览器进程独立于系统浏览器，您可能会看到一个新的 Chrome 窗口</li>
<li>登录成功后，登录状态会保持有效，除非长时间未登录或平台手动登出</li>
</ul>
<blockquote>
<p><img src="https://s2.loli.net/2025/05/23/8p762BMXla9SsuE.jpg" alt="打开浏览器1"><img src="https://github.com/spider-ios/autox-release/raw/main/assets/open_browser2.jpg" alt="打开浏览器2"></p>
</blockquote>
<h4>📌 操作步骤</h4>
<h5>功能使用</h5>
<p>1.<strong>下载链接</strong></p>
<p>输入要搬家的抖音主页链接 ，【目前只支持输入用户主页链接，可输入多个地址，地址直接回车换行】，如“<a href="https://www.douyin.com/user/MS4wLjABAAAAgfJrGAfliIV-_qU4wUWAMmyeTjhyjUqqESXwxrBQBYJosRs9O7-_2I_lWOvu_qrF?from_tab_name=main&vid=7484152559486160188%E2%80%9D%EF%BC%89">https://www.douyin.com/user/MS4wLjABAAAAgfJrGAfliIV-_qU4wUWAMmyeTjhyjUqqESXwxrBQBYJosRs9O7-_2I_lWOvu_qrF?from_tab_name=main&amp;vid=7484152559486160188”）</a></p>
<ol>
<li><strong>选择作品发布的时间段</strong></li>
<li><strong>设置 cookie （如何获取 cookie ?）</strong></li>
</ol>
<p>也可以参考以下步骤： <img src="https://s2.loli.net/2025/05/23/4YaLkWMfbxNveZh.png" alt="获取 cookie"><img src="https://s2.loli.net/2025/05/23/Yq5kol78McI2PrB.png" alt="获取 cookie"><img src="https://s2.loli.net/2025/05/23/S75JbfZ1Dtvie2q.png" alt="获取 cookie"><img src="https://s2.loli.net/2025/05/23/GSWF73aEefoDCl4.png" alt="获取 cookie"></p>
<ol>
<li><strong>选择要发布到的平台和账号，开始搬家操作</strong> <img src="https://s2.loli.net/2025/05/23/B5uWgN3ndIwTMa8.png" alt="获取 cookie"></li>
</ol>
<hr>
<h3>🌐 多平台视频发布</h3>
<blockquote>
<p><img src="https://s2.loli.net/2025/05/23/wousGOadjtS4ceq.png" alt="多平台发布"></p>
</blockquote>
<h4>🔐 登录状态说明（同抖音搬家一致）</h4>
<ul>
<li>每个平台发布前，请确保浏览器中已登录账号</li>
<li>可点击“打开浏览器”进入登录界面，平台如：YouTube、小红书、哔哩哔哩等</li>
<li>程序会打开一个新的独立 Chrome 窗口用于自动化登录与发布</li>
</ul>
<h2>网盘下载</h2>
<p><a href="https://pan.quark.cn/s/41e27b02000b">https://pan.quark.cn/s/41e27b02000b</a></p>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>资源分享</category>
    </item>
    <item>
      <title>MAC摸鱼神器-半透明web浏览器</title>
      <link>https://noisevip.cn/article/mac-web</link>
      <guid isPermaLink="true">https://noisevip.cn/article/mac-web</guid>
      <pubDate>Sat, 12 Apr 2025 05:20:32 GMT</pubDate>
      <description><![CDATA[TransparentSafari是一个比较有意思的项目，没有过多介绍，一般人还真难发现它，发行包才136kb大小，用途嘛...可以适当摸鱼，透明度可以自由调节，网址书签可以在内部添加

项目地址：https://github.com/976431yang/TransparentSafa]]></description>
      <content:encoded><![CDATA[<section id="wenyan" class="preview" data-provider="WenYan"><img src="https://s2.loli.net/2025/04/12/bdK3kyD72Tm6IpA.png" alt="cov111er" />

<a href="https://github.com/976431yang/TransparentSafari">TransparentSafari</a>是一个比较有意思的项目，没有过多介绍，一般人还真难发现它，发行包才136kb大小，用途嘛...可以适当摸鱼，透明度可以自由调节，网址书签可以在内部添加

项目地址：<a href="https://github.com/976431yang/TransparentSafari">https://github.com/976431yang/TransparentSafari</a>

<img src="https://s2.loli.net/2025/04/12/WFfOeiHP9lYAr6m.png" alt="3432332r" />

<img src="https://s2.loli.net/2025/04/12/HBsfFcezKN6LhET.png" alt="131321" />

</section>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>探索发现</category>
    </item>
    <item>
      <title>完善的轻量说说笔记系统及memos的开源替代品-你的私人朋友圈</title>
      <link>https://noisevip.cn/article/memos-2</link>
      <guid isPermaLink="true">https://noisevip.cn/article/memos-2</guid>
      <pubDate>Sat, 12 Apr 2025 00:00:00 GMT</pubDate>
      <description><![CDATA[前言：近期碰到一个喜欢的一个项目，看到可以类似memos的轻松发布自己的内容...本着喜欢就改造的原则，这个版本的说说笔记就诞生了，使用它，你的数据将由你自由掌控，且可完全免费一键部署，重要的是碎片化的信息记录加自动化就会变的非常高自由度，感兴趣的话不妨来试试
介绍
这是基于Ech0基本]]></description>
      <content:encoded><![CDATA[<section id="wenyan" class="preview" data-provider="WenYan"><img src="https://s2.loli.net/2025/04/12/T1HaBIgPGZEXlfc.png" alt="T1HaBIgPGZEXlfc" />

前言：近期碰到一个喜欢的一个项目，看到可以类似memos的轻松发布自己的内容...本着喜欢就改造的原则，这个版本的说说笔记就诞生了，使用它，你的数据将由你自由掌控，且可完全免费一键部署，重要的是碎片化的信息记录加自动化就会变的非常高自由度，感兴趣的话不妨来试试
<h2>介绍</h2>
这是基于Ech0基本框架的二次开发、魔改及完善，类似朋友圈样式风格，支持后台配置修改如背景图、个性签名等，支持api 获取内容、更新操作等，支持对b站视频、网易云音乐、youtube等的解析添加、支持一键复制，一键生成内容图片、支持http post发送内容到平台，支持对接webhook、telegram、企业微信、飞书的一键推送，支持内容热力图组件等个性化组件，它完全属于个人的自定化使用，会加入定制化的一些功能，由于代码已重构，不同步于原版

预览：<a href="https://note.noisework.cn">https://note.noisework.cn</a>

源码：<a href="https://github.com/rcy1314/echo-noise">https://github.com/rcy1314/echo-noise</a>

原版介绍

Ech0 是一款专为轻量级分享而设计的开源自托管平台，支持快速发布与分享你的想法、文字与链接。简单直观的操作界面，轻松管理你的内容，让分享变得更加自由，确保数据完全掌控，随时随地与世界连接。

原版地址：<a href="https://github.com/lin-snow/Ech0">https://github.com/lin-snow/Ech0</a>

<hr />

<img src="https://s2.loli.net/2025/04/12/EFS8AqWZ7TQJdtr.png" alt="268shot99" />
<h2>整体改版</h2>
<h3>编辑器部分：</h3>
<ol>
 	<li>自适应高度和拖拽调整功能</li>
 	<li>扩展的工具栏功能</li>
 	<li>完整的响应式支持</li>
 	<li>平滑的过渡动画效果</li>
 	<li>优化的间距和字体设置</li>
 	<li>md格式图片即时预览</li>
 	<li>添加定制化的组件</li>
</ol>
<h2>主页部分：</h2>
<ol>
 	<li>调整页面内容自适应高度和宽度</li>
 	<li>添加随机背景图的展示并带有模糊效果</li>
 	<li>增加md 格式下对网易云音乐、哔哩哔哩视频、youtube、qq 音乐的解析渲染</li>
 	<li>调整信息条目的背景ui 及显示尺寸的优化</li>
 	<li>调整ui及加载响应页面的整体显示效果</li>
 	<li>添加朋友圈样式主图banner,并和背景图使用相同</li>
 	<li>所有链接都可通过新标签页打开</li>
 	<li>长内容的折叠展开处理</li>
 	<li>完善的二次编辑及预览保存</li>
 	<li>一键复制及生成内容图片的功能化组件</li>
 	<li>增加标签系统路由及组件</li>
</ol>
<h2>代码部分</h2>
<ol>
 	<li>调整jwk验证为session方式，同时调整token的验证机制</li>
 	<li>调整优化数据库的迁移及连接处理</li>
 	<li>增加不同的路由及调整控制器</li>
 	<li>增加额外的外挂插件文件</li>
 	<li>增加定期清理缓存</li>
</ol>
<h2>特征</h2>
<ul>
 	<li>一键部署无服务器平台-fly.io、zeabur、railway、vercel</li>
 	<li>外部扩展-支持快捷指令及popclip一键发布内容到站点</li>
 	<li>支持推送渠道（webhook、tg、企业微信、飞书）</li>
 	<li>标签系统和图片api 路由</li>
 	<li>支持链接远程数据库PostgreSQL、MySQL的连接支持，默认SQLite</li>
 	<li>个性化前端组件如发布日历-热力图组件，默认不显示，点击日历图标后显示

<img src="https://s2.loli.net/2025/04/04/Jf48HmYjvCk1sVU.png" alt="1743765992985_副本" />

<img src="https://s2.loli.net/2025/03/27/vCKs1ZtPqO8n7jY.png" alt="01.45.31" /></li>
 	<li>内容二次编辑及一键复制一键生成内容图片</li>
 	<li>数据库文件的一键备份、上传

<img src="https://s2.loli.net/2025/04/01/ehS1BxwbUKyD2Vm.png" alt="ehS1BxwbUKyD2Vm" /></li>
</ul>

<hr />

<h2>安装部署</h2>
<blockquote>💡 部署完成后访问 ip:1314 即可使用</blockquote>
<h2><a href="https://hub.docker.com/repository/docker/noise233/echo-noise">docker部署</a></h2>
一键部署
<pre><code>docker run -d \
  --name Ech0-Noise \
  --platform linux/amd64 \
  -p 1314:1314 \
  -v /opt/data/noise.db:/app/data/noise.db \
  noise233/echo-noise
</code></pre>
<code>/opt/data/noise.db</code>是你本地的原有数据库文件，如果没有，可以去掉这个挂载命令，它也会自动创建

说明：如果你是经常使用附件图片发布内容的则可以这样：-v /opt/data:/app/data \

默认用户名：admin

默认用户密码：admin
<h3>docker-componse构建部署</h3>
在该目录下执行以下命令启动服务（不修改环境变量时默认使用本地数据库.db 文件）：
<pre><code class="hljs language-shell">docker-compose up -d
</code></pre>
<h2>无服务器平台+postgres免费数据库部署</h2>
数据库使用 <a href="https://console.neon.tech/">Neon PostgreSQL</a> 云数据库服务，其它也支持

请先前往官网<a href="https://console.neon.tech%E9%83%A8%E7%BD%B2%E5%A5%BD%E4%BD%A0%E7%9A%84%E5%9F%BA%E7%A1%80%E6%95%B0%E6%8D%AE%E5%BA%93">https://console.neon.tech部署好你的基础数据库</a>

以下部署文件已放入根目录下的noise文件夹内

部署成功示例：

<img src="https://s2.loli.net/2025/04/12/SDOAt8BsdIiCzXF.png" alt="SDOAt8BsdIiCzXF" />
<h3>Fly.io部署</h3>
fly.toml
<pre><code>app = 'ech0-noise'    # 修改为你的自定义容器名
primary_region = 'hkg'

[experimental]
  auto_rollback = true

[build]
  image = 'noise233/echo-noise'
  dockerfile = 'Dockerfile'

[env]
  CGO_ENABLED = '1'
  DB_HOST = 'example.aws.neon.tech' # 修改为数据库的HOST地址
  DB_NAME = 'noise'        # 修改为数据库的名称
  DB_PASSWORD = 'example'  # 修改为数据库的密码
  DB_PORT = '5432'
  DB_SSL_MODE = 'require'
  DB_TYPE = 'postgres'
  DB_USER = 'noise_owner'  # 修改为数据库的用户名
  TZ = 'Asia/Shanghai'

[http_service]
  internal_port = 1314
  force_https = true
  auto_stop_machines = 'stop'
  auto_start_machines = true
  min_machines_running = 0

[[services]]
  protocol = 'tcp'
  internal_port = 1314

  [[services.ports]]
    port = 1314

[[vm]]
  memory = '512mb'
  cpu_kind = 'shared'
  cpus = 1
</code></pre>
部署命令 在准备好 fly.toml 文件后，你可以使用以下命令来部署你的应用到 Fly.io：
<h4>初始化 Fly.io 应用（如果尚未初始化）</h4>
<code>fly launch</code>
<h4>部署应用</h4>
<code>fly deploy</code>

确保你已经安装并配置好了 Fly.io 的 CLI 工具，并且已经登录到你的 Fly.io 账号。如果你还没有安装 Fly.io CLI，可以通过以下命令安装：
<pre><code>curl -L https://fly.io/install.sh | sh
</code></pre>
安装完成后，使用 <code>fly auth login</code> 登录到你的 Fly.io 账号。
<h3>zeabur部署</h3>
zeabur.toml
<pre><code>app = "ech0-noise"

[build]
  dockerfile = "Dockerfile"
  image = "noise233/echo-noise"

[env]
  DB_TYPE = "postgres"
  DB_HOST = 'example.aws.neon.tech' # 修改为数据库的HOST地址
  DB_PORT = "5432"
  DB_USER = 'noise_owner'  # 修改为数据库的用户名
  DB_PASSWORD = 'example'  # 修改为数据库的密码
  DB_NAME = 'noise'        # 修改为数据库的名称
  DB_SSL_MODE = "require"
  CGO_ENABLED = "1"
  TZ = "Asia/Shanghai"

[http_service]
  internal_port = 1314
  force_https = true

[[services]]
  protocol = "tcp"
  internal_port = 1314

  [[services.ports]]
    port = 1314

[[vm]]
  memory = "512mb"
  cpu_kind = "shared"
  cpus = 1
</code></pre>
<h4>部署命令：</h4>
<pre><code>zeabur deploy
</code></pre>
<h3>Railway部署</h3>
railway.toml
<pre><code>app = "ech0-noise"

[build]
  dockerfile = "Dockerfile"
  image = "noise233/echo-noise"

[env]
  DB_TYPE = "postgres"
  DB_HOST = 'example.aws.neon.tech' # 修改为数据库的HOST地址
  DB_PORT = "5432"
  DB_USER = 'noise_owner'  # 修改为数据库的用户名
  DB_PASSWORD = 'example'  # 修改为数据库的密码
  DB_NAME = 'noise'        # 修改为数据库的名称
  DB_SSL_MODE = "require"
  CGO_ENABLED = "1"
  TZ = "Asia/Shanghai"

[service]
  internal_port = 1314
  protocol = "tcp"

[service.ports]
  port = 1314

[vm]
  memory = "512mb"
  cpu_kind = "shared"
  cpus = 1
</code></pre>
<h4>部署命令：</h4>
<pre><code>railway up
</code></pre>
<img src="https://s2.loli.net/2025/03/25/7gyEspef1ZhOtrH.png" alt="预览" />

注意⚠️

如果你是直接在平台拉取项目部署而不是通过命令部署，你需要拷贝fork本项目并将fly.toml、railway.toml、zeabur.toml文件放入根目录下才能一键部署
<h2>数据库连接部分</h2>
本地数据库直接docker部署即可

远程数据库服务则可以通过环境变量连接

连接远程 PostgreSQL：
<pre><code class="hljs language-bash">docker run -d \
  --name Ech0-Noise \
  --platform linux/amd64 \
  -p 1314:1314 \
  -e DB_TYPE=postgres \
  -e DB_HOST=your.postgres.host \
  -e DB_PORT=5432 \
  -e DB_USER=your_username \
  -e DB_PASSWORD=your_password \
  -e DB_NAME=noise \
  -v /opt/data/images:/app/data/images \
  noise233/echo-noise
</code></pre>
连接远程 MySQL：
<pre><code class="hljs language-bash">docker run -d \
  --name Ech0-Noise \
  --platform linux/amd64 \
  -p 1314:1314 \
  -e DB_TYPE=mysql \
  -e DB_HOST=your.mysql.host \
  -e DB_PORT=3306 \
  -e DB_USER=your_username \
  -e DB_PASSWORD=your_password \
  -e DB_NAME=noise \
  -v /opt/data/images:/app/data/images \
  noise233/echo-noise
</code></pre>
注意事项：
<ol>
 	<li>确保远程数据库允许外部连接</li>
 	<li>检查防火墙设置</li>
 	<li>使用正确的数据库连接信息</li>
 	<li>建议使用加密连接</li>
 	<li>注意数据库的字符集设置</li>
</ol>
对于 Neon PostgreSQL （地址<a href="https://console.neon.tech">https://console.neon.tech</a> ）这样的云数据库服务，需要使用特定的连接参数。以下是连接命令：
<pre><code class="hljs language-bash">docker run -d \
  --name Ech0-Noise \
  --platform linux/amd64 \
  -p 1314:1314 \
  -e DB_TYPE=postgres \
  -e DB_HOST=your.host \
  -e DB_PORT=5432 \
  -e DB_USER=user_owner \
  -e DB_PASSWORD=password \
  -e DB_NAME=yourname \
  -e DB_SSL_MODE=require \
  -v /opt/data/images:/app/data/images \
  noise233/echo-noise
</code></pre>
注意事项：
<ol>
 	<li>添加了 <code>DB_SSL_MODE=require</code> 环境变量，因为 Neon 要求 SSL 连接</li>
 	<li>使用了连接 URL 中提供的主机名、用户名、密码和数据库名</li>
 	<li>保持图片目录的挂载</li>
</ol>
<h2>数据的备份恢复</h2>
对于所有数据库类型（SQLite/PostgreSQL/MySQL），点击后台数据库下载按钮后，都会先备份数据库文件
<ul>
 	<li>然后会将包含数据库备份和图片打包成 zip 文件</li>
 	<li>zip 文件中会包含：
<ul>
 	<li>数据库备份文件（.db/.sql）</li>
 	<li>images 目录下的所有图片</li>
</ul>
</li>
</ul>
<pre><code class="hljs language-plaintext">备份过程：
本地 -&gt; 执行备份命令 -&gt; 生成备份文件 -&gt; 打包下载

恢复过程：
上传备份文件 -&gt; 解压缩 -&gt; 执行恢复命令 -&gt; 导入到云数据库
</code></pre>
恢复要求：
<ul>
 	<li>SQLite本地数据库备份和上传时默认使用的文件名是一致为noise.db</li>
 	<li>非本地数据库PostgreSQL/MySQL请命名为database.sql并放入database.zip来恢复</li>
 	<li>如果备份时zip中有图片文件夹则同时会恢复 images 目录下的所有图片</li>
</ul>
⚠️ ：因PostgreSQL/MySQL云服务会有SSL连接、兼容版本号、数据表格式等要求，后台一键备份恢复不一定能满足你需要连接的远程数据库，请尽量前往服务商处下载备份
<h2>API指南🧭</h2>
先到后台获取api token,然后可以参考下面的命令运行或使用其它服务（记得将<a href="https://your.localhost.com">https://your.localhost.com</a> 更改为你自己的服务地址）

<img src="https://s2.loli.net/2025/04/05/QqLEC1HUw2J9XO8.png" alt="1743847126537" />
<pre><code># 发送纯文本信息
curl -X POST 'https://your.localhost.com/api/token/messages' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer c721249bd66e1133fba430ea9e3c32f1' \
-d '{
  "content": "测试信息",
  "type": "text"
}'
</code></pre>
<pre><code># 方式1：使用 Markdown 语法发送文本
curl -X POST 'https://your.localhost.com/api/token/messages' \
-H 'Content-Type: application/json' \
-H 'Authorization: c721249bd66e1133fba430ea9e3c32f1' \
-d '{
  "content": "# 标题\
这是一段文字\
![图片描述](https://example.com/image.jpg)",
  "type": "text"
}'

# 方式2：使用 type: image 发送图片消息
curl -X POST 'https://your.localhost.com/api/token/messages' \
-H 'Content-Type: application/json' \
-H 'Authorization: c721249bd66e1133fba430ea9e3c32f1' \
-d '{
  "content": "图片描述文字",
  "type": "image",
  "image": "https://example.com/image.jpg"
}'
</code></pre>
如果你想使用session 认证方式
<pre><code>curl -v -X POST 'https://your.localhost.com/api/messages' \
-H 'Content-Type: application/json' \
--cookie "your_session_cookie" \
-d '{
  "content": "测试信息",
  "type": "text"
}'
</code></pre>
对于图文混合消息，可以这样发送：
<pre><code class="hljs language-bash">curl -X POST <span class="hljs-string">'https://your.localhost.com/api/token/messages'</span> \
-H <span class="hljs-string">'Content-Type: application/json'</span> \
-H <span class="hljs-string">'Authorization: c721249bd66e1133fba430ea9e3c32f1'</span> \
-d <span class="hljs-string">'{
  "content": "# 这是标题\
\
这是一段文字说明\
\
![图片描述](https://example.com/image.jpg)\
\
继续写文字内容",
  "type": "text"
}'</span>
</code></pre>
<pre><code>或者使用 multipart 类型：

curl -X POST 'https://your.localhost.com/api/token/messages' \
-H 'Content-Type: application/json' \
-H 'Authorization: c721249bd66e1133fba430ea9e3c32f1' \
-d '{
  "content": "# 这是标题\
\
这是一段文字说明",
  "type": "multipart",
  "image": "https://example.com/image.jpg"
}
</code></pre>
<h1>API 文档（待增加）</h1>
<h2>公共接口</h2>
<h3>1. 获取前端配置</h3>
<ul>
 	<li><strong>路径</strong>: <code>/api/frontend/config</code></li>
 	<li><strong>方法</strong>: GET</li>
 	<li><strong>描述</strong>: 获取前端配置信息</li>
 	<li><strong>示例请求</strong>:</li>
</ul>
<pre><code class="hljs language-bash">curl http://localhost:8080/api/frontend/config
</code></pre>
<h3>2. 用户登录</h3>
<ul>
 	<li><strong>路径</strong>: <code>/api/login</code></li>
 	<li><strong>方法</strong>: POST</li>
 	<li><strong>描述</strong>: 用户登录接口</li>
 	<li><strong>请求体</strong>:</li>
</ul>
<pre><code class="hljs language-json"><span class="hljs-punctuation">{</span>
    <span class="hljs-attr">"username"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"admin"</span><span class="hljs-punctuation">,</span>
    <span class="hljs-attr">"password"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"password"</span>
<span class="hljs-punctuation">}</span>
</code></pre>
<ul>
 	<li><strong>示例请求</strong>:</li>
</ul>
<pre><code class="hljs language-bash">curl -X POST http://localhost:8080/api/login \
     -H <span class="hljs-string">"Content-Type: application/json"</span> \
     -d <span class="hljs-string">'{"username":"admin","password":"password"}'</span>
</code></pre>
<h3>3. 用户注册</h3>
<ul>
 	<li><strong>路径</strong>: <code>/api/register</code></li>
 	<li><strong>方法</strong>: POST</li>
 	<li><strong>描述</strong>: 用户注册接口</li>
 	<li><strong>请求体</strong>:</li>
</ul>
<pre><code class="hljs language-json"><span class="hljs-punctuation">{</span>
    <span class="hljs-attr">"username"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"newuser"</span><span class="hljs-punctuation">,</span>
    <span class="hljs-attr">"password"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"password"</span><span class="hljs-punctuation">,</span>
    <span class="hljs-attr">"email"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"user@example.com"</span>
<span class="hljs-punctuation">}</span>
</code></pre>
<ul>
 	<li><strong>示例请求</strong>:</li>
</ul>
<pre><code class="hljs language-bash">curl -X POST http://localhost:8080/api/register \
     -H <span class="hljs-string">"Content-Type: application/json"</span> \
     -d <span class="hljs-string">'{"username":"newuser","password":"password","email":"user@example.com"}'</span>
</code></pre>
<h3>4. 获取系统状态</h3>
<ul>
 	<li><strong>路径</strong>: <code>/api/status</code></li>
 	<li><strong>方法</strong>: GET</li>
 	<li><strong>描述</strong>: 获取系统运行状态</li>
 	<li><strong>示例请求</strong>:</li>
</ul>
<pre><code class="hljs language-bash">curl http://localhost:8080/api/status
</code></pre>
<h3>5. 消息相关公共接口</h3>
<h4>5.1 获取所有消息</h4>
<ul>
 	<li><strong>路径</strong>: <code>/api/messages</code></li>
 	<li><strong>方法</strong>: GET</li>
 	<li><strong>描述</strong>: 获取所有公开消息</li>
 	<li><strong>示例请求</strong>:</li>
</ul>
<pre><code class="hljs language-bash">curl http://localhost:8080/api/messages
</code></pre>
<h4>5.2 获取单条消息</h4>
<ul>
 	<li><strong>路径</strong>: <code>/api/messages/:id</code></li>
 	<li><strong>方法</strong>: GET</li>
 	<li><strong>描述</strong>: 获取指定ID的消息</li>
 	<li><strong>示例请求</strong>:</li>
</ul>
<pre><code class="hljs language-bash">curl http://localhost:8080/api/messages/1
</code></pre>
<h4>5.3 分页获取消息</h4>
<ul>
 	<li><strong>路径</strong>: <code>/api/messages/page</code></li>
 	<li><strong>方法</strong>: POST或GET</li>
 	<li><strong>描述</strong>: 分页获取消息列表</li>
 	<li><strong>请求体</strong>:</li>
</ul>
<pre><code class="hljs language-json"><span class="hljs-punctuation">{</span>
    <span class="hljs-attr">"page"</span><span class="hljs-punctuation">:</span> <span class="hljs-number">1</span><span class="hljs-punctuation">,</span>
    <span class="hljs-attr">"pageSize"</span><span class="hljs-punctuation">:</span> <span class="hljs-number">10</span>
<span class="hljs-punctuation">}</span>
</code></pre>
<ul>
 	<li><strong>示例请求</strong>:</li>
</ul>
<pre><code class="hljs language-bash">curl -X POST http://localhost:8080/api/messages/page \
     -H <span class="hljs-string">"Content-Type: application/json"</span> \
     -d <span class="hljs-string">'{"page":1,"pageSize":10}'</span>
</code></pre>
<h4>5.4 获取消息日历数据</h4>
<ul>
 	<li><strong>路径</strong>: <code>/api/messages/calendar</code></li>
 	<li><strong>方法</strong>: GET</li>
 	<li><strong>描述</strong>: 获取消息发布热力图数据</li>
 	<li><strong>示例请求</strong>:</li>
</ul>
<pre><code class="hljs language-bash">curl http://localhost:8080/api/messages/calendar
</code></pre>
<h4>5.5 搜索消息</h4>
<ul>
 	<li><strong>路径</strong>: <code>/api/messages/search</code></li>
 	<li><strong>方法</strong>: GET</li>
 	<li><strong>参数</strong>:
<ul>
 	<li>keyword: 搜索关键词</li>
 	<li>page: 页码</li>
 	<li>pageSize: 每页数量</li>
</ul>
</li>
 	<li><strong>示例请求</strong>:</li>
</ul>
<pre><code class="hljs language-bash">curl <span class="hljs-string">"http://localhost:8080/api/messages/search?keyword=测试&amp;page=1&amp;pageSize=10"</span>
</code></pre>
<h3>6. RSS 相关接口</h3>
<h4>6.1 获取 RSS 订阅</h4>
<ul>
 	<li><strong>路径</strong>: <code>/rss</code></li>
 	<li><strong>方法</strong>: GET</li>
 	<li><strong>描述</strong>: 获取 RSS 订阅内容</li>
 	<li><strong>示例请求</strong>:</li>
</ul>
<pre><code class="hljs language-bash">curl http://localhost:1314/rss
</code></pre>
<h2>需要认证的接口</h2>
<h3>1. 消息操作接口</h3>
<h4>1.1 发布消息</h4>
<ul>
 	<li><strong>路径</strong>: <code>/api/messages</code></li>
 	<li><strong>方法</strong>: POST</li>
 	<li><strong>描述</strong>: 发布新消息</li>
 	<li><strong>请求体</strong>:</li>
</ul>
<pre><code class="hljs language-json"><span class="hljs-punctuation">{</span>
    <span class="hljs-attr">"content"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"消息内容"</span><span class="hljs-punctuation">,</span>
    <span class="hljs-attr">"private"</span><span class="hljs-punctuation">:</span> <span class="hljs-literal"><span class="hljs-keyword">false</span></span><span class="hljs-punctuation">,</span>
    <span class="hljs-attr">"imageURL"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">""</span>
<span class="hljs-punctuation">}</span>
</code></pre>
<ul>
 	<li><strong>示例请求</strong>:</li>
</ul>
<pre><code class="hljs language-bash">curl -X POST http://localhost:8080/api/messages \
     -H <span class="hljs-string">"Content-Type: application/json"</span> \
     -H <span class="hljs-string">"Cookie: session=xxx"</span> \
     -d <span class="hljs-string">'{"content":"测试消息","private":false}'</span>
</code></pre>
<h4>1.2 更新消息</h4>
<ul>
 	<li><strong>路径</strong>: <code>/api/messages/:id</code></li>
 	<li><strong>方法</strong>: PUT</li>
 	<li><strong>描述</strong>: 更新指定消息</li>
 	<li><strong>请求体</strong>:</li>
</ul>
<pre><code class="hljs language-json"><span class="hljs-punctuation">{</span>
    <span class="hljs-attr">"content"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"更新后的内容"</span>
<span class="hljs-punctuation">}</span>
</code></pre>
<ul>
 	<li><strong>示例请求</strong>:</li>
</ul>
<pre><code class="hljs language-bash">curl -X PUT http://localhost:8080/api/messages/1 \
     -H <span class="hljs-string">"Content-Type: application/json"</span> \
     -H <span class="hljs-string">"Cookie: session=xxx"</span> \
     -d <span class="hljs-string">'{"content":"更新后的内容"}'</span>
</code></pre>
<h4>1.3 删除消息</h4>
<ul>
 	<li><strong>路径</strong>: <code>/api/messages/:id</code></li>
 	<li><strong>方法</strong>: DELETE</li>
 	<li><strong>描述</strong>: 删除指定消息</li>
 	<li><strong>示例请求</strong>:</li>
</ul>
<pre><code class="hljs language-bash">curl -X DELETE http://localhost:8080/api/messages/1 \
     -H <span class="hljs-string">"Cookie: session=xxx"</span>
</code></pre>
<h3>2. 用户相关接口</h3>
<h4>2.1 获取用户信息</h4>
<ul>
 	<li><strong>路径</strong>: <code>/api/user</code></li>
 	<li><strong>方法</strong>: GET</li>
 	<li><strong>描述</strong>: 获取当前登录用户信息</li>
 	<li><strong>示例请求</strong>:</li>
</ul>
<pre><code class="hljs language-bash">curl http://localhost:8080/api/user \
     -H <span class="hljs-string">"Cookie: session=xxx"</span>
</code></pre>
<h4>2.2 修改密码</h4>
<ul>
 	<li><strong>路径</strong>: <code>/api/user/change_password</code></li>
 	<li><strong>方法</strong>: PUT</li>
 	<li><strong>请求体</strong>:</li>
</ul>
<pre><code class="hljs language-json"><span class="hljs-punctuation">{</span>
    <span class="hljs-attr">"oldPassword"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"旧密码"</span><span class="hljs-punctuation">,</span>
    <span class="hljs-attr">"newPassword"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"新密码"</span>
<span class="hljs-punctuation">}</span>
</code></pre>
<ul>
 	<li><strong>示例请求</strong>:</li>
</ul>
<pre><code class="hljs language-bash">curl -X PUT http://localhost:8080/api/user/change_password \
     -H <span class="hljs-string">"Content-Type: application/json"</span> \
     -H <span class="hljs-string">"Cookie: session=xxx"</span> \
     -d <span class="hljs-string">'{"oldPassword":"old","newPassword":"new"}'</span>
</code></pre>
<h4>2.3 更新用户信息</h4>
<ul>
 	<li><strong>路径</strong>: <code>/api/user/update</code></li>
 	<li><strong>方法</strong>: PUT</li>
 	<li><strong>示例请求</strong>:</li>
</ul>
<pre><code class="hljs language-bash">curl -X PUT http://localhost:8080/api/user/update \
     -H <span class="hljs-string">"Content-Type: application/json"</span> \
     -H <span class="hljs-string">"Cookie: session=xxx"</span> \
     -d <span class="hljs-string">'{"username":"newname"}'</span>
</code></pre>
<h4>2.4 退出登录</h4>
<ul>
 	<li><strong>路径</strong>: <code>/api/user/logout</code></li>
 	<li><strong>方法</strong>: POST</li>
 	<li><strong>示例请求</strong>:</li>
</ul>
<pre><code class="hljs language-bash">curl -X POST http://localhost:8080/api/user/logout \
     -H <span class="hljs-string">"Cookie: session=xxx"</span>
</code></pre>
<h3>3. Token 相关接口</h3>
<h4>3.1 获取用户 Token</h4>
<ul>
 	<li><strong>路径</strong>: <code>/api/user/token</code></li>
 	<li><strong>方法</strong>: GET</li>
 	<li><strong>示例请求</strong>:</li>
</ul>
<pre><code class="hljs language-bash">curl http://localhost:8080/api/user/token \
     -H <span class="hljs-string">"Cookie: session=xxx"</span>
</code></pre>
<h4>3.2 重新生成 Token</h4>
<ul>
 	<li><strong>路径</strong>: <code>/api/user/token/regenerate</code></li>
 	<li><strong>方法</strong>: POST</li>
 	<li><strong>示例请求</strong>:</li>
</ul>
<pre><code class="hljs language-bash">curl -X POST http://localhost:8080/api/user/token/regenerate \
     -H <span class="hljs-string">"Cookie: session=xxx"</span>
</code></pre>
<h3>4. 系统设置接口</h3>
<h4>4.1 更新系统设置</h4>
<ul>
 	<li><strong>路径</strong>: <code>/api/settings</code></li>
 	<li><strong>方法</strong>: PUT</li>
 	<li><strong>请求体</strong>:</li>
</ul>
<pre><code class="hljs language-json"><span class="hljs-punctuation">{</span>
    <span class="hljs-attr">"allowRegistration"</span><span class="hljs-punctuation">:</span> <span class="hljs-literal"><span class="hljs-keyword">true</span></span><span class="hljs-punctuation">,</span>
    <span class="hljs-attr">"frontendSettings"</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">{</span>
        <span class="hljs-attr">"siteTitle"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"网站标题"</span><span class="hljs-punctuation">,</span>
        <span class="hljs-attr">"subtitleText"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"副标题"</span><span class="hljs-punctuation">,</span>
        <span class="hljs-attr">"avatarURL"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"头像URL"</span><span class="hljs-punctuation">,</span>
        <span class="hljs-attr">"username"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"显示用户名"</span><span class="hljs-punctuation">,</span>
        <span class="hljs-attr">"description"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"描述"</span><span class="hljs-punctuation">,</span>
        <span class="hljs-attr">"backgrounds"</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">[</span><span class="hljs-string">"背景图URL"</span><span class="hljs-punctuation">]</span><span class="hljs-punctuation">,</span>
        <span class="hljs-attr">"cardFooterTitle"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"页脚标题"</span><span class="hljs-punctuation">,</span>
        <span class="hljs-attr">"cardFooterLink"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"页脚链接"</span><span class="hljs-punctuation">,</span>
        <span class="hljs-attr">"pageFooterHTML"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"页脚HTML"</span><span class="hljs-punctuation">,</span>
        <span class="hljs-attr">"rssTitle"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"RSS标题"</span><span class="hljs-punctuation">,</span>
        <span class="hljs-attr">"rssDescription"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"RSS描述"</span><span class="hljs-punctuation">,</span>
        <span class="hljs-attr">"rssAuthorName"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"RSS作者"</span><span class="hljs-punctuation">,</span>
        <span class="hljs-attr">"rssFaviconURL"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"RSS图标URL"</span><span class="hljs-punctuation">,</span>
        <span class="hljs-attr">"walineServerURL"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"评论系统URL"</span>
    <span class="hljs-punctuation">}</span>
<span class="hljs-punctuation">}</span>
</code></pre>
<ul>
 	<li><strong>示例请求</strong>:</li>
</ul>
<pre><code class="hljs language-bash">curl -X PUT http://localhost:8080/api/settings \
     -H <span class="hljs-string">"Content-Type: application/json"</span> \
     -H <span class="hljs-string">"Cookie: session=xxx"</span> \
     -d <span class="hljs-string">'{"allowRegistration":true,"frontendSettings":{"siteTitle":"我的网站"}}'</span>
</code></pre>
<h3>5. 备份相关接口</h3>
<h4>5.1 下载备份</h4>
<ul>
 	<li><strong>路径</strong>: <code>/api/backup/download</code></li>
 	<li><strong>方法</strong>: GET</li>
 	<li><strong>示例请求</strong>:</li>
</ul>
<pre><code class="hljs language-bash">curl http://localhost:8080/api/backup/download \
     -H <span class="hljs-string">"Cookie: session=xxx"</span> \
     --output backup.sql
</code></pre>
<h4>5.2 恢复备份</h4>
<ul>
 	<li><strong>路径</strong>: <code>/api/backup/restore</code></li>
 	<li><strong>方法</strong>: POST</li>
 	<li><strong>描述</strong>: 从备份文件恢复数据</li>
 	<li><strong>示例请求</strong>:</li>
</ul>
<pre><code class="hljs language-bash">curl -X POST http://localhost:8080/api/backup/restore \
     -H <span class="hljs-string">"Cookie: session=xxx"</span> \
     -F <span class="hljs-string">"file=@backup.sql"</span>
</code></pre>
<h3>6. 图片上传接口</h3>
<h4>6.1 上传图片</h4>
<ul>
 	<li><strong>路径</strong>: <code>/api/images/upload</code></li>
 	<li><strong>方法</strong>: POST</li>
 	<li><strong>描述</strong>: 上传图片文件</li>
 	<li><strong>示例请求</strong>:</li>
</ul>
<pre><code class="hljs language-bash">curl -X POST http://localhost:8080/api/images/upload \
     -H <span class="hljs-string">"Cookie: session=xxx"</span> \
     -F <span class="hljs-string">"file=@image.jpg"</span>
</code></pre>
<h3>7.推送配置路由使用说明</h3>
<h4>获取推送配置</h4>
<ul>
 	<li><strong>路径</strong>: <code>/api/notify/config</code></li>
 	<li><strong>方法</strong>: GET</li>
 	<li><strong>描述</strong>: 获取当前推送渠道配置</li>
 	<li><strong>示例请求</strong>:</li>
</ul>
<pre><code class="hljs language-bash">curl -X GET http://localhost:8080/api/notify/config \
     -H <span class="hljs-string">"Cookie: session=xxx"</span>
</code></pre>
<h4>保存推送配置</h4>
<ul>
 	<li><strong>路径</strong>: <code>/api/notify/config</code></li>
 	<li><strong>方法</strong>: PUT</li>
 	<li><strong>描述</strong>: 更新推送渠道配置</li>
 	<li><strong>请求体示例</strong>:</li>
</ul>
<pre><code class="hljs language-json"><span class="hljs-punctuation">{</span>
  <span class="hljs-attr">"webhookEnabled"</span><span class="hljs-punctuation">:</span> <span class="hljs-literal"><span class="hljs-keyword">true</span></span><span class="hljs-punctuation">,</span>
  <span class="hljs-attr">"webhookURL"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"https://webhook.example.com"</span><span class="hljs-punctuation">,</span>
  <span class="hljs-attr">"telegramEnabled"</span><span class="hljs-punctuation">:</span> <span class="hljs-literal"><span class="hljs-keyword">true</span></span><span class="hljs-punctuation">,</span>
  <span class="hljs-attr">"telegramToken"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"bot123:ABC"</span><span class="hljs-punctuation">,</span>
  <span class="hljs-attr">"telegramChatID"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"-100123456"</span><span class="hljs-punctuation">,</span>
  <span class="hljs-attr">"weworkEnabled"</span><span class="hljs-punctuation">:</span> <span class="hljs-literal"><span class="hljs-keyword">false</span></span><span class="hljs-punctuation">,</span>
  <span class="hljs-attr">"weworkKey"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">""</span><span class="hljs-punctuation">,</span>
  <span class="hljs-attr">"feishuEnabled"</span><span class="hljs-punctuation">:</span> <span class="hljs-literal"><span class="hljs-keyword">true</span></span><span class="hljs-punctuation">,</span>
  <span class="hljs-attr">"feishuWebhook"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"https://open.feishu.cn/xxx"</span><span class="hljs-punctuation">,</span>
  <span class="hljs-attr">"feishuSecret"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"signature_key"</span>
<span class="hljs-punctuation">}</span>
</code></pre>
<ul>
 	<li><strong>示例请求</strong>:</li>
</ul>
<pre><code class="hljs language-bash">curl -X PUT http://localhost:8080/api/notify/config \
     -H <span class="hljs-string">"Cookie: session=xxx"</span> \
     -H <span class="hljs-string">"Content-Type: application/json"</span> \
     -d <span class="hljs-string">'{
           "webhookEnabled": true,
           "webhookURL": "https://webhook.example.com"
         }'</span>
</code></pre>
<h4>测试推送</h4>
<ul>
 	<li><strong>路径</strong>: <code>/api/notify/test</code></li>
 	<li><strong>方法</strong>: POST</li>
 	<li><strong>描述</strong>: 测试指定推送渠道</li>
 	<li><strong>请求体示例</strong>:</li>
</ul>
<pre><code class="hljs language-json"><span class="hljs-punctuation">{</span>
  <span class="hljs-attr">"type"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"telegram"</span>
<span class="hljs-punctuation">}</span>
</code></pre>
<ul>
 	<li><strong>示例请求</strong>:</li>
</ul>
<pre><code class="hljs language-bash">curl -X POST http://localhost:8080/api/notify/test \
     -H <span class="hljs-string">"Cookie: session=xxx"</span> \
     -H <span class="hljs-string">"Content-Type: application/json"</span> \
     -d <span class="hljs-string">'{"type": "telegram"}'</span>
</code></pre>
<h4>发送推送</h4>
<ul>
 	<li><strong>路径</strong>: <code>/api/notify/send</code></li>
 	<li><strong>方法</strong>: POST</li>
 	<li><strong>描述</strong>: 手动触发推送（需已配置推送渠道）</li>
 	<li><strong>请求体示例</strong>:</li>
</ul>
<pre><code class="hljs language-json"><span class="hljs-punctuation">{</span>
  <span class="hljs-attr">"content"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"测试消息内容"</span><span class="hljs-punctuation">,</span>
  <span class="hljs-attr">"images"</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">[</span><span class="hljs-string">"https://example.com/image.jpg"</span><span class="hljs-punctuation">]</span><span class="hljs-punctuation">,</span>
  <span class="hljs-attr">"format"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"markdown"</span>
<span class="hljs-punctuation">}</span>
</code></pre>
<ul>
 	<li><strong>示例请求</strong>:</li>
</ul>
<pre><code class="hljs language-bash">curl -X POST http://localhost:8080/api/notify/send \
     -H <span class="hljs-string">"Cookie: session=xxx"</span> \
     -H <span class="hljs-string">"Content-Type: application/json"</span> \
     -d <span class="hljs-string">'{"content": "紧急通知！"}'</span>
</code></pre>
注意事项：
<ol>
 	<li>所有需要认证的接口都需要在请求头中携带有效的 session cookie</li>
 	<li>部分接口可能需要管理员权限</li>
 	<li>所有请求示例中的域名和端口号需要根据实际部署情况调整</li>
 	<li>文件上传接口需要使用 multipart/form-data 格式</li>
 	<li>Token 认证接口可以使用 Token 替代 session 进行认证</li>
</ol>
<h2>发布说明</h2>
目前会构建两个版本，

稳定版：latest镜像

实验版：last镜像

如果你需要构建自己的镜像发布-示例：
<pre><code>docker buildx build --platform linux/amd64,linux/arm64 -t noise233/echo-noise:latest --push --no-cache .
</code></pre>
<h1>Memos数据库迁移示例</h1>
其中，你需要设置设置源数据库和目标数据库的路径，源数据库为memos_prod.db（memos数据）目标数据库为database.db（本站数据库），你还需要修改构建插入的数据中的用户名为你自己的用户名，分别迁移了原文本内容、发布时间，可以在noise/memos迁移文件夹中找到该脚本

，运行python3 main.py即可，

<img src="https://s2.loli.net/2025/04/09/3yq8aMoOmJHIvlT.png" alt="1744202949838" />

迁移结束后将你的数据库文件和原图片文件夹（有的话）打包为zip格式，进入站点后台选择恢复数据上传即可。
<h2>Popclip发送扩展</h2>
选中后自动识别安装，发送时会自动添加一个popclip开头的标签，token可在后台找到
<pre><code>// #popclip extension for Send to Shuo
// name: 说说笔记
// icon: square filled 说
// language: javascript
// module: true
// entitlements: [network]
// options: [{
//   identifier: "siteUrl",
//   label: "服务端地址",
//   type: "string",
//   defaultValue: "https://note.noisework.cn",
//   description: "请确保地址正确，不要带末尾斜杠"
// }, {
//   identifier: "token",
//   label: "API Token",
//   type: "string",
//   description: "从设置页面获取最新Token"
// }]

async function sendToShuo(input, options) {
    try {
        // 参数预处理
        const siteUrl = (options.siteUrl || "").replace(/\/+$/g, "");
        const token = (options.token || "").trim();
        const content = (input.text || "").trim();
        
        // 验证参数
        if (!/^https:\/\/[\w.-]+(:\d+)?$/.test(siteUrl)) {
            throw new Error("地址格式错误，示例: https://note.noisework.cn");
        }
        if (!token) throw new Error("Token不能为空");
        if (!content) throw new Error("选中文本不能为空");

        // 发送请求
        await sendRequestWithXMLHttpRequest(siteUrl, token, content);
        PopClip.showText("✓ 发送成功");
    } catch (error) {
        handleRequestError(error);
    }
}

// 使用 XMLHttpRequest 实现网络请求
function sendRequestWithXMLHttpRequest(siteUrl, token, content) {
    return new Promise((resolve, reject) =&gt; {
        const xhr = new XMLHttpRequest();
        const url = `${siteUrl}/api/token/messages`;

        xhr.open("POST", url, true);
        xhr.setRequestHeader("Content-Type", "application/json");
        xhr.setRequestHeader("Authorization", `Bearer ${token}`);

        xhr.timeout = 10000; // 设置超时时间（10秒）
        
        // 设置回调函数
        xhr.onreadystatechange = () =&gt; {
            if (xhr.readyState === XMLHttpRequest.DONE) {
                if (xhr.status &gt;= 200 &amp;&amp; xhr.status &lt; 300) {
                    resolve(xhr.responseText);
                } else {
                    let errorMsg = `请求失败 (${xhr.status})`;
                    try {
                        const data = JSON.parse(xhr.responseText);
                        errorMsg = data.message || errorMsg;
                    } catch {}
                    reject(new Error(errorMsg));
                }
            }
        };

        // 处理网络错误
        xhr.onerror = () =&gt; reject(new Error("网络错误"));
        
        // 处理超时错误
        xhr.ontimeout = () =&gt; reject(new Error("请求超时"));

        try {
            // 发送请求
            const payload = JSON.stringify({
                content: `#Popclip\
${content}`,
                type: "text"
            });
            xhr.send(payload);
        } catch (error) {
            reject(new Error("请求发送失败: " + error.message));
        }
    });
}

// 错误处理
function handleRequestError(error) {
    console.error("请求错误:", error);
    
    const errorMap = {
        "Failed to fetch": "无法连接到服务器",
        "aborted": "请求超时",
        "网络错误": "网络错误",
        "401": "认证失败，请检查Token",
        "404": "API地址不存在"
    };

    const message = Object.entries(errorMap).find(([key]) =&gt; 
        error.message.includes(key)
    )?.[1] || `请求错误: ${error.message.split('\
')[0].slice(0, 50)}`;

    PopClip.showText(`❌ ${message}`);
}

exports.actions = [{
    title: "发送至说说笔记",
    code: sendToShuo,
    icon: "square filled 说"
}];
</code></pre>
<h2>Web组件示例</h2>
如果你想将内容作为说说嵌入或结合到你的网站、博客可以参考

说明：host为站点地址，limit为每页内容数量，domId为容器名，下面的代码展示了使用js来请求数据内容到前端并渲染处理的基本框架，其余需要你自己再丰富css样式和你自己的页面

html前端：
<pre><code>&lt;link rel="stylesheet" href=". assets="" css="" note.css"=""&gt;&lt;/link rel="stylesheet" href=".&gt;
<!--&nbsp;note容器部分&nbsp;-->
        &lt;div id="note" class="note page active"&gt;&lt;/div id="note" class="note page active"&gt;
        &lt;div class="note-container"&gt;&lt;/div class="note-container"&gt;
        &lt;div class="loading-wrapper" style="text-align: center; padding: 20px;"&gt;&lt;/div class="loading-wrapper" style="text-align: center; padding: 20px;"&gt;
        加载中...
        
        
 &lt;script type="text javascript"=""&gt;&lt;/script type="text&gt;
    var note = {
        host: 'https://note.noisework.cn', //请修改为你自己的站点地址
        limit: '10',
        domId: '#note'
    }

<!--&nbsp;添加note.js脚本&nbsp;-->
&lt;script type="text javascript" src="./assets/js/note.js"&gt;&lt;/script type="text&gt;
</code></pre>
note.js
<pre><code class="hljs language-js"><span class="hljs-comment">// Note says content loading script</span>
<span class="hljs-variable language_">document</span>.<span class="hljs-title function_">addEventListener</span>(<span class="hljs-string">'DOMContentLoaded'</span>, <span class="hljs-keyword">function</span>() {
    <span class="hljs-comment">// get parameters from global configuration</span>
    <span class="hljs-keyword">const</span> config = <span class="hljs-variable language_">window</span>.<span class="hljs-property">note</span> || {
        <span class="hljs-attr">host</span>: <span class="hljs-string">'https://note.noisework.cn'</span>,
        <span class="hljs-attr">limit</span>: <span class="hljs-string">'10'</span>,
        <span class="hljs-attr">domId</span>: <span class="hljs-string">'#note'</span>
    };
    
    <span class="hljs-comment">// 修改容器选择器</span>
    <span class="hljs-keyword">const</span> container = <span class="hljs-variable language_">document</span>.<span class="hljs-title function_">querySelector</span>(<span class="hljs-string">'#note .note-container'</span>);
    <span class="hljs-keyword">let</span> currentPage = <span class="hljs-number">1</span>;
    <span class="hljs-keyword">let</span> isLoading = <span class="hljs-literal">false</span>;
    <span class="hljs-keyword">let</span> hasMore = <span class="hljs-literal">true</span>;
    
    <span class="hljs-comment">// create load more button</span>
    <span class="hljs-keyword">const</span> loadMoreBtn = <span class="hljs-variable language_">document</span>.<span class="hljs-title function_">createElement</span>(<span class="hljs-string">'button'</span>);
    loadMoreBtn.<span class="hljs-property">id</span> = <span class="hljs-string">'load-more-note'</span>;
    loadMoreBtn.<span class="hljs-property">className</span> = <span class="hljs-string">'load-more'</span>;
    loadMoreBtn.<span class="hljs-property">textContent</span> = <span class="hljs-string">'加载更多'</span>;
    loadMoreBtn.<span class="hljs-property">style</span>.<span class="hljs-property">display</span> = <span class="hljs-string">'none'</span>;
    loadMoreBtn.<span class="hljs-title function_">addEventListener</span>(<span class="hljs-string">'click'</span>, loadMoreContent);
    
    <span class="hljs-comment">// create already loaded all prompt</span>
    <span class="hljs-keyword">const</span> loadedAll = <span class="hljs-variable language_">document</span>.<span class="hljs-title function_">createElement</span>(<span class="hljs-string">'div'</span>);
    loadedAll.<span class="hljs-property">id</span> = <span class="hljs-string">'loaded-all-note'</span>;
    loadedAll.<span class="hljs-property">className</span> = <span class="hljs-string">'loaded-all'</span>;
    loadedAll.<span class="hljs-property">textContent</span> = <span class="hljs-string">'已加载全部'</span>;
    loadedAll.<span class="hljs-property">style</span>.<span class="hljs-property">display</span> = <span class="hljs-string">'none'</span>;
    
    container.<span class="hljs-title function_">appendChild</span>(loadMoreBtn);
    container.<span class="hljs-title function_">appendChild</span>(loadedAll);
    
    <span class="hljs-comment">// initial load</span>
    <span class="hljs-title function_">loadInitialContent</span>();
    
    <span class="hljs-keyword">async</span> <span class="hljs-keyword">function</span> <span class="hljs-title function_">loadInitialContent</span>() {
        <span class="hljs-keyword">try</span> {
            <span class="hljs-variable language_">console</span>.<span class="hljs-title function_">log</span>(<span class="hljs-string">`请求URL: <span class="hljs-subst">${config.host}</span>/api/messages/page?page=<span class="hljs-subst">${currentPage}</span>&amp;pageSize=<span class="hljs-subst">${config.limit}</span>`</span>);
            <span class="hljs-keyword">const</span> response = <span class="hljs-keyword">await</span> <span class="hljs-title function_">fetch</span>(<span class="hljs-string">`<span class="hljs-subst">${config.host}</span>/api/messages/page?page=<span class="hljs-subst">${currentPage}</span>&amp;pageSize=<span class="hljs-subst">${config.limit}</span>`</span>);
            
            <span class="hljs-keyword">if</span> (!response.<span class="hljs-property">ok</span>) {
                <span class="hljs-keyword">throw</span> <span class="hljs-keyword">new</span> <span class="hljs-title class_">Error</span>(<span class="hljs-string">`HTTP error! status: <span class="hljs-subst">${response.status}</span>`</span>);
            }
            
            <span class="hljs-keyword">const</span> result = <span class="hljs-keyword">await</span> response.<span class="hljs-title function_">json</span>();
            <span class="hljs-variable language_">console</span>.<span class="hljs-title function_">log</span>(<span class="hljs-string">'API响应数据:'</span>, result);
            
            <span class="hljs-comment">// 修改为检查result.data.items</span>
            <span class="hljs-keyword">if</span> (result &amp;&amp; result.<span class="hljs-property">code</span> === <span class="hljs-number">1</span> &amp;&amp; result.<span class="hljs-property">data</span> &amp;&amp; result.<span class="hljs-property">data</span>.<span class="hljs-property">items</span> &amp;&amp; <span class="hljs-title class_">Array</span>.<span class="hljs-title function_">isArray</span>(result.<span class="hljs-property">data</span>.<span class="hljs-property">items</span>)) {
                <span class="hljs-keyword">const</span> sortedData = result.<span class="hljs-property">data</span>.<span class="hljs-property">items</span>.<span class="hljs-title function_">sort</span>(<span class="hljs-function">(<span class="hljs-params">a, b</span>) =&gt;</span> 
                    <span class="hljs-keyword">new</span> <span class="hljs-title class_">Date</span>(b.<span class="hljs-property">created_at</span>) - <span class="hljs-keyword">new</span> <span class="hljs-title class_">Date</span>(a.<span class="hljs-property">created_at</span>)
                );
                <span class="hljs-title function_">renderMessages</span>(sortedData);
                
                <span class="hljs-keyword">if</span> (result.<span class="hljs-property">data</span>.<span class="hljs-property">items</span>.<span class="hljs-property">length</span> &gt;= config.<span class="hljs-property">limit</span>) {
                    loadMoreBtn.<span class="hljs-property">style</span>.<span class="hljs-property">display</span> = <span class="hljs-string">'block'</span>;
                } <span class="hljs-keyword">else</span> {
                    loadedAll.<span class="hljs-property">style</span>.<span class="hljs-property">display</span> = <span class="hljs-string">'block'</span>;
                    hasMore = <span class="hljs-literal">false</span>;
                }
            } <span class="hljs-keyword">else</span> {
                container.<span class="hljs-title function_">querySelector</span>(<span class="hljs-string">'.loading-wrapper'</span>).<span class="hljs-property">textContent</span> = <span class="hljs-string">'暂无内容'</span>;
                hasMore = <span class="hljs-literal">false</span>;
            }
        } <span class="hljs-keyword">catch</span> (error) {
            <span class="hljs-variable language_">console</span>.<span class="hljs-title function_">error</span>(<span class="hljs-string">'加载内容失败:'</span>, error);
            container.<span class="hljs-title function_">querySelector</span>(<span class="hljs-string">'.loading-wrapper'</span>).<span class="hljs-property">textContent</span> = <span class="hljs-string">'加载失败，请刷新重试'</span>;
        }
    }
    
    <span class="hljs-keyword">async</span> <span class="hljs-keyword">function</span> <span class="hljs-title function_">loadMoreContent</span>() {
        <span class="hljs-keyword">if</span> (isLoading || !hasMore) <span class="hljs-keyword">return</span>;
        
        isLoading = <span class="hljs-literal">true</span>;
        loadMoreBtn.<span class="hljs-property">textContent</span> = <span class="hljs-string">'加载中...'</span>;
        currentPage++;
        
        <span class="hljs-keyword">try</span> {
            <span class="hljs-keyword">const</span> response = <span class="hljs-keyword">await</span> <span class="hljs-title function_">fetch</span>(<span class="hljs-string">`<span class="hljs-subst">${config.host}</span>/api/messages/page?page=<span class="hljs-subst">${currentPage}</span>&amp;pageSize=<span class="hljs-subst">${config.limit}</span>`</span>);
            <span class="hljs-keyword">if</span> (!response.<span class="hljs-property">ok</span>) {
                <span class="hljs-keyword">throw</span> <span class="hljs-keyword">new</span> <span class="hljs-title class_">Error</span>(<span class="hljs-string">`HTTP error! status: <span class="hljs-subst">${response.status}</span>`</span>);
            }
            <span class="hljs-keyword">const</span> result = <span class="hljs-keyword">await</span> response.<span class="hljs-title function_">json</span>();
            
            <span class="hljs-comment">// 同样修改为检查result.data.items</span>
            <span class="hljs-keyword">if</span> (result &amp;&amp; result.<span class="hljs-property">code</span> === <span class="hljs-number">1</span> &amp;&amp; result.<span class="hljs-property">data</span> &amp;&amp; result.<span class="hljs-property">data</span>.<span class="hljs-property">items</span> &amp;&amp; <span class="hljs-title class_">Array</span>.<span class="hljs-title function_">isArray</span>(result.<span class="hljs-property">data</span>.<span class="hljs-property">items</span>)) {
                <span class="hljs-keyword">const</span> sortedData = result.<span class="hljs-property">data</span>.<span class="hljs-property">items</span>.<span class="hljs-title function_">sort</span>(<span class="hljs-function">(<span class="hljs-params">a, b</span>) =&gt;</span> 
                    <span class="hljs-keyword">new</span> <span class="hljs-title class_">Date</span>(b.<span class="hljs-property">created_at</span>) - <span class="hljs-keyword">new</span> <span class="hljs-title class_">Date</span>(a.<span class="hljs-property">created_at</span>)
                );
                <span class="hljs-title function_">renderMessages</span>(sortedData);
                
                <span class="hljs-keyword">if</span> (result.<span class="hljs-property">data</span>.<span class="hljs-property">items</span>.<span class="hljs-property">length</span> &lt; config.<span class="hljs-property">limit</span>) {
                    loadMoreBtn.<span class="hljs-property">style</span>.<span class="hljs-property">display</span> = <span class="hljs-string">'none'</span>;
                    loadedAll.<span class="hljs-property">style</span>.<span class="hljs-property">display</span> = <span class="hljs-string">'block'</span>;
                    hasMore = <span class="hljs-literal">false</span>;
                }
            } <span class="hljs-keyword">else</span> {
                loadMoreBtn.<span class="hljs-property">style</span>.<span class="hljs-property">display</span> = <span class="hljs-string">'none'</span>;
                loadedAll.<span class="hljs-property">style</span>.<span class="hljs-property">display</span> = <span class="hljs-string">'block'</span>;
                hasMore = <span class="hljs-literal">false</span>;
            }
        } <span class="hljs-keyword">catch</span> (error) {
            <span class="hljs-variable language_">console</span>.<span class="hljs-title function_">error</span>(<span class="hljs-string">'加载更多内容失败:'</span>, error);
            currentPage--;
        } <span class="hljs-keyword">finally</span> {
            isLoading = <span class="hljs-literal">false</span>;
            loadMoreBtn.<span class="hljs-property">textContent</span> = <span class="hljs-string">'加载更多'</span>;
        }
    }
    
    <span class="hljs-keyword">function</span> <span class="hljs-title function_">renderMessages</span>(<span class="hljs-params">messages</span>) {
        <span class="hljs-keyword">const</span> loadingWrapper = container.<span class="hljs-title function_">querySelector</span>(<span class="hljs-string">'.loading-wrapper'</span>);
        <span class="hljs-keyword">if</span> (loadingWrapper) {
            loadingWrapper.<span class="hljs-property">style</span>.<span class="hljs-property">display</span> = <span class="hljs-string">'none'</span>;
        }
        
        messages.<span class="hljs-title function_">forEach</span>(<span class="hljs-function"><span class="hljs-params">message</span> =&gt;</span> {
            <span class="hljs-keyword">const</span> messageElement = <span class="hljs-title function_">createMessageElement</span>(message);
            container.<span class="hljs-title function_">insertBefore</span>(messageElement, loadMoreBtn);
        });
    }
    
    <span class="hljs-keyword">function</span> <span class="hljs-title function_">createMessageElement</span>(<span class="hljs-params">message</span>) {
        <span class="hljs-keyword">const</span> messageDiv = <span class="hljs-variable language_">document</span>.<span class="hljs-title function_">createElement</span>(<span class="hljs-string">'div'</span>);
        messageDiv.<span class="hljs-property">className</span> = <span class="hljs-string">'rssmergecard'</span>;
        
        <span class="hljs-keyword">const</span> contentDiv = <span class="hljs-variable language_">document</span>.<span class="hljs-title function_">createElement</span>(<span class="hljs-string">'div'</span>);
        contentDiv.<span class="hljs-property">className</span> = <span class="hljs-string">'rssmergecard-content'</span>;
        
        <span class="hljs-keyword">const</span> title = <span class="hljs-variable language_">document</span>.<span class="hljs-title function_">createElement</span>(<span class="hljs-string">'h3'</span>);
        title.<span class="hljs-property">className</span> = <span class="hljs-string">'rssmergecard-title'</span>;
        title.<span class="hljs-property">textContent</span> = message.<span class="hljs-property">username</span> || <span class="hljs-string">'匿名用户'</span>;
        
        <span class="hljs-keyword">const</span> description = <span class="hljs-variable language_">document</span>.<span class="hljs-title function_">createElement</span>(<span class="hljs-string">'div'</span>);
        description.<span class="hljs-property">className</span> = <span class="hljs-string">'rssmergecard-description'</span>;
        
        <span class="hljs-comment">// 解析Markdown内容和特殊链接</span>
        <span class="hljs-keyword">let</span> processedContent = message.<span class="hljs-property">content</span> || <span class="hljs-string">'无内容'</span>;
        processedContent = <span class="hljs-title function_">parseMarkdown</span>(processedContent);
        processedContent = <span class="hljs-title function_">parseSpecialLinks</span>(processedContent);
        description.<span class="hljs-property">innerHTML</span> = processedContent;
        
        <span class="hljs-comment">// 如果有图片则添加图片</span>
        <span class="hljs-keyword">if</span> (message.<span class="hljs-property">image_url</span>) {
            <span class="hljs-keyword">const</span> img = <span class="hljs-variable language_">document</span>.<span class="hljs-title function_">createElement</span>(<span class="hljs-string">'img'</span>);
            img.<span class="hljs-property">src</span> = message.<span class="hljs-property">image_url</span>.<span class="hljs-title function_">startsWith</span>(<span class="hljs-string">'http'</span>) ? message.<span class="hljs-property">image_url</span> : config.<span class="hljs-property">host</span> + message.<span class="hljs-property">image_url</span>;
            img.<span class="hljs-property">style</span>.<span class="hljs-property">maxWidth</span> = <span class="hljs-string">'100%'</span>;
            img.<span class="hljs-property">style</span>.<span class="hljs-property">borderRadius</span> = <span class="hljs-string">'6px'</span>;
            img.<span class="hljs-property">style</span>.<span class="hljs-property">margin</span> = <span class="hljs-string">'10px 0'</span>;
            description.<span class="hljs-title function_">appendChild</span>(img);
        }
        
        <span class="hljs-keyword">const</span> metaDiv = <span class="hljs-variable language_">document</span>.<span class="hljs-title function_">createElement</span>(<span class="hljs-string">'div'</span>);
        metaDiv.<span class="hljs-property">className</span> = <span class="hljs-string">'rssmergecard-meta'</span>;
        
        <span class="hljs-keyword">const</span> timeSpan = <span class="hljs-variable language_">document</span>.<span class="hljs-title function_">createElement</span>(<span class="hljs-string">'span'</span>);
        timeSpan.<span class="hljs-property">className</span> = <span class="hljs-string">'rssmergecard-time'</span>;
        timeSpan.<span class="hljs-property">textContent</span> = <span class="hljs-title function_">formatDate</span>(message.<span class="hljs-property">created_at</span>);
        
        metaDiv.<span class="hljs-title function_">appendChild</span>(timeSpan);
        contentDiv.<span class="hljs-title function_">appendChild</span>(title);
        contentDiv.<span class="hljs-title function_">appendChild</span>(description);
        contentDiv.<span class="hljs-title function_">appendChild</span>(metaDiv);
        messageDiv.<span class="hljs-title function_">appendChild</span>(contentDiv);
        
        <span class="hljs-keyword">return</span> messageDiv;
    }
    
    <span class="hljs-keyword">function</span> <span class="hljs-title function_">parseMarkdown</span>(<span class="hljs-params">content</span>) {
        <span class="hljs-comment">// 处理标题</span>
        content = content.<span class="hljs-title function_">replace</span>(<span class="hljs-regexp">/^#\s(.+)$/gm</span>, <span class="hljs-string">'&lt;h1&gt;$1&lt;/h1&gt;'</span>);
        content = content.<span class="hljs-title function_">replace</span>(<span class="hljs-regexp">/^##\s(.+)$/gm</span>, <span class="hljs-string">'&lt;h2&gt;$1&lt;/h2&gt;'</span>);
        content = content.<span class="hljs-title function_">replace</span>(<span class="hljs-regexp">/^###\s(.+)$/gm</span>, <span class="hljs-string">'&lt;h3&gt;$1&lt;/h3&gt;'</span>);
        
        <span class="hljs-comment">// 处理图片 ![alt](url)</span>
        content = content.<span class="hljs-title function_">replace</span>(<span class="hljs-regexp">/!\[([^\]]*)\]\(([^)]+)\)/g</span>, <span class="hljs-string">'&lt;img src="$2" alt="$1" style="max-width:100%;border-radius:6px;margin:10px 0;"&gt;'</span>);
        
        <span class="hljs-comment">// 处理链接 [text](url)</span>
        content = content.<span class="hljs-title function_">replace</span>(<span class="hljs-regexp">/\[([^\]]+)\]\(([^)]+)\)/g</span>, <span class="hljs-string">'&lt;a href="$2" target="_blank"&gt;$1&lt;/a&gt;'</span>);
        
        <span class="hljs-comment">// 处理粗体 **text**</span>
        content = content.<span class="hljs-title function_">replace</span>(<span class="hljs-regexp">/\*\*([^*]+)\*\*/g</span>, <span class="hljs-string">'&lt;strong&gt;$1&lt;/strong&gt;'</span>);
        
        <span class="hljs-comment">// 处理斜体 *text*</span>
        content = content.<span class="hljs-title function_">replace</span>(<span class="hljs-regexp">/\*([^*]+)\*/g</span>, <span class="hljs-string">'&lt;em&gt;$1&lt;/em&gt;'</span>);
        
        <span class="hljs-comment">// 处理代码块 `code`</span>
        content = content.<span class="hljs-title function_">replace</span>(<span class="hljs-regexp">/`([^`]+)`/g</span>, <span class="hljs-string">'&lt;code&gt;$1&lt;/code&gt;'</span>);
        
        <span class="hljs-keyword">return</span> content;
    }
    
    <span class="hljs-keyword">function</span> <span class="hljs-title function_">parseSpecialLinks</span>(<span class="hljs-params">content</span>) {
        <span class="hljs-comment">// 定义各种平台的正则表达式</span>
        <span class="hljs-keyword">const</span> <span class="hljs-variable constant_">BILIBILI_REG</span> = <span class="hljs-regexp">/https:\/\/www\.bilibili\.com\/video\/((av[\d]{1,10})|(BV[\w]{10}))\/?/g</span>;
        <span class="hljs-keyword">const</span> <span class="hljs-variable constant_">BILIBILI_A_TAG_REG</span> = <span class="hljs-regexp">/&lt;a\shref="https:\/\/www\.bilibili\.com\/video\/((av[\d]{1,10})|(BV[\w]{10}))\/?"&gt;.*&lt;\/a&gt;/g</span>;
        <span class="hljs-keyword">const</span> <span class="hljs-variable constant_">QQMUSIC_REG</span> = <span class="hljs-regexp">/&lt;a\shref="https\:\/\/y\.qq\.com\/.*(\/[0-9a-zA-Z]+)(\.html)?".*?&gt;.*?&lt;\/a&gt;/g</span>;
        <span class="hljs-keyword">const</span> <span class="hljs-variable constant_">QQVIDEO_REG</span> = <span class="hljs-regexp">/&lt;a\shref="https:\/\/v\.qq\.com\/.*\/([a-zA-Z0-9]+)\.html".*?&gt;.*?&lt;\/a&gt;/g</span>;
        <span class="hljs-keyword">const</span> <span class="hljs-variable constant_">SPOTIFY_REG</span> = <span class="hljs-regexp">/&lt;a\shref="https:\/\/open\.spotify\.com\/(track|album)\/([\s\S]+)".*?&gt;.*?&lt;\/a&gt;/g</span>;
        <span class="hljs-keyword">const</span> <span class="hljs-variable constant_">YOUKU_REG</span> = <span class="hljs-regexp">/&lt;a\shref="https:\/\/v\.youku\.com\/.*\/id_([a-zA-Z0-9=]+)\.html".*?&gt;.*&lt;\/a&gt;/g</span>;
        <span class="hljs-keyword">const</span> <span class="hljs-variable constant_">YOUTUBE_REG</span> = <span class="hljs-regexp">/&lt;a\shref="https:\/\/(www\.youtube\.com\/watch\?v=|youtu\.be\/)([a-zA-Z0-9_-]{11})".*?&gt;.*&lt;\/a&gt;/g</span>;
        <span class="hljs-keyword">const</span> <span class="hljs-variable constant_">NETEASE_MUSIC_REG</span> = <span class="hljs-regexp">/&lt;a\shref="https?:\/\/music\.163\.com\/.*?id=(\d+)&lt;\/a&gt;/g</span>;
    
        <span class="hljs-comment">// 解析各种链接</span>
        <span class="hljs-keyword">return</span> content
            .<span class="hljs-title function_">replace</span>(<span class="hljs-variable constant_">BILIBILI_REG</span>, <span class="hljs-string">"&lt;div class='video-wrapper'&gt;&lt;iframe src='https://www.bilibili.com/blackboard/html5mobileplayer.html?bvid=$1&amp;as_wide=1&amp;high_quality=1&amp;danmaku=0' scrolling='no' border='0' frameborder='no' framespacing='0' allowfullscreen='true' style='position:absolute;height:100%;width:100%;'&gt;&lt;/iframe&gt;&lt;/div&gt;"</span>)
            .<span class="hljs-title function_">replace</span>(<span class="hljs-variable constant_">YOUTUBE_REG</span>, <span class="hljs-string">"&lt;div class='video-wrapper'&gt;&lt;iframe src='https://www.youtube.com/embed/$2' title='YouTube video player' frameborder='0' allow='accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture' allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;"</span>)
            .<span class="hljs-title function_">replace</span>(<span class="hljs-variable constant_">NETEASE_MUSIC_REG</span>, <span class="hljs-string">"&lt;div class='music-wrapper'&gt;&lt;meting-js auto='https://music.163.com/#/song?id=$1'&gt;&lt;/meting-js&gt;&lt;/div&gt;"</span>)
            .<span class="hljs-title function_">replace</span>(<span class="hljs-variable constant_">QQMUSIC_REG</span>, <span class="hljs-string">"&lt;meting-js auto='https://y.qq.com/n/yqq/song$1.html'&gt;&lt;/meting-js&gt;"</span>)
            .<span class="hljs-title function_">replace</span>(<span class="hljs-variable constant_">QQVIDEO_REG</span>, <span class="hljs-string">"&lt;div class='video-wrapper'&gt;&lt;iframe src='//v.qq.com/iframe/player.html?vid=$1' allowFullScreen='true' frameborder='no'&gt;&lt;/iframe&gt;&lt;/div&gt;"</span>)
            .<span class="hljs-title function_">replace</span>(<span class="hljs-variable constant_">SPOTIFY_REG</span>, <span class="hljs-string">"&lt;div class='spotify-wrapper'&gt;&lt;iframe style='border-radius:12px' src='https://open.spotify.com/embed/$1/$2?utm_source=generator&amp;theme=0' width='100%' frameBorder='0' allowfullscreen='' allow='autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture' loading='lazy'&gt;&lt;/iframe&gt;&lt;/div&gt;"</span>)
            .<span class="hljs-title function_">replace</span>(<span class="hljs-variable constant_">YOUKU_REG</span>, <span class="hljs-string">"&lt;div class='video-wrapper'&gt;&lt;iframe src='https://player.youku.com/embed/$1' frameborder=0 'allowfullscreen'&gt;&lt;/iframe&gt;&lt;/div&gt;"</span>);
    }
    
    <span class="hljs-keyword">function</span> <span class="hljs-title function_">formatDate</span>(<span class="hljs-params">dateString</span>) {
        <span class="hljs-keyword">if</span> (!dateString) <span class="hljs-keyword">return</span> <span class="hljs-string">'未知时间'</span>;
        <span class="hljs-keyword">return</span> <span class="hljs-keyword">new</span> <span class="hljs-title class_">Date</span>(dateString).<span class="hljs-title function_">toLocaleString</span>();
    }
});
</code></pre>
示例note.css
<pre><code>/* 基础卡片样式 */
.rssmergecard {
    background: #fff;
    border-radius: 8px;
    box-shadow: 0 2px 10px rgba(0,0,0,0.1);
    margin-bottom: 20px;
    padding: 20px;
    transition: all 0.3s ease;
}

.rssmergecard:hover {
    box-shadow: 0 5px 15px rgba(0,0,0,0.2);
}

/* 标题样式 */
.rssmergecard-title {
    color: #333;
    font-size: 18px;
    margin: 0 0 10px 0;
}

/* 内容样式 - 支持Markdown渲染 */
.rssmergecard-description {
    color: #555;
    line-height: 1.6;
    font-size: 15px;
}

.rssmergecard-description p {
    margin: 10px 0;
}

.rssmergecard-description a {
    color: #3498db;
    text-decoration: none;
}

.rssmergecard-description a:hover {
    text-decoration: underline;
}

.rssmergecard-description img {
    max-width: 100%;
    height: auto;
    border-radius: 4px;
}

/* 元信息样式 */
.rssmergecard-meta {
    margin-top: 15px;
    font-size: 13px;
    color: #999;
}

/* 加载更多按钮样式 */
.load-more {
    background: #3498db;
    color: white;
    border: none;
    padding: 10px 20px;
    border-radius: 4px;
    cursor: pointer;
    font-size: 14px;
    margin: 20px auto;
    display: block;
}

.load-more:hover {
    background: #2980b9;
}

.loaded-all {
    text-align: center;
    color: #999;
    font-size: 14px;
    margin: 20px 0;
}

/* 特殊链接卡片样式 */
.media-card {
    background: #f8f9fa;
    border-left: 4px solid #3498db;
    padding: 15px;
    margin: 15px 0;
    border-radius: 0 4px 4px 0;
}

.media-card-title {
    font-weight: bold;
    margin-bottom: 5px;
}

.video-wrapper {
    position: relative;
    padding-bottom: 56.25%; /* 16:9 */
    height: 0;
    margin: 15px 0;
}

.video-wrapper iframe {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    border-radius: 8px;
}

.music-wrapper, .spotify-wrapper {
    margin: 15px 0;
    border-radius: 8px;
    overflow: hidden;
    min-height: 86px; /* 确保有足够高度显示播放器 */
}

.music-wrapper meting-js {
    width: 100%;
    height: 86px;
}
</code></pre>
ios快捷指令

使用快捷指令发布内容到站内，获取：<a href="https://www.icloud.com/shortcuts/8ba1240ab39d4bf2b4a02b69a5cc12bf">https://www.icloud.com/shortcuts/8ba1240ab39d4bf2b4a02b69a5cc12bf</a>

<img src="https://s2.loli.net/2025/04/12/idpz8Ea9DQMfyex.png" alt="idpz8Ea9DQMfyex" />
<h2>问题🙋</h2>
数据库可以直接迁移吗

1、直接上传至部署时挂载的路径中，重新启用，或者在容器文件夹/app/data/noise.db直接替换即可

2、使用后台数据库管理备份功能，支持一键下载、上传

​ 数据库文件下载为zip格式，上传也必须为zip，本地数据库恢复包中必须有noise.db文件
<h2>关于魔改指南🌈</h2>
👉如何自定义化前端数据后添加到数据库？

需要在setting.go、migrate.go、models.go、controllers.go同时写入前端参数的后端定义，并修改前端参数信息为后端可读取的参数，其中controllers.go为控制器
<ul>
 	<li>database.go 用于数据库连接管理</li>
 	<li>migrate.go 用于数据库迁移和数据初始化</li>
</ul>
👉前端基本在web目录下，目前模版文件为components目录文件，pages下index.vue为父级模版

👉建议：不要和我一样在同一个文件里修改添加，造成一个文件上千行代码...请尽量使用父子层级来添加代码

</section>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>探索发现</category>
    </item>
    <item>
      <title>AigcPanel-跨平台一站式AI数字人系统</title>
      <link>https://noisevip.cn/article/aigcpanel-ai</link>
      <guid isPermaLink="true">https://noisevip.cn/article/aigcpanel-ai</guid>
      <pubDate>Fri, 03 Jan 2025 02:00:00 GMT</pubDate>
      <description><![CDATA[`AigcPanel` 是一个简单易用的一站式AI数字人系统，小白也可使用。 支持视频合成、声音合成、声音克隆，简化本地模型管理、一键导入和使用AI模型。

> 项目地址：https://github.com/modstart-lib/aigcpanel



![img](https://s2.l]]></description>
      <content:encoded><![CDATA[<p><code>AigcPanel</code> 是一个简单易用的一站式AI数字人系统，小白也可使用。 支持视频合成、声音合成、声音克隆，简化本地模型管理、一键导入和使用AI模型。</p>
<blockquote>
<p>项目地址：<a href="https://github.com/modstart-lib/aigcpanel">https://github.com/modstart-lib/aigcpanel</a></p>
</blockquote>
<p><img src="https://s2.loli.net/2025/01/02/5kb2oWZgjUEQsKF.png" alt="img"></p>
<h2>功能特性</h2>
<ul>
<li>支持视频数字人合成，支持视频画面和声音换口型匹配</li>
<li>支持语音合成、语音克隆，多种声音参数可设置</li>
<li>支持多模型导入、一键启动、模型设置、模型日志查看</li>
<li>支持国际化，支持简体中文、英语</li>
<li>支持多种模型一键启动包：<code>MuseTalk</code>、<code>cosyvoice</code></li>
</ul>
<h2>功能</h2>
<h3>视频合成</h3>
<p><img src="https://s2.loli.net/2025/01/02/5kb2oWZgjUEQsKF.png" alt="img"></p>
<h3>语音克隆</h3>
<p><img src="https://s2.loli.net/2025/01/02/o4UXvINzjL3lDY6.png" alt="img"></p>
<h3>语音合成</h3>
<p><img src="https://s2.loli.net/2025/01/02/6xHZNJaT1QCPFSy.png" alt="img"></p>
<h3>模型管理</h3>
<p><img src="https://s2.loli.net/2025/01/02/n79MUOBc8mVNgKf.png" alt="img"></p>
<h3>模型添加</h3>
<p><img src="https://s2.loli.net/2025/01/02/5SpJTxuvKB3zZwq.png" alt="img"></p>
<h3>模型日志</h3>
<p><img src="https://s2.loli.net/2025/01/02/oMBFgyQON6z5aUP.png" alt="img"></p>
<h3>关于</h3>
<p><img src="https://s2.loli.net/2025/01/02/V4nDNcOC7UqembY.png" alt="img"></p>
<h2>安装使用</h2>
<h3>Windows</h3>
<ul>
<li>访问 <a href="https://aigcpanel.com/">https://aigcpanel.com</a> 下载 Windows 安装包，一键安装即可</li>
</ul>
<p>安装完成后，打开软件，下载模型一键启动包，即可使用。</p>
<h2>技术栈</h2>
<ul>
<li><code>electron</code></li>
<li><code>vue3</code></li>
<li><code>typescript</code></li>
</ul>
<h2>本地运行开发</h2>
<blockquote>
<p>仅在 node 20 测试过</p>
</blockquote>
<pre><code># 安装依赖
npm install
# 调试运行
npm run dev
# 打包
npm run build
</code></pre>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>探索发现</category>
    </item>
    <item>
      <title>podman-跨平台Docker桌面程序</title>
      <link>https://noisevip.cn/article/podman-docker</link>
      <guid isPermaLink="true">https://noisevip.cn/article/podman-docker</guid>
      <pubDate>Fri, 03 Jan 2025 02:00:00 GMT</pubDate>
      <description><![CDATA[![podman](https://s2.loli.net/2025/01/03/ypquFZHaEhgBO39.png)

[Podman](http://podman.io/) 是一款无守护程序的开源 Linux 原生工具，同时GUI支持WIN、MAC，旨在使用开放容器计划 （[OCI](htt]]></description>
      <content:encoded><![CDATA[<p><img src="https://s2.loli.net/2025/01/03/ypquFZHaEhgBO39.png" alt="podman"></p>
<p><a href="http://podman.io/">Podman</a> 是一款无守护程序的开源 Linux 原生工具，同时GUI支持WIN、MAC，旨在使用开放容器计划 （<a href="https://www.opencontainers.org/">OCI</a>） <a href="https://developers.redhat.com/blog/2018/02/22/container-terminology-practical-introduction/#h.j2uq93kgxe0e">容器</a>和<a href="https://developers.redhat.com/blog/2018/02/22/container-terminology-practical-introduction/#h.dqlu6589ootw">容器映像</a>轻松查找、运行、构建、共享和部署应用程序，Podman 控制下的容器可以由 root 或非特权用户运行。Podman 使用 <a href="https://github.com/containers/podman">libpod</a> 库管理整个容器生态系统，包括 Pod、容器、容器镜像和容器卷。Podman 专注于帮助您维护和修改 OCI 容器映像的所有命令和功能，例如拉取和标记。它允许您在生产环境中创建、运行和维护这些容器和容器镜像。</p>
<p>官网：<a href="https://container-desktop.com">https://container-desktop.com</a></p>
<p><img src="https://s2.loli.net/2024/12/28/3FjyuArb2SzlNq8.png" alt=""></p>
<h1>安装说明</h1>
<p>你可以通过官网下载适用于WIN或mac的GUI程序</p>
<p>或者</p>
<p>可以从 <a href="https://podman.io/">Podman.io</a> 网站下载</p>
<p>通过 Brew 安装</p>
<p>如果您确实希望使用 Brew，则必须首先安装 <a href="https://brew.sh/">Homebrew</a>。一旦您 已设置 brew，您可以使用命令安装 Podman</p>
<pre><code class="language-bash">brew install podman
</code></pre>
<p>安装后，您需要创建并启动您的第一台 Podman 计算机：</p>
<pre><code class="language-bash">podman machine init
podman machine start
</code></pre>
<p>然后，您可以使用以下方法验证安装信息：</p>
<pre><code class="language-bash">podman info
</code></pre>
<h3>运行示例容器</h3>
<p>此示例容器将运行一个非常基本的 httpd 服务器（名为 basic_httpd），该服务器仅提供其索引 页。</p>
<pre><code>podman run --name basic_httpd -dt -p 8080:80/tcp docker.io/nginx
</code></pre>
<p>由于容器在分离模式下运行，由命令中的 <em>-d</em> 表示，因此 Podman 将在容器 ID 运行后打印容器 ID。请注意，我们使用端口转发是为了能够 访问 HTTP 服务器。要成功运行，至少需要 slirp4netns v0.3.0。<code>podman run</code></p>
<h3>列出正在运行的容器</h3>
<p>Podman <em>ps</em> 命令用于列出正在创建和正在运行的容器。</p>
<pre><code>podman ps
</code></pre>
<p>注意：如果将 <em>-a</em> 添加到 <em>ps</em> 命令，Podman 将显示所有容器。</p>
<h3>检查正在运行的容器</h3>
<p>您可以“检查”正在运行的容器的元数据和有关自身的详细信息。我们甚至可以使用 inspect 子命令查看分配给容器的 IP 地址。由于容器在无根模式下运行，因此不会分配 IP 地址，并且该值将在 inspect 的输出中列为 “none”。</p>
<pre><code>podman inspect basic_httpd | grep IPAddress\&quot;:
            &quot;SecondaryIPAddresses&quot;: null,
            &quot;IPAddress&quot;: &quot;&quot;,
</code></pre>
<h3>测试 httpd 服务器</h3>
<p>由于我们没有容器的 IP 地址，我们可以测试主机之间的网络通信 操作系统和使用 Curl 的容器。以下命令应显示我们的 容器化 httpd 服务器。</p>
<pre><code>curl http://localhost:8080
</code></pre>
<h3>查看容器的日志</h3>
<p>您也可以使用 Podman 查看容器的日志：</p>
<pre><code>podman logs &lt;container_id&gt;
10.88.0.1 - - [07/Feb/2018:15:22:11 +0000] &quot;GET / HTTP/1.1&quot; 200 612 &quot;-&quot; &quot;curl/7.55.1&quot; &quot;-&quot;
10.88.0.1 - - [07/Feb/2018:15:22:30 +0000] &quot;GET / HTTP/1.1&quot; 200 612 &quot;-&quot; &quot;curl/7.55.1&quot; &quot;-&quot;
10.88.0.1 - - [07/Feb/2018:15:22:30 +0000] &quot;GET / HTTP/1.1&quot; 200 612 &quot;-&quot; &quot;curl/7.55.1&quot; &quot;-&quot;
10.88.0.1 - - [07/Feb/2018:15:22:31 +0000] &quot;GET / HTTP/1.1&quot; 200 612 &quot;-&quot; &quot;curl/7.55.1&quot; &quot;-&quot;
10.88.0.1 - - [07/Feb/2018:15:22:31 +0000] &quot;GET / HTTP/1.1&quot; 200 612 &quot;-&quot; &quot;curl/7.55.1&quot; &quot;-&quot;
</code></pre>
<h3>查看容器的 PID</h3>
<p>并且你可以用 <em>top</em> 在容器中观察 httpd pid。</p>
<pre><code>podman top &lt;container_id&gt;
  UID   PID  PPID  C STIME TTY          TIME CMD
    0 31873 31863  0 09:21 ?        00:00:00 nginx: master process nginx -g daemon off;
  101 31889 31873  0 09:21 ?        00:00:00 nginx: worker process
</code></pre>
<h3>对容器进行检查点</h3>
<p>对容器执行检查点操作会停止容器，同时将容器中所有进程的状态写入磁盘。 这样，容器可以在以后恢复并继续运行，与 检查站。此功能需要在系统上安装 CRIU 3.11 或更高版本。 此功能不支持作为无根功能;因此，如果您想尝试一下，则需要使用相同的命令但使用 sudo 以 root 身份重新创建容器。</p>
<p>要对容器进行检查点操作，请使用：</p>
<pre><code>sudo podman container checkpoint &lt;container_id&gt;
</code></pre>
<h3>还原容器</h3>
<p>只能对以前检查点的容器恢复容器。还原的容器将 continue 在它被执行检查点的同一时间点运行。 要恢复容器，请使用：</p>
<pre><code>sudo podman container restore &lt;container_id&gt;
</code></pre>
<p>还原后，容器将像执行检查点之前一样再次响应请求。</p>
<pre><code>curl http://&lt;IP_address&gt;:8080
</code></pre>
<h3>迁移容器</h3>
<p>要将容器从一个主机实时迁移到另一个主机，容器会在源上执行 checkpoint 操作 系统，传输到目标系统，然后在目标系统上恢复 系统。传输 checkpoint 时，可以指定 output-file。</p>
<p>在源系统上：</p>
<pre><code>sudo podman container checkpoint &lt;container_id&gt; -e /tmp/checkpoint.tar.gz
scp /tmp/checkpoint.tar.gz &lt;destination_system&gt;:/tmp
</code></pre>
<p>在目标系统上：</p>
<pre><code>sudo podman container restore -i /tmp/checkpoint.tar.gz
</code></pre>
<p>还原后，容器将像执行检查点之前一样再次响应请求。这 容器将继续在目标系统上运行的时间。</p>
<pre><code>curl http://&lt;IP_address&gt;:8080
</code></pre>
<h3>停止容器</h3>
<p>要停止 httpd 容器：</p>
<pre><code>podman stop &lt;container_id&gt;
</code></pre>
<p>您还可以使用 <em>ps</em> 子命令检查一个或多个容器的状态。在这种情况下，我们应该 使用 <em>-a</em> 参数列出所有容器。</p>
<pre><code>podman ps -a
</code></pre>
<h3>移除容器</h3>
<p>要删除 httpd 容器：</p>
<pre><code>podman rm &lt;container_id&gt;
</code></pre>
<p>您可以通过运行 <em>podman ps -a</em> 来验证容器的删除。</p>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>探索发现</category>
    </item>
    <item>
      <title>两个高度完善的智能化小红书运营工具</title>
      <link>https://noisevip.cn/article/5901</link>
      <guid isPermaLink="true">https://noisevip.cn/article/5901</guid>
      <pubDate>Fri, 03 Jan 2025 02:00:00 GMT</pubDate>
      <description><![CDATA[![hs](https://s2.loli.net/2025/01/03/fNtzhBDKPc6nTJE.png)

前言：这是两个高度完善的小红书运营工具，已完成商业化进度，功能包括提供完全免费使用的套餐及额外的pro套餐，可在编写文案、自动评论、发布、养号、发布等等带来强大的辅助，值得推荐！]]></description>
      <content:encoded><![CDATA[<p><img src="https://s2.loli.net/2025/01/03/fNtzhBDKPc6nTJE.png" alt="hs"></p>
<p>前言：这是两个高度完善的小红书运营工具，已完成商业化进度，功能包括提供完全免费使用的套餐及额外的pro套餐，可在编写文案、自动评论、发布、养号、发布等等带来强大的辅助，值得推荐！</p>
<h2>一、Reditor-红薯编辑器</h2>
<p>笔记编辑、排版、内容检测、效果预览，一站式搞定，它是专为编辑笔记类内容（如：小红书、公众号图文模式、闲鱼、soul）而生的编辑器。为了提高文字创作者的排版效率、提升美观度和增强内容适读性。</p>
<p>官网：<a href="https://reditorapp.com">https://reditorapp.com</a></p>
<p>文档：<a href="https://help.reditorapp.com">https://help.reditorapp.com</a></p>
<p><img src="https://s2.loli.net/2025/01/02/a5iog2HPU9scdOu.png" alt=""></p>
<p><img src="https://s2.loli.net/2025/01/02/pzRar4yZJV6wK82.png" alt=""></p>
<h3>基础功能</h3>
<p>🚫 敏感词检测</p>
<p>👐 超大编辑区域</p>
<p>👁 笔记预览</p>
<p>📑 一键复制</p>
<p>🗂 分组管理</p>
<p>🔍 快捷搜索</p>
<p>📦 笔记容量无限制</p>
<p>🔄 多端同步</p>
<h3>高级功能</h3>
<p>🤖️ AI创作助手</p>
<p>⬇️ Markdown</p>
<p>👀 排版主题</p>
<p>🧩 笔记碎片</p>
<p>📄 笔记模板</p>
<p>#️⃣ 话题插入</p>
<p>😀 Emoji分组</p>
<h2>二、自动薯-小红书自动化助手</h2>
<p>这是一个通过谷歌浏览器插件运行的自动化程序，包括Ai智能评论、点赞、关注 一键提升账号活跃度</p>
<p>官网：<a href="https://shinewaycargo.com/xhs-auto/">https://shinewaycargo.com/xhs-auto/</a></p>
<h2>功能预览</h2>
<p><img src="https://s2.loli.net/2025/01/02/Mb4dem2Tx9SviNI.png" alt="预览图1"><img src="https://s2.loli.net/2025/01/02/43XSawdisEeoflZ.png" alt="预览图2"><img src="https://s2.loli.net/2025/01/02/RjAONeFrLl3c6Mg.png" alt="预览图3"></p>
<h2>核心功能</h2>
<h3>🤖 智能浏览</h3>
<ul>
<li>自动滚动浏览内容</li>
<li>模拟真实用户行为</li>
<li>自定义滚动间隔</li>
<li>灵活设置停留时长</li>
</ul>
<h3>💬 智能互动</h3>
<ul>
<li>概率控制评论系统</li>
<li>自动化互动提高效率</li>
<li>智能防重复机制</li>
<li>关键词精准过滤</li>
</ul>
<h3>❤️ 数据管理</h3>
<ul>
<li>自动记录互动笔记</li>
<li>完整历史记录导出</li>
<li>便捷的数据分析</li>
<li>实时状态监控</li>
</ul>
<h3>⚙️ 灵活配置</h3>
<ul>
<li>自定义互动参数</li>
<li>点赞功能开关</li>
<li>互动频率设置</li>
<li>关键词过滤配置</li>
</ul>
<h2>特点</h2>
<h3>智能化运营</h3>
<ul>
<li><p>灵活的时间控制</p>
<p>自定义滚动间隔和停留时长，完全掌控浏览节奏</p>
</li>
<li><p>智能概率系统</p>
<p>精准控制评论频率，模拟真实用户行为</p>
</li>
<li><p>自动化效率</p>
<p>智能处理重复性任务，大幅提升运营效率</p>
</li>
</ul>
<h3>安全可控</h3>
<ul>
<li><p>内置安全机制</p>
<p>智能频率限制，确保账号安全</p>
</li>
<li><p>内容质量把控</p>
<p>支持关键词过滤，确保互动内容相关性</p>
</li>
<li><p>防重复保护</p>
<p>自动记录已互动内容，避免重复操作</p>
</li>
</ul>
<h3>便捷管理</h3>
<ul>
<li><p>简洁操作界面</p>
<p>直观的设计，无需复杂设置</p>
</li>
<li><p>数据分析支持</p>
<p>完整的数据导出功能，助力运营决策</p>
</li>
<li><p>实时状态监控</p>
<p>随时掌握运行状态，及时调整策略</p>
</li>
</ul>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>资源分享</category>
    </item>
    <item>
      <title>苹果破解越狱合集（二）</title>
      <link>https://noisevip.cn/article/7894</link>
      <guid isPermaLink="true">https://noisevip.cn/article/7894</guid>
      <pubDate>Tue, 31 Dec 2024 05:31:17 GMT</pubDate>
      <description><![CDATA[前言 这是对此前文章的续篇，同时也是对苹果越狱软件安装的科普，此外我们最近和一位开发者合作了，支持个人证书的“优惠”定制秒出，稳定带售后，支持独立软件源，此后会单独出一个IPA下载专栏，请留意 自签名安装-支持所有系统 不越狱通过自签工具安装软件你需要有P12证书，通过证书对APP签名即可安装 常见的签名工具包括：全能签 https://qnq.ipadump.com/ /home/qnq?cType=a12 、万能签 https://sign.wnqapp.com/ios/ 、轻松签 https://esign.yyyue.xyz 、爱思助手 https://www.i4.cn/ 、NB助手 http://8.218.233.56 、牛蛙助手 https://ios222.com 等 以爱思助手为例 找到工具箱-点击IPA签名 找到导入证书，选择证书导入 导入IPA包进行签名并安装 软件源 谈到软件源就不得不提下魔盒app了 它涵盖了苹果及安卓端的越狱破解，是个全能APP商店 官网： https://app.xkcc.vip （需要自签）安装后会提示输入推广码 你可以点击 https]]></description>
      <content:encoded><![CDATA[<section id="wenyan" class="preview" data-provider="WenYan"><img src="https://s2.loli.net/2024/12/31/2EFv9Jx7gtqIlzi.png" alt="" />
<h2>前言</h2>
这是对此前文章的续篇，同时也是对苹果越狱软件安装的科普，此外我们最近和一位开发者合作了，支持个人证书的“优惠”定制秒出，稳定带售后，支持独立软件源，此后会单独出一个IPA下载专栏，请留意
<h2>自签名安装-支持所有系统</h2>
不越狱通过自签工具安装软件你需要有P12证书，通过证书对APP签名即可安装

常见的签名工具包括：全能签<a href="https://qnq.ipadump.com/#/home/qnq?cType=a12">https://qnq.ipadump.com/#/home/qnq?cType=a12</a> 、万能签<a href="https://sign.wnqapp.com/ios/">https://sign.wnqapp.com/ios/</a> 、轻松签<a href="https://esign.yyyue.xyz">https://esign.yyyue.xyz</a> 、爱思助手<a href="https://www.i4.cn/">https://www.i4.cn/</a> 、NB助手<a href="http://8.218.233.56">http://8.218.233.56</a> 、牛蛙助手<a href="https://ios222.com">https://ios222.com</a> 等

以爱思助手为例

找到工具箱-点击IPA签名

<img src="https://s2.loli.net/2024/12/31/aVKhOyxMJB7bTHP.png" alt="" />

找到导入证书，选择证书导入

<img src="https://s2.loli.net/2024/12/31/DIfvNi4BEpHRclm.png" alt="1735648162729" />

导入IPA包进行签名并安装

<img src="https://s2.loli.net/2024/12/31/WD2U6VugNJh54sp.png" alt="" />
<h2>软件源</h2>
谈到软件源就不得不提下魔盒app了

它涵盖了苹果及安卓端的越狱破解，是个全能APP商店

官网：<a href="https://app.xkcc.vip">https://app.xkcc.vip</a> （需要自签）安装后会提示输入推广码

你可以点击<a href="https://app.xkcc.vip/invitation_register?invitation_code=KIklg4ZV">https://app.xkcc.vip/invitation_register?invitation_code=KIklg4ZV</a>

或输入KIklg4ZV来打开软件，如果你之前购买过证书（私聊）可提供使用指导及赠送

<img src="https://s2.loli.net/2024/12/31/ywYoFck1b5fpNCS.png" alt="" />

<img src="https://s2.loli.net/2024/12/31/wZRbNuWJcetHsOT.jpg" alt="" />
<h2>巨魔-越狱用户的专利</h2>
作为玩机者对巨魔一类的想必也不陌生了，特别是<strong>巨魔商店 lite</strong>的发布，也是玩家一直关注的

截止发文，越狱支持iOS14 - 16.6.1 &amp; iOS17.0 Beta系统

安装巨魔可以通过自签工具安装，也可通过<a href="https://sidestore.io%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8">https://sidestore.io安装使用</a>
<h2>巨魔2代安装</h2>
必备条件1：
<ul>
 	<li>必须有一台电脑，可以是 <strong>Windows</strong>、<strong>MacOS</strong>、<strong>Linux</strong> 三种不同的操作系统都可以。</li>
</ul>
<h2>安装原理</h2>
TrollRestore是安装巨魔商店的必备工具，它将用 <strong>TrollHelper</strong> 二进制文件替换您选择的系统应用，然后您可以打开并使用它安装巨魔商店TrollStore。TrollRestore将使用备份将二进制文件还原到系统应用容器。
<h2>安装教程</h2>
<section></section>
<h3>安装前必须的准备步骤：</h3>
<ol>
 	<li>关闭 “查找我的 iPhone”</li>
 	<li>确保手机上有 <strong>提示APP</strong>。</li>
</ol>
<section></section>
<h3>WIN</h3>
TrollRestore：<a href="https://noise.lanzoul.com/iaOkN2jjlisd">https://noise.lanzoul.com/iaOkN2jjlisd</a>
<ol>
 	<li>确保电脑安装了 <strong>爱思助手</strong>，或者已经安装 <strong>iTunes</strong>。</li>
 	<li>连接设备，并且在 iOS 设备上点击信任，同意连接电脑。并且确保，查找我的 iPhone 已关闭！</li>
 	<li>双击打开 <strong>TrollRestore</strong> 运行，当它提示你输入要安装的系统应用名字时，输入：<strong>Tips</strong></li>
 	<li>完成后，iOS 设备将会重启。</li>
 	<li>步骤还没有完成，进入系统之后，找到 <strong>“提示”</strong> 应用程序，点击 <strong>install TrollStore</strong>，开始安装巨魔2</li>
 	<li>安装完成，现在你可以尽情享受巨魔商店了。</li>
 	<li>返回桌面，打开桌面蓝色巨魔图标 <strong>Trollstore</strong>，自动安装 <strong>ldid</strong>，如果没有，底部 Setting 点进去，点击 <strong>install ldid</strong>。</li>
 	<li>往下滑动，点击 <strong>install Persitence Helper</strong>，选择 Tips，这步是安装巨魔永久性助手，万一巨魔白图标或者打不开，还可以打开提示APP，重新安装巨魔（这步必须做）。</li>
</ol>
<section></section>
<h3>MAC</h3>
TrollRestore_英特尔芯片:<a href="https://noise.lanzoul.com/iiqbZ2jjlqfi">https://noise.lanzoul.com/iiqbZ2jjlqfi</a>

TrollRestore_M1、M2芯片:<a href="https://noise.lanzoul.com/iNws92jjm0xg">https://noise.lanzoul.com/iNws92jjm0xg</a>
<ol>
 	<li>下载上面的 <strong>TrollRestore</strong> 工具。</li>
 	<li>连接你的 iOS 设备到电脑上，并且在 iOS 设备上点击信任，同意连接电脑。并且确保：iPhone 设置里面，iCloud 里面，查找我的 iPhone 已关闭！</li>
 	<li>打开 Mac 电脑上的终端，把 <strong>TrollRestore</strong> 拖入到终端当中，回车运行。</li>
 	<li>当它提示要求你输入要安装的系统应用名字时，输入：<strong>Tips</strong>。
<blockquote><section>“</section>如果你是不支持的 iOS 版本，它会提示类似：<strong>iOS 14.4 (18D52) is not supported</strong>。</blockquote>
</li>
 	<li>完成后，iOS 设备将会重启。</li>
 	<li>步骤还没有完成，进入系统之后，找到 <strong>“提示”</strong> 应用程序，点击 <strong>install TrollStore</strong>，开始安装巨魔商店2。</li>
 	<li>安装完成，现在你可以尽情享受巨魔商店了。</li>
 	<li>返回桌面，打开桌面蓝色巨魔图标 <strong>Trollstore</strong>，自动安装 <strong>ldid</strong>，如果没有，底部 Setting 点进去，点击 <strong>install ldid</strong>。</li>
 	<li>往下滑动，点击 <strong>install Persitence Helper</strong>，选择 Tips，这步是安装巨魔永久性助手，万一巨魔白图标或者打不开，还可以打开提示APP，重新安装巨魔（这步必须做）。</li>
</ol>
<section></section>
<h3>linux</h3>
TrollRestore_Linux：<a href="https://noise.lanzoul.com/i87UR2jjmaqj">https://noise.lanzoul.com/i87UR2jjmaqj</a>
<ol>
 	<li>下载上面的 <strong>TrollRestore</strong> 工具，确保已经安装 <strong>Python3</strong>，如果没有，使用命令：
<pre><code class="hljs language-bash"><span class="hljs-built_in">sudo</span> apt install python3 python3-pip libssl-dev build-essential usbmuxd...
</code></pre>
</li>
 	<li>连接你的 iOS 设备到电脑上，并且在 iOS 设备上点击信任，同意连接电脑。并且确保：iPhone 设置里面，iCloud 里面，查找我的 iPhone 已关闭！</li>
 	<li>打开 Linux 电脑上的终端，使用命令：
<pre><code>cd 把TrollRestore_Linux目录拖入到终端当中...
</code></pre>
</li>
 	<li>继续在终端输入：
<pre><code class="hljs language-bash">pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/...
</code></pre>
<blockquote><section>“</section>安装必须依赖。(这里使用清华大学源，加速下载)</blockquote>
</li>
 	<li>安装完依赖之后，在终端输入：
<pre><code class="hljs language-bash">python3 trollstore.py...
</code></pre>
</li>
 	<li>当它提示要求你输入要替换的系统应用名字时，输入：Tips。
<blockquote><section>“</section>如果是不支持的 iOS 版本，它会提示类似：iOS 14.4 (18D52) is not supported。</blockquote>
</li>
 	<li>完成后，iOS 设备将会重启。</li>
 	<li>步骤还没有完成，进入系统之后，找到 “提示” 应用程序，点击 install TrollStore，开始安装巨魔商店2。</li>
 	<li>安装完成，现在你可以尽情享受巨魔商店了。</li>
 	<li>返回桌面，打开桌面蓝色巨魔图标 Trollstore，自动安装 ldid，如果没有，底部 Setting 点进去，点击 install ldid。</li>
 	<li>往下滑动，点击 install Persitence Helper，选择 Tips，这步是安装巨魔永久性助手，万一巨魔白图标或者打不开，还可以打开提示APP，重新安装巨魔</li>
</ol>
<h2>巨魔lite安装</h2>
1，在sileo越狱商店中安装巨魔商店lite。

越狱源：<a href="https://havoc.app/package/trollstorelite">https://havoc.app/package/trollstorelite</a>

2，打开巨魔商店lite，点击右下角设置，选择第四个蓝色选项“transfer X troll store APP”，开始同步巨魔商店中的数据。

数据同步完成后，点击第二个蓝色选项“Refresh app registrations”
<h2>常用软件站</h2>
此前也已在导航站收录过一些IPA软件站点了，你可以前往查看
<ul>
 	<li>IPA之家 地址: <a href="https://ios.tinstu.com">https://ios.tinstu.com</a> 介绍: 提供ipa资源下载服务,为您收集最全iphone,ipad,ipod软件的ipa文件,ios系统的资源ipa下载</li>
 	<li>魔盒软件商店 地址: <a href="https://app.xkcc.vip">https://app.xkcc.vip</a> 介绍: 提供安卓及ipa资源下载服务，有定期更新插件及补丁等</li>
 	<li>6Z 地址: <a href="https://blog.6ziz.com">https://blog.6ziz.com</a> 介绍: 6z由intz智能助理引导，全面覆盖苹果ios、iphone和ipad教程、工具&amp;软件和插件源、ipa下载与安装指南。同时，提供新出的手机资讯及新款手机推荐。</li>
 	<li>Decrypt IPA Store 地址: <a href="https://decrypt.day">https://decrypt.day</a> 介绍: 非常容易找到并下载应用程序的最新解密 ipa</li>
 	<li>iPA库 地址: <a href="https://diyios.com">https://diyios.com</a> 介绍: 专注于iOS软件资源下载，包括游戏iPA、软件应用iPA、破解版iPA、砸壳iPA等资源的下载，做最稳定最优秀的iOS系列软件下载网站。</li>
 	<li>另一个iPA库 地址: <a href="https://www.ipa.pub/">https://www.ipa.pub/</a> 介绍: 在线iOS软件资源下载，包括游戏iPA、软件应用iPA、破解版iPA、砸壳iPA等资源的下载</li>
 	<li>iPA资源站 地址: <a href="https://www.ipapark.com">https://www.ipapark.com</a> 介绍: 提供iPA资源下载服务,为您收集最全iPhone,iPad,iPod软件的IPA文件,IOS系统的资源ipa下载</li>
 	<li>ipa软件下载|ios软件下载 地址: <a href="https://ipadump.com">https://ipadump.com</a> 介绍: 中文ipa文件下载网站, 提供在线iOS应用下载服务，为您搜集最全、最专业的iPhone软件与IPA文件</li>
 	<li>MACPA 地址: <a href="https://macpa.cn">https://macpa.cn</a> 介绍: MACPA是一个专为IPA砸壳解密而诞生的平台，提供IOS手机软件应用IPA包的砸壳解密及相关资源的下载、安装、教程等服务，这里是一个优质的砸壳软件社区，在这里你可以找到与你拥有同样兴趣的好朋友一起游玩。</li>
 	<li>appdb 地址: <a href="https://appdb.to">https://appdb.to</a> 介绍: iOS、iPadOS和MacOS的最大独立市场。免费独立发布您的应用程序。安全、私密地安装您想要的应用程序。安装和下载iOS、iPadOS、MacOS应用程序和游戏.</li>
 	<li>NB全能助手 地址: <a href="http://8.218.233.56">http://8.218.233.56</a> 介绍: NB全能助手</li>
 	<li>ipa在线签名工具 地址: <a href="https://sign.ipadump.com">https://sign.ipadump.com</a> 介绍: ipa在线签名工具</li>
 	<li>万能签 地址: <a href="https://sign.wnqapp.com/ios/">https://sign.wnqapp.com/ios/</a> 介绍: 万能签官方端</li>
 	<li>牛蛙助手 地址: <a href="https://ios222.com">https://ios222.com</a> 介绍: 牛蛙助手官网-牛蛙助手是一款专业的ios移动端必备的工具，牛蛙助手免费为苹果用户提供：ios移动端免越狱使用apple id签名，ios移动端免越狱全局修改gps定位信息,牛蛙,牛蛙助手,ios222,牛蛙神器</li>
 	<li>轻松签 地址: <a href="https://esign.yyyue.xyz">https://esign.yyyue.xyz</a> 介绍: 轻松签</li>
 	<li>iOSIPA软件网 地址: <a href="https://www.88ipa.com/">https://www.88ipa.com/</a> 介绍: 立志做全球最大的IPA分享网站, 提供在线iOS应用下载服务，为您搜集最全、最专业的iPhone,iPad,iPod软件与IPA文件, 支持iOS4,iOS5,iOS6软件,iOS7软件,iOS8,iOS9软件在线安装以及IPA文件下载。</li>
 	<li>iPA商店 地址: <a href="https://ipa.store/">https://ipa.store/</a> 介绍: iPA商店致力于iOS10以上的iPA资源下载和分享，包括游戏iPA、软件应用IPA、破解版iPA、砸壳IPA等资源的分享和下载，做最稳定最优秀的iPA下载网站。</li>
 	<li>iOS CodeVN 地址: <a href="https://ios.codevn.net">https://ios.codevn.net</a> 介绍: 适用于 iPhone/iPad 的免费 iPA 存储库</li>
</ul>
</section>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>资源分享</category>
    </item>
    <item>
      <title>使用python-rpa小红书自动化发文</title>
      <link>https://noisevip.cn/article/python-rpa</link>
      <guid isPermaLink="true">https://noisevip.cn/article/python-rpa</guid>
      <pubDate>Tue, 31 Dec 2024 02:00:00 GMT</pubDate>
      <description><![CDATA[![](https://s2.loli.net/2024/12/31/KxphvcDwXtqOd9r.png)

介绍

`xhs_ai_publisher` 是一个自动化工具，专为在小红书平台上发布文章而设计。该项目结合了图形用户界面与自动化脚本，利用大模型技术生成内容，并通过浏览器自动登录和发布]]></description>
      <content:encoded><![CDATA[<p><img src="https://s2.loli.net/2024/12/31/KxphvcDwXtqOd9r.png" alt=""></p>
<p>介绍</p>
<p><code>xhs_ai_publisher</code> 是一个自动化工具，专为在小红书平台上发布文章而设计。该项目结合了图形用户界面与自动化脚本，利用大模型技术生成内容，并通过浏览器自动登录和发布文章，旨在简化内容创作与发布流程。</p>
<p>项目地址：<a href="https://github.com/BetaStreetOmnis/xhs_ai_publisher">https://github.com/BetaStreetOmnis/xhs_ai_publisher</a></p>
<p><img src="https://s2.loli.net/2024/12/29/zlUT12itJmVgqyA.png" alt="软件界面效果"></p>
<h2>功能特点</h2>
<ul>
<li><strong>用户登录</strong>：通过手机号登录小红书账户，支持自动保存和加载登录凭证。</li>
<li><strong>内容生成</strong>：利用大模型技术自动生成文章标题和内容。</li>
<li><strong>图片管理</strong>：自动下载并预览封面图和内容图片。</li>
<li><strong>文章预览与发布</strong>：在浏览器中预览生成的文章，并进行最终发布。</li>
</ul>
<h2>主要模块</h2>
<h3>easy_ui.py</h3>
<p>该模块使用 <code>tkinter</code> 构建图形用户界面，提供以下功能：</p>
<ul>
<li><strong>登录界面</strong>：输入手机号进行登录。</li>
<li><strong>内容输入</strong>：输入自定义内容，触发内容生成。</li>
<li><strong>内容生成</strong>：调用后端API生成文章标题和内容，并下载相关图片。</li>
<li><strong>图片预览</strong>：显示生成的封面图和内容图片。</li>
<li><strong>文章预览与发布</strong>：在浏览器中预览并发布生成的文章。</li>
</ul>
<h3>write_xiaohongshu.py</h3>
<p>该模块使用 <code>selenium</code> 实现对小红书平台的自动化操作，包括：</p>
<ul>
<li><strong>登录功能</strong>：自动完成登录流程，支持使用Cookies保存会话。</li>
<li><strong>文章发布</strong>：自动填写文章标题、内容，并上传图片，完成文章发布。</li>
</ul>
<h3>xiaohongshu_img.py</h3>
<p>该模块负责与大模型接口交互，生成文章标题和内容，并获取相关图片URL。</p>
<h2>安装与使用</h2>
<ol>
<li><p><strong>安装依赖</strong></p>
<p>确保已安装 <code>Python 3.12</code>，然后运行：</p>
<pre><code>pip install -r requirements.txt
</code></pre>
</li>
<li><p><strong>配置参数</strong></p>
<p>修改 <code>write_xiaohongshu.py</code> 中的登录手机号和其他配置项。</p>
</li>
<li><p><strong>运行程序</strong></p>
<p>运行用户界面：</p>
<pre><code>python easy_ui.py
</code></pre>
</li>
<li><p><strong>使用流程</strong></p>
<ul>
<li>启动程序后，输入手机号登录小红书账户。</li>
<li>输入需要生成内容的关键词或描述，点击“生成内容”。</li>
<li>程序将自动生成文章标题和内容，并下载相关图片。</li>
<li>预览生成的内容和图片，确认无误后，点击“预览发布”进行发布。</li>
</ul>
<h2>注意事项</h2>
<ul>
<li>确保已安装 <code>Chrome</code> 浏览器，并下载对应版本的 <code>ChromeDriver</code>。</li>
<li>登录过程中需要输入验证码，请确保手机畅通。</li>
<li>发布文章前，请核对生成的内容和图片，以确保符合发布要求</li>
</ul>
</li>
</ol>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>探索发现</category>
    </item>
    <item>
      <title>PeterCat-在任意网站内接入AI知识库智能答疑机器人</title>
      <link>https://noisevip.cn/article/petercat-ai</link>
      <guid isPermaLink="true">https://noisevip.cn/article/petercat-ai</guid>
      <pubDate>Mon, 23 Dec 2024 05:00:00 GMT</pubDate>
      <description><![CDATA[![](https://s2.loli.net/2024/12/23/dYtpHFAQnNSlWfz.png)

## 介绍

PeterCat是专为社区维护者和开发者打造的智能答疑机器人解决方案。

官网：https://petercat.ai

Github：https://github.com]]></description>
      <content:encoded><![CDATA[<p><img src="https://s2.loli.net/2024/12/23/dYtpHFAQnNSlWfz.png" alt=""></p>
<h2>介绍</h2>
<p>PeterCat是专为社区维护者和开发者打造的智能答疑机器人解决方案。</p>
<p>官网：<a href="https://petercat.ai">https://petercat.ai</a></p>
<p>Github：<a href="https://github.com/petercat-ai/petercat">https://github.com/petercat-ai/petercat</a></p>
<p><img src="https://mdn.alipayobjects.com/huamei_j8gzmo/afts/img/A*HNxrTLILmrsAAAAAAAAAAAAADrPSAQ/original" alt="banner"></p>
<h4>特性</h4>
<p>它提供对话式答疑 Agent 配置系统、自托管部署方案和便捷的一体化应用 SDK，让您能够为自己的 GitHub 仓库一键创建智能答疑机器人，并快速集成到各类官网或项目中， 为社区提供更高效的技术支持生态。</p>
<h3>对话即创造</h3>
<p>仅需要告知你的仓库地址或名称，PeterCat 即可自动完成创建机器人的全部流程</p>
<p><img src="https://s2.loli.net/2024/12/23/BUkqzc6mr1KI97i.jpg" alt="对话即创造"></p>
<h3>知识自动入库</h3>
<p>机器人创建后，所有相关Github 文档和 issue 将自动入库，作为机器人的知识依据</p>
<p><img src="https://s2.loli.net/2024/12/23/BjzpsJynHaMwPLX.jpg" alt="知识自动入库"></p>
<h3>多平台集成</h3>
<p>多种集成方式自由选择，如对话应用 SDK 集成至官网，Github APP一键安装至 Github 仓库等</p>
<p><img src="https://s2.loli.net/2024/12/23/cMdvjVAtN2W3m4f.jpg" alt="官网"></p>
<h2>使用效果</h2>
<p><img src="https://s2.loli.net/2024/12/23/LMieqkGES4DBU6m.png" alt=""></p>
<p><img src="https://s2.loli.net/2024/12/23/N6Jy45vw3irHLKY.png" alt=""></p>
<p><img src="https://s2.loli.net/2024/12/23/ZtUvBOuGilP4SVN.png" alt=""></p>
<h2>如何接入</h2>
<h3>使用官方实例接入</h3>
<ul>
<li>首先登录<a href="https://petercat.ai/">官网</a>后选择工作台，创建自己的空间</li>
<li>创建项目进入配置，可以手动和对话配置</li>
<li>复制 Token后选择保存部署，填写域名提交给官方审核</li>
</ul>
<p><img src="https://s2.loli.net/2024/12/23/RSuVixfhCsmGt4I.png" alt="1734939987253"></p>
<p>审核通过（将你的域名加入白名单）后，可以选择不同的代码接入</p>
<p>参考文档：<a href="https://github.com/petercat-ai/petercat/blob/main/assistant/src/Assistant/index.md#api">https://github.com/petercat-ai/petercat/blob/main/assistant/src/Assistant/index.md#api</a></p>
<h3>代码引入</h3>
<pre><code>npm install @petercatai/assistant
</code></pre>
<pre><code>import { Assistant } from &#39;@petercatai/assistant&#39;;
import &#39;@petercatai/assistant/style&#39;;

const YourPetercataiAssistant = () =&gt; {
  return &lt;Assistant token=&quot;&lt; 你的 token &gt;&quot; showBubble={true} isVisible={false} apiDomain=&quot;https://api.petercat.ai&quot; /&gt;;
};

function App() {
  const [count, setCount] = useState(0);

  return (
    &lt;&gt;
      {/* ... */}
      &lt;YourPetercataiAssistant /&gt;
    &lt;/&gt;
  );
}
</code></pre>
<h2>其他</h2>
<h3>UMD 接入</h3>
<p>petercat 同时支持 UMD 的接入方式</p>
<ol>
<li>external 和 UMD 加载资源</li>
</ol>
<pre><code>// example for umi project
// .umirc.ts
export default {
  externals: {
    react: &#39;React&#39;,
    &#39;react-dom&#39;: &#39;ReactDOM&#39;,
    antd: &#39;antd&#39;,
    dayjs: &#39;dayjs&#39;,
    &#39;lottie-web&#39;: &#39;lottie&#39;,
  },
};
</code></pre>
<h3>PHP+HTML页面引入</h3>
<pre><code>&lt;head&gt;
  &lt;script src=&quot;https://cdn.jsdelivr.net/npm/react/umd/react.development.js&quot;&gt;&lt;/script&gt;
  &lt;script src=&quot;https://cdn.jsdelivr.net/npm/react-dom/umd/react-dom.development.js&quot;&gt;&lt;/script&gt;
  &lt;script src=&quot;https://cdn.jsdelivr.net/npm/dayjs/dayjs.min.js&quot;&gt;&lt;/script&gt;
  &lt;script src=&quot;https://cdn.jsdelivr.net/npm/antd/dist/antd.js&quot;&gt;&lt;/script&gt;
  &lt;script src=&quot;https://cdn.jsdelivr.net/npm/lottie-web/build/player/lottie.js&quot;&gt;&lt;/script&gt;
  &lt;script src=&quot;https://cdn.jsdelivr.net/npm/@petercatai/assistant@1.0.7/dist/umd/assistant.min.js&quot;&gt;&lt;/script&gt;
  &lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/npm/@petercatai/assistant@1.0.7/dist/umd/assistant.min.css&quot;&gt;
&lt;/head&gt;
</code></pre>
<p>加载 PetercatLUI</p>
<pre><code>&lt;body&gt;
  ...
   &lt;script&gt;
     PetercatLUI.initAssistant({
       apiDomain: &#39;https://api.petercat.ai&#39;,
       token: &#39;your-token&#39;,
       starters: [&#39;介绍下这个项目&#39;, &#39;查看贡献指南&#39;, &#39;我该怎样快速上手&#39;],
       clearMessage: true
     });
  &lt;/script&gt;
&lt;/body&gt;
</code></pre>
<h2>私有化部署</h2>
<p>部署方案支持：<a href="https://aws.amazon.com/">AWS</a> + <a href="https://supabase.com/">Supabase</a></p>
<h1>自托管</h1>
<h2>本地安装</h2>
<h3>第一步：克隆仓库</h3>
<p>将项目仓库克隆到本地计算机：</p>
<pre><code>git clone https://github.com/petercat-ai/petercat.git
</code></pre>
<h3>第二步：安装依赖</h3>
<p>使用 Yarn 安装所有必需的依赖项：</p>
<pre><code>yarn run bootstrap
</code></pre>
<h3>第三步：在本地启动 supabase</h3>
<p>参考 <a href="https://supabase.com/docs/guides/self-hosting/docker#installing-and-running-supabase">https://supabase.com/docs/guides/self-hosting/docker#installing-and-running-supabase</a></p>
<pre><code># Get the code
git clone --depth 1 https://github.com/supabase/supabase

# Go to the docker folder
cd supabase/docker

# Copy the fake env vars
cp .env.example .env

# Pull the latest images
docker compose pull

# Start the services (in detached mode)
docker compose up -d
</code></pre>
<h3>第四步：复制 <code>.env.example</code> 文件</h3>
<p>复制客户端环境配置示例文件：</p>
<pre><code>cp client/.env.local.example client/.env
</code></pre>
<p>复制服务器环境配置示例文件：</p>
<pre><code>cp server/.env.local.example server/.env
</code></pre>
<p>打开 <code>server/.env</code> 文件，把 <code>SERVICE_ROLE_KEY</code> 字段改成从 supabase 的 <code>docker/.env</code> 文件的 <code>SERVICE_ROLE_KEY</code> 的值</p>
<h3>第五步：初始化数据库结构</h3>
<h4>第五步 5.1：导航到 Migrations 文件夹</h4>
<p>导航到 <code>migrations</code> 文件夹，准备进行数据库设置：</p>
<pre><code>cd migrations
</code></pre>
<h4>第五步 5.2：安装 Supabase CLI</h4>
<p>按照 <a href="https://supabase.com/docs/guides/cli/getting-started">Supabase 入门指南</a> 中的说明安装 Supabase CLI：</p>
<pre><code>brew install supabase/tap/supabase
</code></pre>
<h4>第五步 5.3：执行迁移</h4>
<p>将数据库迁移应用到您的远程数据库：</p>
<pre><code># postgres db url 在第四步的 .env 文件中可以找到
supabase db push --db-url &quot;postgres://postgres.your-tenant-id:your-super-secret-and-long-postgres-password@127.0.0.1:5432/postgres&quot;
</code></pre>
<p>如果成功，您将看到类似以下的输出：</p>
<pre><code>Connecting to remote database...
Do you want to push these migrations to the remote database?
• 20240902023033_remote_schema.sql

[Y/n] Y
Applying migration 20240902023033_remote_schema.sql...
Finished supabase db push.
</code></pre>
<h3>第六步：启动服务器</h3>
<p>使用以下命令启动服务器：</p>
<pre><code>yarn run server:local
</code></pre>
<p>通过在浏览器中打开 <code>http://127.0.0.1:8001/api/health_checker</code> 检查服务器是否正在运行。</p>
<h3>第七步：启动客户端</h3>
<p>使用以下命令启动客户端：</p>
<pre><code>yarn run client
</code></pre>
<p>您可以通过在浏览器中打开 <code>http://127.0.0.1:3000</code> 来检查客户端服务。</p>
<h2>在 AWS 上部署 Petercat：准备步骤</h2>
<p>在 AWS 上部署 Petercat 之前，请确保您已完成以下准备工作：</p>
<ul>
<li>开通 AWS 账户。</li>
<li>本地安装 Docker。</li>
</ul>
<h2>示例：在亚太区 - 新加坡（ap-southeast-1）本地部署您的服务</h2>
<h3>第一步：安装 AWS CLI 和 SAM CLI</h3>
<ol>
<li>安装 AWS CLI 工具。</li>
<li>访问配置文档并配置您的 AWS CLI：<a href="https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html">AWS CLI 配置指南</a></li>
<li>安装 SAM CLI 工具。</li>
<li>访问 <a href="https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/install-sam-cli.html">SAM CLI 安装指南</a>。</li>
</ol>
<h3>第二步：登录 AWS</h3>
<p>使用单点登录 (SSO) 会话登录您的 AWS 账户：</p>
<pre><code>aws sso login --sso-session $YOUR_PROFILE_NAME
</code></pre>
<h3>第三步：复制并修改配置文件</h3>
<p>运行以下命令复制示例配置文件：</p>
<pre><code>cp .aws/petercat-example.toml .aws/petercat-ap-southeast.toml
</code></pre>
<h3>第四步：更新 <code>.toml</code> 文件</h3>
<p>打开 <code>.toml</code> 文件并更新必要的键值。您可以使用任何文本编辑器，例如 <code>vim</code>、<code>emacs</code>、<code>vscode</code> 或 <code>nano</code>：</p>
<pre><code>vim .aws/petercat-ap-southeast.toml
</code></pre>
<p>将 <code>YOUR_REGION</code> 替换为 <code>ap-southeast-1</code>，并将 <code>YOUR_STACK_NAME</code> 替换为您的自定义栈名称，例如 <code>petercat-selfhosted</code>。</p>
<pre><code>version = 0.1
[default.deploy.parameters]
stack_name = &quot;petercat-selfhosted&quot;
resolve_s3 = true
s3_prefix = &quot;petercat-selfhosted&quot;
region = &quot;ap-southeast-1&quot;
confirm_changeset = true
capabilities = &quot;CAPABILITY_IAM&quot;
disable_rollback = true
</code></pre>
<h3>第五步：本地构建 Docker 镜像</h3>
<p>在项目的根目录中运行以下命令。根据您计算机的配置，这一步可能需要一些时间：</p>
<pre><code>sam build --use-container --config-file .aws/petercat-ap-southeast.toml
</code></pre>
<p>构建完成后，您应该会看到以下输出：</p>
<pre><code>Build Succeeded

Built Artifacts  : .aws-sam/build
Built Template   : .aws-sam/build/template.yaml

Commands you can use next
=========================
[*] Validate SAM template: sam validate
[*] Invoke Function: sam local invoke
[*] Test Function in the Cloud: sam sync --stack-name {{stack-name}} --watch
[*] Deploy: sam deploy --guided
</code></pre>
<h3>第六步：加载环境变量并开始部署</h3>
<p>在根目录中，执行以下命令以加载环境变量：</p>
<pre><code>source server/.env
</code></pre>
<p>然后，运行以下命令进行部署：</p>
<pre><code>sam deploy \
    --guided \
    --no-confirm-changeset \
    --config-file .aws/petercat-ap-southeast.toml \
    --parameter-overrides APIUrl=$API_URL \
                          WebUrl=$WEB_URL \
                          AWSSecretName=$X_GITHUB_SECRET_NAME \
                          S3TempBucketName=$S3_TEMP_BUCKET_NAME \
                          GitHubAppID=$X_GITHUB_APP_ID \
                          GithubAppsClientId=$X_GITHUB_APPS_CLIENT_ID \
                          GithubAppsClientSecret=$X_GITHUB_APPS_CLIENT_SECRET \
                          OpenAIAPIKey=$OPENAI_API_KEY \
                          GeminiAPIKey=$GEMINI_API_KEY \
                          SupabaseServiceKey=$SUPABASE_SERVICE_KEY \
                          SupabaseUrl=$SUPABASE_URL \
                          TavilyAPIKey=$TAVILY_API_KEY \
                          APIIdentifier=$API_IDENTIFIER \
                          FastAPISecretKey=$FASTAPI_SECRET_KEY \
                          Auth0Domain=$AUTH0_DOMAIN \
                          Auth0ClientId=$AUTH0_CLIENT_ID \
                          Auth0ClientSecret=$AUTH0_CLIENT_SECRET
</code></pre>
<h3>第七步：检查您的服务</h3>
<p>查看 CloudFormation 部署栈的输出：</p>
<pre><code>------------------------------------------------------------------------------------------------------------------------------------
Outputs
------------------------------------------------------------------------------------------------------------------------------------
Key                 FastAPIFunction
Description         FastAPI Lambda Function ARN
Value               arn:aws:lambda:ap-southeast-1:654654285942:function:petercat-selfhosted-FastAPIFunction-x0bez5v1EMDL

Key                 SQSSubscriptionFunction
Description         SQS Subscription Function Lambda Function ARN
Value               arn:aws:lambda:ap-southeast-1:654654285942:function:petercat-selfhosted-SQSSubscriptionFunction-ghluUSulMO4y

Key                 FastAPIFunctionUrl
Description         Function URL for FastAPI function
Value               https://itebdgout4h33aqpy2ygxaedgm0nlnys.lambda-url.ap-southeast-1.on.aws/

Key                 SQSSubscriptionFunctionUrl
Description         Function URL for SQS Subscription function
Value               https://q7kpxukbpgxkkjldgnvvbc6dyi0akzuk.lambda-url.ap-southeast-1.on.aws/
------------------------------------------------------------------------------------------------------------------------------------
</code></pre>
<p>使用 <code>curl</code> 测试您的服务：</p>
<pre><code>curl https://itebdgout4h33aqpy2ygxaedgm0nlnys.lambda-url.ap-southeast-1.on.aws/api/health_checker
</code></pre>
<h2>环境变量</h2>
<p>本项目需要进行环境变量进行设置：</p>
<h3>Client</h3>
<pre><code>.env.local
</code></pre>
<table>
<thead>
<tr>
<th>环境变量</th>
<th>类型</th>
<th>描述</th>
<th>示例</th>
</tr>
</thead>
<tbody><tr>
<td><code>NEXT_PUBLIC_API_DOMAIN</code></td>
<td>必选</td>
<td>后端服务的 API 域名。</td>
<td><code>https://api.petercat.ai</code></td>
</tr>
</tbody></table>
<h3>Server</h3>
<pre><code>.env
</code></pre>
<table>
<thead>
<tr>
<th>环境变量</th>
<th>类型</th>
<th>描述</th>
<th>示例</th>
</tr>
</thead>
<tbody><tr>
<td><strong>应用基础环境变量</strong></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>API_URL</code></td>
<td>必选</td>
<td>后端服务的 API 域名</td>
<td><code>https://api.petercat.ai</code></td>
</tr>
<tr>
<td><code>WEB_URL</code></td>
<td>必选</td>
<td>前端 Web 服务的域名</td>
<td><code>https://petercat.ai</code></td>
</tr>
<tr>
<td><code>STATIC_URL</code></td>
<td>必选</td>
<td>静态资源域名</td>
<td><code>https://static.petercat.ai</code></td>
</tr>
<tr>
<td><strong>AWS 相关环境变量</strong></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>X_GITHUB_SECRET_NAME</code></td>
<td>必选</td>
<td>AWS 托管的 Github 私钥文件名</td>
<td><code>prod/githubapp/petercat/pem</code></td>
</tr>
<tr>
<td><code>STATIC_SECRET_NAME</code></td>
<td>可选</td>
<td>AWS 托管的 CloudFront 签名私钥名称。如果配置了该项，将使用 CloudFront 签名 URL 来保护你的资源。更多信息请参阅 <a href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-trusted-signers.html">AWS 文档</a>。</td>
<td><code>prod/petercat/static</code></td>
</tr>
<tr>
<td><code>LLM_TOKEN_SECRET_NAME</code></td>
<td>可选</td>
<td>AWS 托管的 llm 签名私钥名称。如果配置了该项，petercat 将使用 RSA 算法托管用户的 LLM Token</td>
<td><code>prod/petercat/llm</code></td>
</tr>
<tr>
<td><code>LLM_TOKEN_PUBLIC_NAME</code></td>
<td>可选</td>
<td>AWS 托管的 llm 签名公钥名称。如果配置了该项，petercat 将使用 RSA 算法托管用户的 LLM Token</td>
<td><code>prod/petercat/llm/pub</code></td>
</tr>
<tr>
<td><code>STATIC_KEYPAIR_ID</code></td>
<td>可选</td>
<td>AWS CloudFront 的 Key Pair ID。如果配置了该项，将使用 CloudFront 签名 URL 来保护你的资源。更多信息请参阅 <a href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-trusted-signers.html">AWS 文档</a>。</td>
<td><code>APKxxxxxxxx</code></td>
</tr>
<tr>
<td><code>S3_TEMP_BUCKET_NAME</code></td>
<td>可选</td>
<td>用于托管 AWS 临时图片文件 S3 的 bucket</td>
<td><code>xxx-temp</code></td>
</tr>
<tr>
<td><code>SQS_QUEUE_URL</code></td>
<td>必选</td>
<td>AWS SQS 消息队列 URL</td>
<td><code>https://sqs.ap-northeast-1.amazonaws.com/xxx/petercat-task-queue</code></td>
</tr>
<tr>
<td><strong>SUPABASE 相关 env</strong></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>SUPABASE_URL</code></td>
<td>必选</td>
<td>supabase 服务的 URL，可以在<a href="https://supabase.com/dashboard/project/_/settings/database">这里</a>找到</td>
<td><code>https://***.supabase.co</code></td>
</tr>
<tr>
<td><code>SUPABASE_SERVICE_KEY</code></td>
<td>必选</td>
<td>supabase 服务密钥，可以在<a href="https://supabase.com/dashboard/project/_/settings/database">这里</a>找到</td>
<td><code>{{SUPABASE_SERVICE_KEY}}</code></td>
</tr>
<tr>
<td><strong>Auth0 相关 env</strong></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>AUTH0_DOMAIN</code></td>
<td>必选</td>
<td>auth0 服务域名，从 auth0 / Application / Basic Information 下获取</td>
<td><code>petercat.us.auth0.com</code></td>
</tr>
<tr>
<td><code>AUTH0_CLIENT_ID</code></td>
<td>必选</td>
<td>auth0 客户端 ID，从 auth0 / Application / Basic Information 下获取</td>
<td><code>artfiUxxxx</code></td>
</tr>
<tr>
<td><code>AUTH0_CLIENT_SECRET</code></td>
<td>必选</td>
<td>auth0 客户端密钥， 从 auth0 / Application / Basic Information 下获取</td>
<td><code>xxxx-xxxx-xxx</code></td>
</tr>
<tr>
<td><code>API_IDENTIFIER</code></td>
<td>必选</td>
<td>auth0 的 API Identifier</td>
<td><code>https://petercat.us.auth0.com/api/v2/</code></td>
</tr>
<tr>
<td><strong>LLM相关的 env</strong></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>OPENAI_API_KEY</code></td>
<td>必选</td>
<td>OpenAI 的密钥</td>
<td><code>sk-xxxx</code></td>
</tr>
<tr>
<td><code>OPENAI_BASE_URL</code></td>
<td>可选</td>
<td>API 请求的基础 URL。仅在使用代理或服务模拟器时指定。</td>
<td><code>https://api.openai.com/v1</code></td>
</tr>
<tr>
<td><code>GEMINI_API_KEY</code></td>
<td>可选</td>
<td>Gemini 的密钥</td>
<td><code>xxxx</code></td>
</tr>
<tr>
<td><code>TAVILY_API_KEY</code></td>
<td>必选</td>
<td>Tavily 的密钥</td>
<td><code>tvly-xxxxx</code></td>
</tr>
<tr>
<td><strong>注册为 Github App 的 env</strong></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>X_GITHUB_APP_ID</code></td>
<td>可选</td>
<td>注册为 Github App 时，APPID</td>
<td><code>123456</code></td>
</tr>
<tr>
<td><code>X_GITHUB_APPS_CLIENT_ID</code></td>
<td>可选</td>
<td>注册为 Github App 时，APP 的 Client ID</td>
<td><code>Iv1.xxxxxxx</code></td>
</tr>
<tr>
<td><code>X_GITHUB_APPS_CLIENT_SECRET</code></td>
<td>可选</td>
<td>注册为 Github App 时，APP 的 Client 密钥</td>
<td><code>xxxxxxxx</code></td>
</tr>
<tr>
<td><strong>限流配置</strong></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td><code>RATE_LIMIT_ENABLED</code></td>
<td>可选</td>
<td>限流配置是否开启</td>
<td><code>True</code></td>
</tr>
<tr>
<td><code>RATE_LIMIT_REQUESTS</code></td>
<td>可选</td>
<td>限流的请求数量</td>
<td><code>100</code></td>
</tr>
<tr>
<td><code>RATE_LIMIT_DURATION</code></td>
<td>可选</td>
<td>限流的统计时长，单位为分钟</td>
<td><code>1</code></td>
</tr>
</tbody></table>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>探索发现</category>
    </item>
    <item>
      <title>Project IDX-你的在线AI代码工作区</title>
      <link>https://noisevip.cn/article/project-idx-ai</link>
      <guid isPermaLink="true">https://noisevip.cn/article/project-idx-ai</guid>
      <pubDate>Mon, 23 Dec 2024 03:39:05 GMT</pubDate>
      <description><![CDATA[Project IDX 是一个 AI 辅助的工作区，用于在云中进行全栈、多平台应用程序开发。IDX 支持广泛的框架、语言和服务，并与您最喜欢的 Google 产品集成，可简化您的开发工作流程，以便您可以快速、轻松、高质量地跨平台构建和交付应用程序 官网： https://idx.dev 特征 无论您身在何处，都可以快速开始工作 Project IDX 可让您立即进入开发工作流程，并以 Google Cloud 的安全性和可扩展性为后盾。从打开浏览器到构建应用程序只需几秒钟，而不是几天。 在 IDX 中使用 Gemini 进行开发 借助 Google 最大、功能最强大的 AI 模型 Gemini 的内置 AI 辅助，快速高效地工作。生成代码，访问内联编码建议，并获得实时理解复杂代码的帮助。 即时访问流行的框架和语言 Project IDX 使您可以轻松开始使用适用于 Angular、Astro、Flutter、Go、Next.js、Python/Flask、React、Svelte 等框架的各种模板。您还可以使用 Nix 自定义您的环境 ，或从 GitHub 导入现有应用程序，并支持大多]]></description>
      <content:encoded><![CDATA[<section id="wenyan" class="preview" data-provider="WenYan"><img src="https://s2.loli.net/2024/12/22/G5cVXIC9dk1rWAB.png" alt="1734863312414" />

Project IDX 是一个 AI 辅助的工作区，用于在云中进行全栈、多平台应用程序开发。IDX 支持广泛的框架、语言和服务，并与您最喜欢的 Google 产品集成，可简化您的开发工作流程，以便您可以快速、轻松、高质量地跨平台构建和交付应用程序

官网：<a href="https://idx.dev">https://idx.dev</a>
<h2>特征</h2>
<h2>无论您身在何处，都可以快速开始工作</h2>
Project IDX 可让您立即进入开发工作流程，并以 Google Cloud 的安全性和可扩展性为后盾。从打开浏览器到构建应用程序只需几秒钟，而不是几天。

<img src="https://s2.loli.net/2024/12/22/iYb3yXBRdDUMha8.png" alt="1734864552243" />
<h2>在 IDX 中使用 Gemini 进行开发</h2>
借助 Google 最大、功能最强大的 AI 模型 Gemini 的内置 AI 辅助，快速高效地工作。生成代码，访问内联编码建议，并获得实时理解复杂代码的帮助。

<img src="https://s2.loli.net/2024/12/22/eGCuBZhkbnzSOP6.png" alt="1734864632122" />
<h2>即时访问流行的框架和语言</h2>
Project IDX 使您可以轻松开始使用适用于 Angular、Astro、Flutter、Go、Next.js、Python/Flask、React、Svelte 等框架的各种模板。您还可以使用 <a href="https://developers.google.com/idx/guides/customize-idx-env">Nix 自定义您的环境</a>，或从 GitHub 导入现有应用程序，并支持大多数技术堆栈。

而且，通过一键式集成，您可以在开发的每个阶段轻松地将流行的 Google API 和服务添加到您的应用中。

<img src="https://s2.loli.net/2024/12/22/w3xfUQLG8soYib6.png" alt="1734864675022" />
<h2>跨平台优化您的应用</h2>
Project IDX 允许您预览全栈式多平台应用程序，就像用户看到的那样，具有内置的 Web 预览和 Android 仿真器。此外，通过访问数千个扩展，您可以测试和优化 API 终端节点和后端服务。

<img src="https://s2.loli.net/2024/12/22/E7f2ORgw9HvyL8M.png" alt="1734864692207" />

<img src="https://s2.loli.net/2024/12/22/6vJ1EnS4MWoN37V.png" alt="1734874064544" />

</section>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>AIGC</category>
    </item>
    <item>
      <title>将你的iphone变为复古街机掌机</title>
      <link>https://noisevip.cn/article/iphone</link>
      <guid isPermaLink="true">https://noisevip.cn/article/iphone</guid>
      <pubDate>Mon, 23 Dec 2024 02:00:00 GMT</pubDate>
      <description><![CDATA[![](https://s2.loli.net/2024/12/23/GxHq2IrEaXAJRwi.png)

前言：曾几何时，一直想要一个开源掌机，如安伯尼克周哥RG系列等，但又觉得性价比不高，加上switch和steam deck等的选择就一直搁置了,好在还有一个强有力的替代品-手机，当今的手]]></description>
      <content:encoded><![CDATA[<p><img src="https://s2.loli.net/2024/12/23/GxHq2IrEaXAJRwi.png" alt=""></p>
<p>前言：曾几何时，一直想要一个开源掌机，如安伯尼克周哥RG系列等，但又觉得性价比不高，加上switch和steam deck等的选择就一直搁置了,好在还有一个强有力的替代品-手机，当今的手机去玩一些模拟器游戏是不在话下的，可玩性也非常高，今天就来盘点下iphone平台下那些完全免费且优质的模拟器app</p>
<p>附：游戏rom资源</p>
<p>GBA中文游戏合集：<a href="https://pan.quark.cn/s/7e97a456642a">https://pan.quark.cn/s/7e97a456642a</a></p>
<p>NDS中文合集：<a href="https://pan.quark.cn/s/423423303507">https://pan.quark.cn/s/423423303507</a></p>
<p>GBC合集：<a href="https://pan.quark.cn/s/647d7c3aeb34">https://pan.quark.cn/s/647d7c3aeb34</a></p>
<p>FC中文NES合集：<a href="https://pan.quark.cn/s/f692354981a7">https://pan.quark.cn/s/f692354981a7</a></p>
<p>GBA合集：<a href="https://pan.quark.cn/s/d6ea9bfe0790">https://pan.quark.cn/s/d6ea9bfe0790</a></p>
<h2>一、TinyEmulator</h2>
<p>Appstore：<a href="https://apps.apple.com/us/app/tinyemulator/id6667099562">https://apps.apple.com/us/app/tinyemulator/id6667099562</a></p>
<p><img src="https://s2.loli.net/2024/12/23/chZpz872vdxjymC.png" alt=""></p>
<p>TinyEmulator是一个多功能的复古游戏模拟器。它支持多人在线对战，并可运行来自NES、SNES、MD、GBA以及街机游戏等平台的游戏。</p>
<p>TinyEmulator - TinyEmulator是一个旨在玩经典复游戏的模拟器，支持多个平台。它支持单人游戏和与朋友的多人网络游戏。此外，它可以在多个平台上运行，并不断扩展其兼容性。</p>
<p>系统：</p>
<ul>
<li><p>任天堂娱乐系统</p>
</li>
<li><p>超级任天堂娱乐系统</p>
</li>
<li><p>任天堂游戏机</p>
</li>
<li><p>任天堂游戏机（彩色版）</p>
</li>
<li><p>任天堂游戏机Advance</p>
</li>
<li><p>世嘉大师系统</p>
</li>
<li><p>世嘉创世纪/美版创世纪</p>
</li>
<li><p>世嘉游戏机</p>
</li>
<li><p>街机：PolyGame Master</p>
</li>
<li><p>街机：NeoGeo</p>
</li>
<li><p>街机：卡普空游戏系统</p>
</li>
<li><p>街机：科乐美</p>
</li>
</ul>
<p>特点：</p>
<ul>
<li><p>支持多人网络游戏</p>
</li>
<li><p>支持存档与加载</p>
</li>
<li><p>支持游戏手柄控制</p>
</li>
<li><p>手柄皮肤</p>
</li>
<li><p>支持触觉反馈</p>
</li>
<li><p>网络游戏时语音聊天</p>
</li>
<li><p>网络游戏时发送消息</p>
</li>
<li><p>与网络游戏伙伴分享你的ROM</p>
</li>
<li><p>系统一体化叠加控制器</p>
</li>
<li><p>Mac上的键盘映射</p>
</li>
</ul>
<h2>二、AD Boy</h2>
<p><a href="https://apps.apple.com/us/app/ad-boy-all-in-one-emulator/id6478694589?platform=iphone">https://apps.apple.com/us/app/ad-boy-all-in-one-emulator/id6478694589?platform=iphone</a></p>
<p><img src="https://s2.loli.net/2024/12/23/TdE5B6X8LtQU7pR.png" alt=""></p>
<p>一个全能模拟器，让您重温游戏的黄金时代！支持GBA、GBC、GB、NES、SNES、SMS、SG和SG，AD Boy为您开启了一扇通往经典游戏宝藏的大门，尽在您的设备上。</p>
<p>系统：</p>
<ul>
<li><p>任天堂娱乐系统</p>
</li>
<li><p>超级任天堂娱乐系统</p>
</li>
<li><p>游戏男孩（彩色）</p>
</li>
<li><p>游戏男孩高级版</p>
</li>
<li><p>世嘉大师系统</p>
</li>
<li><p>世嘉创世纪/美版Mega Drive</p>
</li>
<li><p>世嘉掌机游戏机</p>
</li>
</ul>
<p>功能：</p>
<p>游戏库：</p>
<p>将您的游戏收藏整齐组织在一个时尚的库中通过游戏启动器启动它们！</p>
<p>快速存档与快速加载：</p>
<p>随时随地保存游戏进度，并随时加载！</p>
<p>快速前进：</p>
<p>以更快的速度进行游戏，更快达成目标！</p>
<p>存档导出/导入：</p>
<p>将您的游戏进度导出到其他设备或模拟器上玩，再导入回来继续在AD Boy上游戏！</p>
<p>皮肤：</p>
<p>从多种皮肤中选择，定制您喜欢的AD Boy外观！</p>
<h2>三、Delta</h2>
<p><a href="https://apps.apple.com/us/app/delta-game-emulator/id1048524688">https://apps.apple.com/us/app/delta-game-emulator/id1048524688</a></p>
<p><img src="https://s2.loli.net/2024/12/23/bBeDSc12xMa8mTo.png" alt="1734950072414"></p>
<p>Delta 是一款全面的 iOS 和 iPadOS 模拟器。Delta 在其前身 GBA4iOS 的基础上，扩展了对更多游戏系统的支持，如 NES、SNES、N64 和 DS。</p>
<p><strong>功能</strong></p>
<p><strong>支持的游戏系统</strong></p>
<ul>
<li>任天堂娱乐系统</li>
<li>超级天堂娱乐系统</li>
<li>任天堂 64</li>
<li>游戏机（颜色版）</li>
<li>游戏机高级版</li>
<li>任天堂 DS</li>
<li>还会有更多支持的系统！</li>
</ul>
<p><strong>控制器支持</strong></p>
<p>-天堂 Switch Pro 控制器，Joy-Cons</p>
<ul>
<li>任天堂 Switch Online 控制器NES、SNES、N64）</li>
<li>PS4、PS5</li>
<li>Xbox One S、Xbox Series X</li>
<li>MFi 游戏控制器</li>
<li>蓝牙和有线键盘</li>
</ul>
<p><strong>保存状态</strong></p>
<ul>
<li>从暂停菜单保存和加载任何游戏的保存状态。</li>
<li>锁定保存状态以防意外覆盖。</li>
<li>自动备份保存状态确保你永远不会丢失进度。</li>
<li>支持“快速保存”，可通过单个按钮快速保存/加载的保存状态（需要外部控制器）。</li>
</ul>
<p><strong>作弊</strong></p>
<ul>
<li>支持每个支持系统的各种作弊代码：<ul>
<li>NES：游戏神奇（Game Genie）</li>
<li>SNES：游戏神奇（Game Genie），专业行动重播（Pro Action Replay）</li>
<li>N64：游戏鲨（GameShark）</li>
<li>GBC：游戏神奇（Game Genie），游戏鲨（GameShark）</li>
<li>GBA：行动重播（Action Replay），代码破坏者（Code Breaker），游戏鲨（GameShark）</li>
<li>DS：行动重播（Action Replay）</li>
</ul>
</li>
</ul>
<p><strong>Delta 同步</strong></p>
<ul>
<li>在设备之间同步你的游戏、游戏存档、保存状态、作弊、控制器皮肤和控制器映射。</li>
<li>查看你同步的所有内容的版本历史，并可选择将其恢复到早期版本。</li>
<li>支持 Google Drive 和 Dropbox。</li>
</ul>
<p><strong>自定义控制器皮肤</strong></p>
<ul>
<li>所有系统的美观内置控制器皮肤。</li>
<li>导入他人制作的控制器皮肤，或甚至制作自己的皮肤与全世界分享！</li>
</ul>
<p><strong>保持按钮</strong></p>
<ul>
<li>选择 Delta 代表你按住的按钮，解放你的拇指以按其他按钮。</li>
<li>非常适合通常需要持续按住某个按钮的游戏（例如马里奥游戏中的跑步按钮，或马里奥赛车中的 A 按钮）。</li>
</ul>
<p><strong>快进</strong></p>
<ul>
<li>通过使游戏以比正常更快的速度运行，快速度过游戏中较慢的部分。</li>
<li>可以从暂停菜单轻松启用或禁用，或选择将其映射到外部控制器的按钮。</li>
</ul>
<p><strong>3D/触觉触控</strong></p>
<ul>
<li>使用 3D 或触觉触控“窥视”游戏、保存状态和作弊代码。</li>
<li>应用图标快捷方式可快速访问你最近玩过的游戏可以自定义快捷方式以始终包含某些游戏。</li>
</ul>
<p><strong>游戏艺术</strong></p>
<ul>
<li>自动显示导入游戏的适当盒装艺术。</li>
<li>将游戏的艺术作品更改为你想要的任何内容，或从内置游戏艺术数据库中选择。</li>
</ul>
<p><strong>其他功能</strong></p>
<ul>
<li>陀螺仪支持（仅限《瓦里奥制造：扭曲！》）</li>
<li>麦克风支持（仅限 DS）</li>
<li>支持 delta:// URL 方案，直接跳转到特定游戏。</li>
</ul>
<h2>四、PPSSPP</h2>
<p><a href="https://apps.apple.com/us/app/ppsspp-psp-emulator/id6496972903?platform=iphone">https://apps.apple.com/us/app/ppsspp-psp-emulator/id6496972903?platform=iphone</a></p>
<p><img src="https://s2.loli.net/2024/12/23/tfAWBK1PJ4pxjOQ.png" alt=""></p>
<p>PPSSPP 是移动设备上唯一的原始 PSP 模拟器。它可以在 iOS 上以出色的性能运行几乎所有 游戏。</p>
<p>此下载不包括任何游戏。使用您自己真实的 PSP 游戏并将其转换为 .ISO 或 .CSO 文件，或者简单地玩可在内置“Homebrew Store”中找到的免费自制游戏</p>
<h2>五、Game Emulator</h2>
<p><a href="https://apps.apple.com/us/app/game-emulator-replay/id6502828239?platform=iphone">https://apps.apple.com/us/app/game-emulator-replay/id6502828239?platform=iphone</a></p>
<p><img src="https://s2.loli.net/2024/12/23/mU29uXvd7pQyJjW.png" alt=""></p>
<p>多款经典游戏：该模拟器汇集了各种经典游戏，支持 <em>.nds、</em>.gba、*.gbc 和 *.gb 格式，让您在手机上充分体验这些怀旧经典。</p>
<p>完美的仿真体验：利用先进的模拟技术，模拟器完美再现每个游戏的玩法和视觉效果，让您在移动设备上享受过去的乐趣。</p>
<p>加速功能，无间断游戏：独特的加速功能让您可以提高游戏速度，快进进度，轻松跳过游戏对话作弊支持：您可以导入并使用 <em>.nds、</em>.gba、*.gbc 和 *.gb 格式的作弊代码，增强您的游戏体验，增加乐趣和灵活性。</p>
<p>游戏列表：清晰直观的游戏列表界面，让您一目了然地查看所有导入的游戏封面和标题，快速选择游戏开始游玩。</p>
<p>存档功能：随时随地保存您的游戏进度，无需担心意外中断。您可以方便地暂停和恢复游戏。</p>
<p>无论您是经典游戏忠实粉丝，还是对游戏历史感兴趣，这款模拟器都将为您提供无与伦比的游戏体验</p>
<h2>六、Retro Boy</h2>
<p><a href="https://apps.apple.com/us/app/retro-boy-nes-fc-emulator/id6499255556">https://apps.apple.com/us/app/retro-boy-nes-fc-emulator/id6499255556</a></p>
<p><img src="https://s2.loli.net/2024/12/23/CJWSEK63uIkcqnO.png" alt=""></p>
<p><strong>重温魔力</strong> — 深入Retro Boy的经典游戏世界体验永恒的游戏乐趣，为新一代玩家设计的简单而深刻的复古游戏体验。</p>
<p><strong>为怀旧而设计</strong> — 我们的模拟器经过精心打造，以提供真实的游戏体验。凭借尖端的仿真技术，每个像素和音符都得到了极致的还原。</p>
<p><strong>简约至上</strong> — 我们简化了用户界面，使其与游戏本身一样观。只需轻点几下，轻松浏览、加载并游玩您喜经典游戏。</p>
<p><strong>为舒适而定制</strong> — 通过可自定义的控制设置，个性化您的游戏体验。按照自己的节奏，随心所欲地游戏。</p>
<p><strong>不断扩展的支持</strong> — 我们不断增加游戏库，确保经典游戏爱好者总有新鲜刺激的内容可供探索。</p>
<p><strong>Retro Boy</strong> — 这不仅仅是个模拟器；它是一次时光之旅，是连接过去与现在的冒险。立即下载并开始您的经典游戏之旅。</p>
<h2>七、Game Emulator - RetroHub</h2>
<p><a href="https://apps.apple.com/us/app/game-emulator-retrohub/id6499185185?platform=iphone">https://apps.apple.com/us/app/game-emulator-retrohub/id6499185185?platform=iphone</a></p>
<p><img src="https://s2.loli.net/2024/12/23/HoN8GxWyCbEDhwe.png" alt=""></p>
<p>支持多种格式：现支持*.、<em>.gb、</em>.gbc、<em>.nds、</em>.nes、*.smc游戏格式。借助经过精心优化的模拟器引擎，它为你带来极致的游戏乐趣。</p>
<p>支持竖屏和横屏方向：你可以轻松控制游戏角色，在竖屏和横屏方向上享受更流畅的游戏体验。</p>
<p>美的按钮功能和操作：我们忠实地重现了经典游戏机的操作，让你轻松上手。我们也支持加速功能，让你能够自主控制游戏进度，跳过游戏对话，节省时间。</p>
<p>游戏兼容性：兼容各个时代的游戏，让你尽情享受不同年代的经典作品。丰富多样的选择扩展了你的游戏选项。</p>
<p>简单友好的界面：我们的界面设计简洁且用户友好，直观的操作让你轻浏览游戏列表，快速启动你选择的。</p>
<p>无论你想重温童年记忆，还是探索过去的经典作品，这应用都是你的完美选择。现在就你的怀旧之旅吧！</p>
<h2>手柄推荐</h2>
<p>考虑到系统兼容性问题，只推荐使用八位堂手柄</p>
<p>八位堂官网：<a href="https://www.8bitdo.cn">https://www.8bitdo.cn</a></p>
<p>再考虑到全平台使用则推荐八位堂 Pro 2 蓝牙手柄（Pro 1也不错！）</p>
<p><img src="https://s2.loli.net/2024/12/23/6wxT4JDgjq5atyr.png" alt=""></p>
<p>预算够的可以买新，不够可以到闲鱼买个二手的</p>
<p>这样，你就能通过使用iphone完整的体验复古掌机的乐趣了</p>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>探索发现</category>
    </item>
    <item>
      <title>SmartBrief-一款基于AI的智能工作报告生成器</title>
      <link>https://noisevip.cn/article/smartbrief-ai</link>
      <guid isPermaLink="true">https://noisevip.cn/article/smartbrief-ai</guid>
      <pubDate>Sat, 14 Dec 2024 02:00:00 GMT</pubDate>
      <description><![CDATA[介绍

SmartBrief 是一款基于 AI 的智能工作报告生成桌面工具，可以自动分析项目代码提交记录和任务数据，快速生成日报、周报和月报。

GitHub:https://github.com/Estelle925/SmartBrief

### ✨ 主要特性



- 🤖 **AI 智能分析]]></description>
      <content:encoded><![CDATA[<p>介绍</p>
<p>SmartBrief 是一款基于 AI 的智能工作报告生成桌面工具，可以自动分析项目代码提交记录和任务数据，快速生成日报、周报和月报。</p>
<p>GitHub:<a href="https://github.com/Estelle925/SmartBrief">https://github.com/Estelle925/SmartBrief</a></p>
<h3>✨ 主要特性</h3>
<ul>
<li>🤖 <strong>AI 智能分析</strong> - 支持多种大语言模型，智能分析工作内容</li>
<li>📊 <strong>Git 提交分析</strong> - 自动提取和分析 Git 提交记录</li>
<li>📝 <strong>任务追踪</strong> - 可视化任务管理和进度跟踪</li>
<li>🎨 <strong>自定义模板</strong> - 灵活配置报告模板和分析维度</li>
<li>💾 <strong>本地数据存储</strong> - 所有数据本地存储，安全可靠</li>
<li>🌈 <strong>界面美观</strong> - 现代化深色主题 UI 设计</li>
</ul>
<h3>使用步骤</h3>
<p>1️⃣ <strong>填写大模型API 信息</strong> </p>
<p><img src="https://s2.loli.net/2024/12/13/e5odRAaNciWmljv.png" alt="255V"></p>
<p>2️⃣ <strong>导入任务数据</strong></p>
<ul>
<li>导入或填写任务数据信息</li>
</ul>
<p><img src="https://s2.loli.net/2024/12/13/WOoi1be2KNf9RDJ.png" alt="img"></p>
<p>3️⃣ <strong>配置模板</strong></p>
<ul>
<li>导入本地Git项目</li>
<li>选择报告模板</li>
<li>选择时间范围</li>
<li>自定义关键词</li>
</ul>
<p><img src="https://s2.loli.net/2024/12/13/WI7FMeCUuHAGcaP.png" alt="img"></p>
<p>4️⃣ <strong>一键生成</strong></p>
<ul>
<li>AI智能分析</li>
<li>实时预览</li>
</ul>
<p><img src="https://s2.loli.net/2024/12/13/rCVYB9gSN8taE6Z.png" alt="img"><img src="https://s2.loli.net/2024/12/13/boralOYuT1XBdxh.png" alt="img"><img src="https://s2.loli.net/2024/12/13/a4mZJXibfsTHez3.png" alt="img"></p>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>探索发现</category>
    </item>
    <item>
      <title>NoteGen-一个跨平台AI笔记APP</title>
      <link>https://noisevip.cn/article/notegen-ai-app</link>
      <guid isPermaLink="true">https://noisevip.cn/article/notegen-ai-app</guid>
      <pubDate>Sat, 14 Dec 2024 02:00:00 GMT</pubDate>
      <description><![CDATA[![](https://s2.loli.net/2024/12/14/XqthrxdKUMWjHI1.png)

NoteGen 是一个跨平台的笔记 APP，目前支持 Mac、Windows、Linux

![1734176504117](https://s2.loli.net/2024/12/14]]></description>
      <content:encoded><![CDATA[<p><img src="https://s2.loli.net/2024/12/14/XqthrxdKUMWjHI1.png" alt=""></p>
<p>NoteGen 是一个跨平台的笔记 APP，目前支持 Mac、Windows、Linux</p>
<p><img src="https://s2.loli.net/2024/12/14/HZxWC41tdFQjva7.png" alt="1734176504117"></p>
<p>开源地址：<a href="https://github.com/codexu/note-gen">https://github.com/codexu/note-gen</a></p>
<p>软件安装完毕后，请先在设置页面配置 API Key 后即可正常使用。</p>
<p><img src="https://s2.loli.net/2024/12/14/QSmIdNDCLqK7WjM.png" alt="1734176225346"></p>
<blockquote>
<p>Mac 用户需要配置屏幕录制权限，才可以使用截图记录功能。</p>
</blockquote>
<p>同步和图床功能（可选），需要创建 Github 仓库，并配置好密钥，即可使用。</p>
<h2>特征</h2>
<p>在如今信息爆炸的时代，高效地记录和整理知识已成为许多用户的迫切需求。NoteGen 是一款创新性的笔记软件，能够大幅提升用户的记录与整理体验。无论是快速记忆灵感，还是系统化汇总信息，NoteGen 都能为用户提供灵活又高效的解决方案，让知识整理变得更加轻松、便捷。</p>
<p><img src="https://s2.loli.net/2024/12/14/iJCsTEnVbxUFrKc.png" alt="1734176763806"></p>
<h3>工作流</h3>
<p><img src="https://s2.loli.net/2024/12/14/kNL3cj1buYEwmTV.png" alt="1734176897797"></p>
<h3>记录</h3>
<p>支持截图、插图和文本的多种记录方式，用户可以根据不同场景灵活选择最适合的记录形式。借助 ChatGPT 的强大功能，您无需担心记录的顺序和完整性，轻松捕捉灵感与信息，提升记录效率。</p>
<p>以下介绍三种不同的记录方式及对应的场景：</p>
<ul>
<li><strong>截图记录</strong>是 NoteGen 的核心功能。通过截图，用户可以快速捕捉和记录碎片化知识，尤其是在遇到无法进行文本复制的情况下。其原理是通过 OCR 识别图片中的文字，再使用 ChatGPT 进行总结。</li>
<li><strong>文本记录</strong>，可以确保内容的准确性，但是需要将文本复制至软件中，稍微增加了操作的复杂度。</li>
<li><strong>插图记录</strong>，可以在笔记生成时，自动插入到合适的位置。</li>
</ul>
<p>为了区分不同的知识记录，支持了标签功能。用户可以创建的标签，以便更好地归类和区分不同的记录场景。在文章生成时，这些标签及其对应的记录将会被删除，从而保持内容的整洁和专注。</p>
<h3>生成</h3>
<p>NoteGen 自动将所有记录整理成一篇可读性高的笔记，有效节省了手动整理所需的时间。</p>
<ul>
<li>支持输入个性化的需求。</li>
<li>支持多种语言。</li>
<li>支持控制笔记长度。</li>
<li>笔记生成记录管理。</li>
</ul>
<h3>写作</h3>
<p>支持文件管理器和 Markdown 编辑器，可以实现文章的管理、编辑和预览。</p>
<p>在编辑器中你同样可以享受到 ChatGPT 带来的便利，他支持了两种模式：</p>
<ul>
<li><strong>AI</strong>，你可以在编辑器中编写需求，选中内容，随即将内容替换为 ChatGPT 提供的回复，适合在没有思路时使用。</li>
<li><strong>优化</strong>，将一段内容选中，ChatGPT 将优化你这段文字，适合无法表答清楚语义时使用。</li>
</ul>
<h3>图床</h3>
<p>图床基于 Github 仓库实现，需要配置密钥，以支持图床的功能。</p>
<h3>全局搜索</h3>
<p>用户可以通过文字模糊查询，快速查找到相应的记录或者文章，支持跳转。</p>
<h2>待实现</h2>
<ul>
<li><p>绘图</p>
</li>
<li><p>回收站</p>
</li>
<li><p>平台管理</p>
</li>
</ul>
<h2>体验</h2>
<p>作为一个刚开发一个月的APP，基本日常使用是已实现的，加上有AI的加持，能快速整理同步笔记也很难得，不过目前app缺点也很明显，除了待实现的需要在之后上线满足笔记程序最低的回收处理外，还有很多Bug,如一些设置不正确时会崩溃，AI不支持第三方的中转API，图标也需要更换下，期待之后更新版本更强大吧</p>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>探索发现</category>
    </item>
    <item>
      <title>使用Python一键将视频转换为优质小红书笔记，自动优化内容和配图</title>
      <link>https://noisevip.cn/article/python-5</link>
      <guid isPermaLink="true">https://noisevip.cn/article/python-5</guid>
      <pubDate>Sat, 14 Dec 2024 02:00:00 GMT</pubDate>
      <description><![CDATA[![](https://s2.loli.net/2024/12/14/UAtox9gzwN8eCOH.png)

这是一个使用Python加AI来提取优化小红书的脚步，代码是开源的，感谢作者玄清

Github：https://github.com/whotto/Video_note_generat]]></description>
      <content:encoded><![CDATA[<p><img src="https://s2.loli.net/2024/12/14/UAtox9gzwN8eCOH.png" alt=""></p>
<p>这是一个使用Python加AI来提取优化小红书的脚步，代码是开源的，感谢作者玄清</p>
<p>Github：<a href="https://github.com/whotto/Video_note_generator">https://github.com/whotto/Video_note_generator</a></p>
<h2>应用场景</h2>
<ul>
<li><strong>内容创作者</strong>：快速将视频/直播内容转换为文章</li>
<li><strong>知识管理者</strong>：自动整理视频笔记和学习要点</li>
<li><strong>社交媒体运营</strong>：批量生成优质小红书笔记</li>
</ul>
<h2>使用方式</h2>
<p>支持三种使用方式：</p>
<ol>
<li><strong>处理单个视频</strong>：</li>
</ol>
<pre><code>python video_note_generator.py https://example.com/video
</code></pre>
<ol>
<li><strong>批量处理 URL 文件</strong>：</li>
</ol>
<pre><code># urls.txt 文件，每行一个视频链接
python video_note_generator.py urls.txt
</code></pre>
<ol>
<li><strong>处理 Markdown 文件</strong>：</li>
</ol>
<pre><code># 支持 Markdown 链接和直接 URL
python video_note_generator.py notes.md
</code></pre>
<h2>🛠️ 使用工具</h2>
<ul>
<li><a href="https://ffmpeg.org/">FFmpeg</a> - 音视频转换</li>
<li><a href="https://github.com/openai/whisper">Whisper</a> - 语音转文字</li>
<li><a href="https://openrouter.ai/">OpenRouter</a> - AI 内容优化</li>
<li><a href="https://unsplash.com/">Unsplash</a> - 高质量图片</li>
</ul>
<h2>📦 快速开始</h2>
<h3>1. 安装依赖</h3>
<pre><code># 安装 FFmpeg
# Mac: brew install ffmpeg
# Windows: 从 ffmpeg.org 下载并添加到环境变量
# Linux: apt install ffmpeg

# 安装 Python 依赖
pip install -r requirements.txt

# 配置环境变量
cp .env.example .env
</code></pre>
<p><img src="https://s2.loli.net/2024/12/14/wdvmMuVrXAkZQ9p.png" alt=""></p>
<h3>2. 配置 API 密钥</h3>
<p>编辑 <code>.env</code> 文件，填入必要的 API 密钥：</p>
<pre><code># OpenRouter API（必需）
OPENROUTER_API_KEY=your-api-key-here

# Unsplash API（必需）
UNSPLASH_ACCESS_KEY=your-unsplash-access-key-here
UNSPLASH_SECRET_KEY=your-unsplash-secret-key-here
</code></pre>
<p>OpenRouter API查看：<a href="https://openrouter.ai/settings/keys">https://openrouter.ai/settings/keys</a></p>
<p>Unsplash API可在开发者APP中查看：<a href="https://unsplash.com/oauth/app">https://unsplash.com/oauth/app</a></p>
<h3>3. 开始使用</h3>
<ol>
<li>创建 <code>urls.txt</code> 文件，每行一个视频链接</li>
<li>运行环境检查：</li>
</ol>
<pre><code>python check_environment.py
</code></pre>
<p>3、运行生成器（按自己喜欢的方式）：</p>
<pre><code>python video_note_generator.py test.md
</code></pre>
<p>首次运行如果你没有Whisper模型的话会自动下载</p>
<p><img src="https://s2.loli.net/2024/12/14/c9GxjJviPTl162L.png" alt=""></p>
<h2>📄 输出文件</h2>
<p>每个视频会生成三个文件：</p>
<ol>
<li><strong>原始笔记</strong> (<code>YYYYMMDD_HHMMSS.md</code>)：<ul>
<li>完整的视频转录文本</li>
<li>保留所有细节内容</li>
</ul>
</li>
<li><strong>整理版笔记</strong> (<code>YYYYMMDD_HHMMSS_organized.md</code>)：<ul>
<li>AI优化后的结构化内容</li>
<li>重点内容突出</li>
<li>段落优化</li>
</ul>
</li>
<li><strong>小红书版本</strong> (<code>YYYYMMDD_HHMMSS_xiaohongshu.md</code>)：<ul>
<li>优化的爆款标题</li>
<li>600-800字精华内容</li>
<li>2-3张相关配图</li>
<li>优化的标签系统</li>
<li>互动引导设计</li>
</ul>
</li>
</ol>
<h2>效果</h2>
<p><img src="https://s2.loli.net/2024/12/14/z7ZcQGCtEyi29JW.png" alt="1734181770842"></p>
<p><img src="https://s2.loli.net/2024/12/14/iMXnEUtpbGghrRS.png" alt="1734181821170"></p>
<h2>⚙️ 配置说明</h2>
<p>在 <code>.env</code> 文件中可以调整以下参数：</p>
<pre><code># 内容生成配置
MAX_TOKENS=2000          # 生成小红书内容的最大长度
CONTENT_CHUNK_SIZE=2000  # 长文本分块大小（字符数）
TEMPERATURE=0.7          # AI 创造性程度 (0.0-1.0)

# 代理设置（可选）
# HTTP_PROXY=http://127.0.0.1:7890
# HTTPS_PROXY=http://127.0.0.1:7890
</code></pre>
<h2>关于代码优化</h2>
<p><img src="https://s2.loli.net/2024/12/14/xH12pBMj94bEGCg.png" alt=""></p>
<p>实际上你能在代码中找到多个备用方案包括下载等，作者的初衷是好的，但带来的结果就是会多次报错并尝试.</p>
<p>所以，个人建议将下载配置改为API下载，特别是抖音平台，如果调用API也不需要cookie的验证，如使用<a href="https://api.pearktrue.cn/info?id=254">https://api.pearktrue.cn/info?id=254</a></p>
<p>此外，模型转音频速度跟你的配置有关，但Whisper模型本地直接py调用是会慢的，可以选择云端部署后调用api来处理或选择速度快的模型</p>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>探索发现</category>
    </item>
    <item>
      <title>AltTaber-win平台轻量级窗口/应用切换器</title>
      <link>https://noisevip.cn/article/alttaber-win</link>
      <guid isPermaLink="true">https://noisevip.cn/article/alttaber-win</guid>
      <pubDate>Tue, 10 Dec 2024 02:00:00 GMT</pubDate>
      <description><![CDATA[这是一款 MacOS 风格的 窗口/应用切换器，专为💻️开发

github：https://github.com/MrBeanCpp/AltTaber

下载：https://github.com/MrBeanCpp/AltTaber/releases

## 主要功能



### 1. :]]></description>
      <content:encoded><![CDATA[<p>这是一款 MacOS 风格的 窗口/应用切换器，专为💻️开发</p>
<p>github：<a href="https://github.com/MrBeanCpp/AltTaber">https://github.com/MrBeanCpp/AltTaber</a></p>
<p>下载：<a href="https://github.com/MrBeanCpp/AltTaber/releases">https://github.com/MrBeanCpp/AltTaber/releases</a></p>
<h2>主要功能</h2>
<h3>1. : 在应用程序📦间切换<code>Alt+Tab</code></h3>
<ul>
<li>按住反向切换<code>Shift</code></li>
<li>松开后，切换到指定应用<code>Alt</code></li>
<li><strong>最近使用</strong>的应用优先排在左侧</li>
</ul>
<p><img src="https://s2.loli.net/2024/12/06/xpvOrtDVRG6ZALa.gif" alt="切换应用程序"></p>
<h3>2. : 在同一应用的不同<strong>窗口</strong>🪟间轮换`Alt+``</h3>
<ul>
<li>按住反向切换<code>Shift</code></li>
<li><strong>最近活动</strong>的窗口优先访问</li>
<li>可用于隐藏窗口（若可见）<code>AltTaber</code></li>
</ul>
<p><img src="https://github.com/MrBeanCpp/AltTaber/raw/master/img/Alt_%60.gif" alt="切换窗口"></p>
<h3>3. 呼出窗口切换器后，可用切换指定应用的窗口<code>Alt+Tab``🖱️鼠标滚轮</code></h3>
<ul>
<li>向上滚轮：切换到上一个窗口（不改变焦点）</li>
<li>向下滚轮：<strong>最小化</strong>上一个窗口</li>
</ul>
<h4>⌨️支持键盘操作</h4>
<ul>
<li><p>方向键:</p>
<ul>
<li>⬅️ ➡️: 切换当前选中的应用</li>
<li>⬆️ ⬇️: 映射到滚轮上下，切换/最小化窗口</li>
</ul>
</li>
<li><p>支持风格的快捷键: </p>
<pre><code>Vim
</code></pre>
<ul>
<li><code>h</code> <code>l</code>: 切换当前选中的应用</li>
<li><code>j</code> <code>k</code>: 切换/最小化窗口</li>
</ul>
<p><img src="https://s2.loli.net/2024/12/06/W2HjDLEqkf1wBpI.gif" alt="轮子"></p>
<h3>4. 在的应用图标上使用切换窗口. 🚧🚧<code>任务栏``🖱️鼠标滚轮``[Beta]</code></h3>
<p>谨慎</p>
<p>实验性功能，仍在测试中，可能会遇到一些问题</p>
<p>例如：对某些应用程序失效</p>
<ul>
<li>向上滚轮：切换到上一个窗口</li>
<li>向下滚轮：<strong>最小化</strong>上一个窗口</li>
</ul>
<p><img src="https://s2.loli.net/2024/12/06/pPxN6tCksXGTuK3.gif" alt="任务栏轮"></p>
<h2>🌟更多特色</h2>
<ul>
<li><p>窗口背景<strong>毛玻璃</strong>特效</p>
<ul>
<li><img src="https://s2.loli.net/2024/12/06/hmzQ8kpojAYUyq2.png" alt="bg blur （基础模糊）">]</li>
</ul>
</li>
<li><p>适配的窗口圆角效果<code>Win11</code></p>
</li>
<li><p>在应用图标右上角显示<strong>窗口数量</strong>（Badge）</p>
<ul>
<li><img src="https://s2.loli.net/2024/12/06/nmEvdDqxNCoYWUp.png" alt="应用徽章"></li>
</ul>
</li>
<li><p>在🐧图标右下角显示当前聊天好友</p>
<pre><code>QQ
</code></pre>
<pre><code>头像
</code></pre>
</li>
<li><p>支持在更高权限窗口上使用切换<code>Alt+Tab</code></p>
</li>
</ul>
</li>
</ul>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>探索发现</category>
    </item>
    <item>
      <title>Wave-一个强大的跨平台开源终端</title>
      <link>https://noisevip.cn/article/wave</link>
      <guid isPermaLink="true">https://noisevip.cn/article/wave</guid>
      <pubDate>Tue, 10 Dec 2024 02:00:00 GMT</pubDate>
      <description><![CDATA[![强大的跨平台开源终端](https://s2.loli.net/2024/12/10/bMwICYRBtAJ89nu.png)

Wave 是一个开源终端，它增加了启动图形小部件的功能，可以直接与 CLI 进行控制和集成。

官网：https://www.waveterm.dev

开源：htt]]></description>
      <content:encoded><![CDATA[<p><img src="https://s2.loli.net/2024/12/10/bMwICYRBtAJ89nu.png" alt="强大的跨平台开源终端"></p>
<p>Wave 是一个开源终端，它增加了启动图形小部件的功能，可以直接与 CLI 进行控制和集成。</p>
<p>官网：<a href="https://www.waveterm.dev">https://www.waveterm.dev</a></p>
<p>开源：<a href="https://github.com/wavetermdev/waveterm">https://github.com/wavetermdev/waveterm</a></p>
<p><img src="https://s2.loli.net/2024/12/06/SXvIVD38yo5fGCK.png" alt=""></p>
<h2>特征</h2>
<p>文件预览</p>
<p>预览小部件可让您内嵌查看 Markdown、图像、视频、CSV 等</p>
<p>数据可视化</p>
<p>创建系统统计信息图表或直接从 CLI 程序传输的自定义数据</p>
<p>集成 AI</p>
<p>内联 AI 聊天 Windows 连接到任何 LLM（本地或远程）</p>
<p>远程文件编辑</p>
<p>使用内置的类似 VSCode 的编辑器来编辑远程文件（甚至可以配置为 shell 的默认编辑器）</p>
<p>内联 Web 浏览器</p>
<p>浏览、控制和编写我们的内联 Web 浏览器的脚本，以访问 Github、StackOverflow、仪表板或您自己的应用程序。</p>
<p>Wave 不仅仅是另一个终端模拟器;这是对航站楼建造方式的重新思考。CLI 和 Web 之间一直存在脱节太久了。如果您想要快速、键盘可访问、易于编写的应用程序，则可以使用 CLI，但如果您想要图形界面、本机小部件、复制/粘贴、滚动、可变字体大小，那么您就必须求助于 Web。Wave 的目标是弥合这一差距。</p>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>探索发现</category>
    </item>
    <item>
      <title>Mollama-适用于苹果全设备的本地离线运行的智能助理</title>
      <link>https://noisevip.cn/article/mollama</link>
      <guid isPermaLink="true">https://noisevip.cn/article/mollama</guid>
      <pubDate>Tue, 10 Dec 2024 01:06:25 GMT</pubDate>
      <description><![CDATA[Mollama是一款使用完全离线化模型适用于苹果全端设备（iphone、ipad、mac）的AI程序，它支持和问题解决能力，无需将数据传输到外部服务器。它对中文模型非常友好，在程序内提供一键下载模型到本地的服务（需要科学外网才能稳定下载） 官网： https://mollama.com/zh/ Appstore： https://apps.apple.com/app/id6736948278 特征 隐私与安全至上 所有处理都在您的设备本地进行，零数据传输，无云端依赖，确保您完全掌控信息安全。 先进人工智能技术支持 结合 Apple 神经网络引擎和开源模型，实现卓越性能和灵活应用。 真正的离线功能 初始设置完成后，无需网络连接即可享受流畅实时的交互体验。 多模型通用性 通过定制 AI 模型，精确适应您的需求，支持广泛的任务类型。 上下文理解与一致性 理解并记住对话历史，每次都能提供自然连贯的回应。 为专业人士和创作者设计 为各类专业人士提供创作助力，全方位提升工作效率。 手机端使用示例 软件自带一个qwen2.5-coder-0.5b模型 点击设置后你能找到更多模型的下载]]></description>
      <content:encoded><![CDATA[<section id="wenyan" class="preview"><img src="https://s2.loli.net/2024/12/10/YB1lP4ng97e6ubd.png" alt="本地离线运行智能助理" />

Mollama是一款使用完全离线化模型适用于苹果全端设备（iphone、ipad、mac）的AI程序，它支持和问题解决能力，无需将数据传输到外部服务器。它对中文模型非常友好，在程序内提供一键下载模型到本地的服务（需要科学外网才能稳定下载）

官网：<a href="https://mollama.com/zh/">https://mollama.com/zh/</a>

Appstore：<a href="https://apps.apple.com/app/id6736948278">https://apps.apple.com/app/id6736948278</a>

<img src="https://s2.loli.net/2024/12/10/Sm6pCLVgsfc4TOK.png" alt="" />
<h2>特征</h2>
<img src="https://s2.loli.net/2024/12/10/DjxGicpR5yIZshq.png" alt="1733813843311" />
<h2>隐私与安全至上</h2>
所有处理都在您的设备本地进行，零数据传输，无云端依赖，确保您完全掌控信息安全。
<h2>先进人工智能技术支持</h2>
结合 Apple 神经网络引擎和开源模型，实现卓越性能和灵活应用。
<h2>真正的离线功能</h2>
初始设置完成后，无需网络连接即可享受流畅实时的交互体验。
<h2>多模型通用性</h2>
通过定制 AI 模型，精确适应您的需求，支持广泛的任务类型。
<h2>上下文理解与一致性</h2>
理解并记住对话历史，每次都能提供自然连贯的回应。
<h2>为专业人士和创作者设计</h2>
为各类专业人士提供创作助力，全方位提升工作效率。
<h2>手机端使用示例</h2>
软件自带一个qwen2.5-coder-0.5b模型

<img src="https://s2.loli.net/2024/12/10/BMInltjGvKQ3TYZ.jpg" alt="IMG_4659" />

点击设置后你能找到更多模型的下载

<img src="https://s2.loli.net/2024/12/10/LzptwCv19HONRnD.jpg" alt="IMG_4658" />

</section>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>AIGC</category>
    </item>
    <item>
      <title>使用完全免费的模型创建AI绘画网站</title>
      <link>https://noisevip.cn/article/ai-17</link>
      <guid isPermaLink="true">https://noisevip.cn/article/ai-17</guid>
      <pubDate>Tue, 03 Dec 2024 02:00:00 GMT</pubDate>
      <description><![CDATA[介绍

目前已有太多太多AI绘画的免费模型，而站点服务也有很多，下面以三个开源的项目为例来创建自己的免费AI绘画网站

![](https://s2.loli.net/2024/12/03/zomDsdkRLNS6Jn7.png)

## 一、Painter Leaf

项目地址：https://g]]></description>
      <content:encoded><![CDATA[<p>介绍</p>
<p>目前已有太多太多AI绘画的免费模型，而站点服务也有很多，下面以三个开源的项目为例来创建自己的免费AI绘画网站</p>
<p><img src="https://s2.loli.net/2024/12/03/zomDsdkRLNS6Jn7.png" alt=""></p>
<h2>一、Painter Leaf</h2>
<p>项目地址：<a href="https://github.com/LeafYeeXYZ/PainterLeaf">https://github.com/LeafYeeXYZ/PainterLeaf</a></p>
<p>演示：<a href="https://painter.leafyee.xyz/">https://painter.leafyee.xyz/</a></p>
<p>基于<strong>免费</strong>和 API 的映像创建器。支持文生图， 图生文， 多模型， 中英双语提示词，功能包括：<code>Cloudflare AI``HuggingFace</code></p>
<ul>
<li>Prompt-to-image：支持多种模型（例如 、<code>Flux.1``StableDiffusion 3.5</code>)</li>
<li>Image-to-Prompt：将本地图片转换为提示</li>
<li>AI 翻译：在任何模型中使用中文提示</li>
<li>商店：将您的作品保存到<code>IndexedDB</code></li>
</ul>
<p><img src="https://s2.loli.net/2024/12/03/rsONJLoR6FlDdYW.png" alt="1733220889567"></p>
<h2>1 部署</h2>
<h3>1.1 配置环境变量</h3>
<p>您可以使用 or 模式。<code>Fullstack``Client-Server</code></p>
<h4>1.1.1 全栈式</h4>
<p>在 file 或 中设置以下环境变量。<code>.env``Vercel</code></p>
<table>
<thead>
<tr>
<th>钥匙</th>
<th>价值</th>
<th>必填</th>
</tr>
</thead>
<tbody><tr>
<td><code>CF_USER_ID</code></td>
<td><code>Cloudflare</code>用户 ID</td>
<td>✅</td>
</tr>
<tr>
<td><code>CF_AI_API_KEY</code></td>
<td><code>Cloudflare AI</code>API 密钥</td>
<td>✅</td>
</tr>
<tr>
<td><code>HF_API_KEY</code></td>
<td><code>HuggingFace</code>API 密钥</td>
<td></td>
</tr>
</tbody></table>
<blockquote>
<p>免费计划的每个请求限制为 10 秒，这可能会导致错误（尤其是在使用模型时）。您可以订阅付费计划、在本地运行服务器或使用模式。<code>Vercel``504``HuggingFace``Vercel``Client-Server</code></p>
</blockquote>
<h4>1.1.2 客户端-服务器</h4>
<p>将服务器部署到 （请参阅<a href="https://github.com/LeafYeeXYZ/MyAPIs">此项目</a>） 并在 file 或 中设置以下环境变量。<code>Cloudflare Workers``.env``Vercel</code></p>
<table>
<thead>
<tr>
<th>钥匙</th>
<th>价值</th>
<th>必填</th>
</tr>
</thead>
<tbody><tr>
<td><code>NEXT_PUBLIC_WORKERS_SERVER</code></td>
<td><code>Server</code>URL（例如<code>https://api.xxx.workers.dev</code>)</td>
<td>✅</td>
</tr>
</tbody></table>
<blockquote>
<p>设置完成后，所有其他环境变量都将被忽略。<code>NEXT_PUBLIC_WORKERS_SERVER</code></p>
</blockquote>
<h3>1.2 部署到 Vercel</h3>
<p>将此项目部署到 （记得设置环境变量）。<code>Vercel</code></p>
<h3>1.3 常见问题</h3>
<ul>
<li><code>429</code>错误：您可能已超出 api 请求限制。请稍等片刻，减少请求频率，并考虑订阅付费计划。<code>HuggingFace</code></li>
<li><code>504</code>error：请求已超过时间限制。有关解决方法，请参见<a href="https://github.com/LeafYeeXYZ/PainterLeaf#vervel-limit-resolution">上文</a>。<code>Vercel</code></li>
</ul>
<h2>2 开发</h2>
<h3>2.1 克隆仓库</h3>
<pre><code>git clone https://github.com/LeafYeeXYZ/PainterLeaf.git
cd PainterLeaf
</code></pre>
<h3>2.2 安装依赖</h3>
<pre><code>bun install # or use other package manager you like
</code></pre>
<h3>2.3 本地发展</h3>
<pre><code>bun run dev
</code></pre>
<h3>2.4 构建</h3>
<pre><code>bun run build
</code></pre>
<h2>二、Node.js 的 AI 图像生成 Web 应用</h2>
<p>一个基于 Node.js 的 AI 图像生成 Web 应用，使用 Silicon Flow API 生成高质量图像。该应用提供了直观的用户界面，支持多种 AI 模型和丰富的图像生成参数控制</p>
<p>项目地址：<a href="https://github.com/D6397/drawing">https://github.com/D6397/drawing</a></p>
<p><img src="https://s2.loli.net/2024/12/03/JxlnjN2rTKDFRHM.png" alt="主界面"></p>
<h2>功能特点</h2>
<ul>
<li>支持多种 AI 模型选择<ul>
<li>FLUX.1-schnell (Pro)</li>
<li>FLUX.1-schnell (Black Forest)</li>
<li>FLUX.1-dev (Black Forest)</li>
<li>Stable Diffusion 3.5 系列</li>
<li>其他 Stable Diffusion 模型</li>
</ul>
</li>
<li>灵活的图像尺寸选项<ul>
<li>支持 1:1, 1:2, 3:2, 3:4, 16:9, 9:16 等多种比例</li>
<li>最高支持 1024x1024 分辨率</li>
</ul>
</li>
<li>丰富的生成参数控制<ul>
<li>批量生成数量（1-4张）</li>
<li>随机种子控制</li>
<li>推理步数调节（1-50步）</li>
<li>引导系数调整（1-20）</li>
</ul>
</li>
<li>高级功能<ul>
<li>支持反向提示词</li>
<li>提示词增强功能</li>
<li>快捷标签选择</li>
</ul>
</li>
<li>用户友好的界面<ul>
<li>响应式设计，支持移动端</li>
<li>深色模式支持</li>
<li>实时预览</li>
<li>加载动画效果</li>
</ul>
</li>
</ul>
<h2>安装说明</h2>
<ol>
<li>克隆项目</li>
</ol>
<pre><code>git clone https://github.com/D6397/drawing.git
cd ai-image-generator
</code></pre>
<ol>
<li>安装依赖</li>
</ol>
<pre><code>npm install express cors node-fetch dotenv
</code></pre>
<ol>
<li>配置环境变量<ul>
<li>在项目根目录创建 <code>.env</code> 文件</li>
<li>在 <a href="https://cloud.siliconflow.cn/i/1hSUWxvf">Silicon Flow Cloud</a> 获取 API Token</li>
<li>很多免费绘图模型 保护sd 3.5 flux1 都免费</li>
<li>添加以下配置：</li>
</ul>
</li>
</ol>
<pre><code>API_TOKEN=你的_SILICON_FLOW_API_TOKEN  # 从 Silicon Flow Cloud 获取
</code></pre>
<ol>
<li>启动服务器</li>
</ol>
<pre><code>node server.js
</code></pre>
<ol>
<li>访问应用<ul>
<li>打开浏览器访问 <code>http://localhost:3000</code></li>
<li>默认端口为 3000，如需修改可在 server.js 中更改</li>
</ul>
</li>
</ol>
<h2>快速使用</h2>
<ol>
<li>启动后，在浏览器中打开应用</li>
<li>从左侧面板选择 AI 模型</li>
<li>设置所需的图像尺寸和生成参数</li>
<li>在底部输入框中描述你想创建的图像</li>
<li>点击&quot;生成图像&quot;按钮</li>
<li>等待图像生成完成</li>
</ol>
<p>三、 <a href="https://nextjs.org/">Next.js</a> AI 图像生成器</p>
<p>使用 NextJS。稳定的扩散模型⚡✨ 免费且不限的图片！</p>
<p>项目地址：<a href="https://github.com/Xeven777/ai-img-nextsite">https://github.com/Xeven777/ai-img-nextsite</a></p>
<p>演示：<a href="https://img-gen7.netlify.app">https://img-gen7.netlify.app</a></p>
<p>项目支持Vercel 上部署</p>
<p><img src="https://s2.loli.net/2024/12/03/CsN2T6GqupgbnYc.png" alt="1733221242070"></p>
<p>本地开发</p>
<p>首先，运行开发服务器：</p>
<pre><code>npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
</code></pre>
<p>使用浏览器打开 <a href="http://localhost:3000/">http://localhost:3000</a> 以查看结果。</p>
<p>您可以通过修改 来开始编辑页面。页面会在您编辑文件时自动更新。<code>app/page.tsx</code></p>
<p>此项目使用 <a href="https://nextjs.org/docs/basic-features/font-optimization"><code>next/font</code></a> 自动优化和加载自定义 Google 字体 Inter</p>]]></content:encoded>
      <author>admin@example.com (Admin)</author>
      <category>探索发现</category>
    </item>
  </channel>
</rss>