尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
TaoToken 放在 Gemini Live API 前,语音 Token 怎么归集
1. 从 Gemini 3.8 Live 的语音会话拆出可归集的 Token 维度Google 把 Gemini 3.8 Live 与 Gemini 3.8 Live Extended Thinking 推到 Gemini Live API 和 Google AI Studio 后原生语音到语音、托管不开放权重语音智能体从演示阶段进入工程排障阶段。先把 TaoToken 放在 Gemini Live API 前到 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentgemini_live_intro 拿 TaoToken Key请求侧用 https://taotoken.net/api 作为 Base URL再给每一路语音会话打标签。这样做的不是“换个 URL”这么简单而是把输入音频、输出音频、文本 Token、推理 Token、打断重连都归到项目、场景、会话、轮次四个维度上。Gemini Live API 的语音链路口径和纯文本接口不同。纯文本请求通常只有一个 request_id用量回包里返回 prompt_token_count、candidates_token_count 就能对账。语音会话是一条长连接里面包含 setup、多轮 user turn、model turn、音频流分片、打断、重连、工具调用、转写结果、结束原因。你如果在每个业务服务里各放一个 Google Key最后只能看到“这个 Key 本月用了多少”看不到“哪个项目、哪个场景、哪路 voice_session_id、哪一轮 turn 消耗了多少音频 Token 和文本 Token”。所以本篇的复现产出很明确一张 Token 归集表、一组请求标签字段、一份语音会话明细。TaoToken 放在 Gemini Live API 前核心是先把模型调用出口统一再把标签随请求透传。语音流仍然由你的语音网关或编排器管理 WebSocket 生命周期但模型调用、Key 管理、用量观测先经过 TaoToken 的统一 Base URL。这样你不需要在客户端散落多个供应商 Key也不需要等月底账单才发现某个语音智能体场景 Token 失控。下面按可跟做顺序拆先拿 Key再固定 Base URL然后设计请求标签落语音会话明细做 Token 归集表最后把 Claude Code、Codex、CC Switch 三件套配置也一并写清。文中代码和 SQL 都由读者在本地或自己的分析库执行不连接生产库。2. 在 TaoToken 官网拿 Key把请求侧 Base URL 固定成 https://taotoken.net/api第一步不是改 Gemini Live API 的业务代码而是先到 TaoToken 官网完成 Key 的获取和命名。打开 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentgemini_live_key 进入控制台相关入口创建项目再创建 API Key。Key 只显示一次建议按“项目-环境-用途”命名例如voice-agent-prod-live、voice-agent-staging-live、local-debug-live。不要把同一个 Key 同时给生产语音、测试脚本和本地 Codex否则 Token 归集表再细也追不回责任边界。拿到 Key 后本地先写环境变量。Base URL 固定为https://taotoken.net/api注意 Base URL 本身不要加 UTM 参数UTM 只用于官网入口归因。Key 占位符统一用YOUR_API_KEY避免把真实 Key 提交到代码仓库。export TAOTOKEN_BASE_URLhttps://taotoken.net/api export TAOTOKEN_API_KEYYOUR_API_KEY # 可选给不同项目设置不同 profile export TAOTOKEN_PROJECTvoice-agent export TAOTOKEN_ENVstaging export TAOTOKEN_SCENEgemini-live-voice验证网络和 Key 是否被本地进程读到不要直接打印完整 Keytest -n $TAOTOKEN_API_KEY echo TAOTOKEN_API_KEY is set test $TAOTOKEN_BASE_URL https://taotoken.net/api echo Base URL is fixed curl -sS -o /dev/null -w %{http_code}\n \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ $TAOTOKEN_BASE_URL如果这里返回 401 或 403先查三件事Key 是否复制完整、请求头是否用了Authorization: Bearer YOUR_API_KEY、环境变量是否被当前 shell 或服务进程继承。如果返回 404优先查 Base URL 是否被写成https://taotoken.net/api/v1、https://taotoken.net/api/或重复拼接了路径。统一使用https://taotoken.net/api具体模型路径以 TaoToken 控制台和文档为准不要在业务代码里硬编码站外地址。在语音编排器里把模型调用出口抽成一个配置对象而不是散落在每个 turn 处理函数里。无论你是用 Python、Node.js 还是 Go 写语音网关都建议只保留一个出口配置import os TAOTOKEN_BASE_URL os.environ[TAOTOKEN_BASE_URL] TAOTOKEN_API_KEY os.environ[TAOTOKEN_API_KEY] DEFAULT_MODEL_ROUTE { provider: taotoken, base_url: TAOTOKEN_BASE_URL, api_key: TAOTOKEN_API_KEY, model: YOUR_GEMINI_LIVE_MODEL_NAME, tags: { project: os.environ.get(TAOTOKEN_PROJECT, voice-agent), env: os.environ.get(TAOTOKEN_ENV, dev), scene: os.environ.get(TAOTOKEN_SCENE, gemini-live-voice), }, }这里的关键不是代码多复杂而是所有语音会话最终都引用同一个 Base URL 和同一个 Key 管理入口。TaoToken 放在 Gemini Live API 前意味着你的语音网关在发起模型调用前已经知道这次请求属于哪个项目、哪个环境、哪个场景。后续 Token 归集才有可能按维度拆开。3. 请求标签字段设计让每一路语音 Token 都能落到项目与会话语音 Token 归集失败绝大多数不是模型不返回用量而是请求标签没有贯穿全链路。Gemini Live API 的一条语音会话里至少包含voice_session_id、turn_id、trace_id三个 ID。voice_session_id标识一路通话turn_id标识一轮对话trace_id标识一次跨 ASR、模型、TTS、业务回调的完整链路。没有这三个字段后面的 Token 归集表只能按月汇总不能按场景排障。建议在语音网关里固定以下请求标签字段并在转发到 TaoToken 时放入请求 metadata、header 或查询参数。不同客户端能力不同采用“同名标签、不同承载方式”的策略支持自定义 header 的用 header支持 metadata 的用 metadata只支持 query 的用 query。不要让同一个字段在不同服务里叫不同名字。标签字段含义示例是否必填project业务项目voice-agent必填env环境prod、staging、dev必填app应用或服务名live-orchestrator必填scene业务场景customer-support必填voice_session_id语音会话 IDvs_20250101_xxx必填turn_id轮次 IDturn_0007必填trace_id全链路追踪 IDtrace_xxx必填model_route模型路由名gemini-live-default建议sdk_version客户端版本live-gateway/1.3.0建议user_segment脱敏用户分群vip、trial可选channel接入渠道web、app、phone可选thinking_mode是否扩展思考standard、extended可选标签生成规则可以这样定voice_session_id在 WebSocket 建连成功后生成 UUID重连时复用原 ID但在明细里增加reconnect_count避免把一次会话拆成多次计费turn_id每收到一次用户音频结束事件后递增trace_id由入口网关生成贯穿到模型调用、工具调用、TTS 和日志。请求标签不能放手机号、身份证、完整地址等隐私数据只放可聚合、可排查的业务标识。在语音编排器里推荐统一构造一个 metadata 对象{ project: voice-agent, env: staging, app: live-orchestrator, scene: customer-support, voice_session_id: vs_20250101_0001, turn_id: turn_0007, trace_id: trace_7f3a9c, model_route: gemini-live-default, sdk_version: live-gateway/1.3.0, thinking_mode: extended }如果你的语音网关支持把该对象转成 header可以映射为X-TaoToken-Project: voice-agent X-TaoToken-Env: staging X-TaoToken-Scene: customer-support X-TaoToken-Voice-Session: vs_20250101_0001 X-TaoToken-Turn: turn_0007 X-TaoToken-Trace-Id: trace_7f3a9c X-TaoToken-Model-Route: gemini-live-default注意这些标签首先是你的归集约定不是让你绕过任何权限控制。它们的作用是让 TaoToken 请求侧和本地语音明细能对上。只要字段稳定后面聚合 SQL 就可以按project env scene model_route出 Token 归集表按voice_session_id turn_id出语音会话明细。4. 语音会话明细表turn、音频时长、token_in/token_out、延迟与标签Token 归集表是汇总视图语音会话明细是事实表。没有明细汇总表出现异常时无法下钻。建议在本地分析库或日志系统中建一张voice_turn_detail每轮对话写一行会话结束再写一行voice_session_summary。以下 SQL 只用于本地分析库不连接生产库。CREATE TABLE voice_turn_detail ( event_time TIMESTAMP, project VARCHAR(64), env VARCHAR(32), app VARCHAR(64), scene VARCHAR(64), voice_session_id VARCHAR(128), turn_id VARCHAR(64), trace_id VARCHAR(128), model_route VARCHAR(128), model_name VARCHAR(128), thinking_mode VARCHAR(32), input_audio_ms BIGINT, output_audio_ms BIGINT, input_text_tokens BIGINT, output_text_tokens BIGINT, input_audio_tokens BIGINT, output_audio_tokens BIGINT, thinking_tokens BIGINT, total_tokens BIGINT, first_byte_latency_ms BIGINT, turn_latency_ms BIGINT, interrupt_flag BOOLEAN, reconnect_count INT, status VARCHAR(32), error_code VARCHAR(64) );字段含义要提前统一否则不同服务写入的口径会打架。input_audio_ms是用户本轮输入音频时长output_audio_ms是模型本轮输出音频时长。input_text_tokens、output_text_tokens来自转写文本或模型用量回包input_audio_tokens、output_audio_tokens来自语音用量。thinking_tokens单独记因为 Gemini 3.8 Live Extended Thinking 这类模式可能带来额外的推理类 Token不能和普通输出 Token 混在一起看。total_tokens是各项之和但建议在归集表里保留分项避免后续无法解释成本变化。写入时机建议每轮模型回复结束写一条voice_turn_detail。用户打断发生时立即写当前 turn并把interrupt_flag置为 true。WebSocket 重连时不新建voice_session_id只增加reconnect_count。会话关闭时写voice_session_summary汇总该会话的轮次、音频时长、Token 分项、错误码。每次调用 TaoToken 时把trace_id和voice_session_id同时写进应用日志便于和 TaoToken 控制台用量对账。示例明细可以这样表示{ event_time: 2025-01-01T10:00:07Z, project: voice-agent, env: staging, scene: customer-support, voice_session_id: vs_20250101_0001, turn_id: turn_0007, trace_id: trace_7f3a9c, model_route: gemini-live-default, model_name: YOUR_GEMINI_LIVE_MODEL_NAME, thinking_mode: extended, input_audio_ms: 4200, output_audio_ms: 5100, input_text_tokens: 0, output_text_tokens: 0, input_audio_tokens: 0, output_audio_tokens: 0, thinking_tokens: 0, total_tokens: 0, first_byte_latency_ms: 380, turn_latency_ms: 920, interrupt_flag: false, reconnect_count: 0, status: ok, error_code: null }上面的 Token 数值先置 0是为了说明结构。真实值由你的语音网关从模型用量回包、转写结果和 TaoToken 控制台用量中取值后填入。重点是每一轮 turn 都必须能追到voice_session_id和trace_id。如果只记总 Token不记分项后续无法判断是输入音频变长、输出音频变长还是 Extended Thinking 带来的推理 Token 增加。5. Claude Code / Codex / CC Switch 三件套把统一出口写进本地配置虽然本篇主角是 Gemini Live API 语音 Token 归集但很多团队会在同一台机器上同时使用 Claude Code、Codex 和 CC Switch。配置原则要分开Claude Code 使用settings.json和ANTHROPIC_*Codex 使用config.toml不要把ANTHROPIC_*套到 Codex。TaoToken 的 Base URL 在这些工具里统一写https://taotoken.net/apiKey 统一用YOUR_API_KEY占位。Claude Code 的settings.json示例{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: YOUR_API_KEY, ANTHROPIC_MODEL: claude-sonnet-4-5 } }如果控制台模型列表与示例模型名不同以 TaoToken 控制台展示为准。Claude Code 侧只认ANTHROPIC_*这一组环境变量不要在里面写 Codex 的 provider 字段。Codex 的config.toml示例model gpt-5-codex model_provider taotoken [model_providers.taotoken] name TaoToken base_url https://taotoken.net/api env_key TAOTOKEN_API_KEY wire_api responsesCodex 侧的关键是model_provider、base_url、env_keyKey 从TAOTOKEN_API_KEY读取。不要把ANTHROPIC_BASE_URL、ANTHROPIC_AUTH_TOKEN写进 Codex 配置否则会出现配置读取混乱。CC Switch 三件套可以理解为三套 profileClaude Code、Codex、Gemini Live Orchestrator。界面上维护三套供应商配置但底层都指向 TaoTokenProfile配置方式Base URLKey 变量备注Claude Codesettings.jsonhttps://taotoken.net/apiANTHROPIC_AUTH_TOKENYOUR_API_KEY只使用ANTHROPIC_*Codexconfig.tomlhttps://taotoken.net/apiTAOTOKEN_API_KEYYOUR_API_KEY使用 provider/env_keyGemini Live Orchestrator环境变量 请求标签https://taotoken.net/apiTAOTOKEN_API_KEYYOUR_API_KEY额外带voice_session_id、turn_id、trace_idCC Switch 三件套的价值是减少手工改配置。你可以在本地切换 profile但生产语音网关不应该依赖桌面工具而应该用环境变量、配置中心或密钥管理服务注入。语音 Token 归集要观测的是服务端行为不是开发者笔记本上的临时切换。6. 复现 Token 归集表从语音会话明细到日汇总有了voice_turn_detail就可以生成 Token 归集表。归集表建议按天、项目、环境、场景、模型路由聚合输出会话数、轮次数、音频分钟、输入 Token、输出 Token、思考 Token、总 Token、平均首响、错误率。以下 SQL 在本地分析库执行SELECT DATE(event_time) AS stat_date, project, env, scene, model_route, COUNT(DISTINCT voice_session_id) AS sessions, COUNT(*) AS turns, ROUND(SUM(input_audio_ms output_audio_ms) / 60000.0, 2) AS audio_minutes, SUM(input_audio_tokens) AS input_audio_tokens, SUM(output_audio_tokens) AS output_audio_tokens, SUM(input_text_tokens) AS input_text_tokens, SUM(output_text_tokens) AS output_text_tokens, SUM(thinking_tokens) AS thinking_tokens, SUM(total_tokens) AS total_tokens, ROUND(AVG(first_byte_latency_ms), 0) AS avg_first_byte_ms, ROUND(AVG(turn_latency_ms), 0) AS avg_turn_ms, SUM(CASE WHEN status ok THEN 1 ELSE 0 END) * 1.0 / COUNT(*) AS error_rate FROM voice_turn_detail GROUP BY DATE(event_time), project, env, scene, model_route ORDER BY stat_date DESC, total_tokens DESC;如果要把结果导出成 Token 归集表 CSV可以在本地增加导出逻辑。注意不要把 Key、用户原始音频、完整转写文本写入 CSV。归集表只保留可聚合字段和脱敏标签。对一个语音会话做下钻可以查SELECT voice_session_id, turn_id, event_time, input_audio_ms, output_audio_ms, total_tokens, first_byte_latency_ms, turn_latency_ms, interrupt_flag, reconnect_count, status, error_code FROM voice_turn_detail WHERE voice_session_id vs_20250101_0001 ORDER BY event_time ASC;对账时把本地total_tokens按project env scene model_route汇总再和 TaoToken 控制台用量视图对比。差异通常来自四类重连后同一 turn 被重复计费、打断后的输出音频仍继续生成、转写文本和音频 Token 口径不同、Extended Thinking 模式未被单独打标。归集表不要追求“一个总数完全一致”而要追求“每个差异都能定位到 voice_session_id 和 turn_id”。建议每天跑一次归集任务输出三张表token_daily_ledger按天、项目、场景、模型路由汇总。voice_session_summary按 voice_session_id 汇总会话级指标。voice_turn_detail保留 turn 级事实作为下钻依据。TaoToken 放在 Gemini Live API 前之后请求侧 Base URL 统一Key 统一标签统一这三张表才有稳定数据源。否则每个服务各写各的字段汇总时只能靠猜。7. 常见排障401、404、WebSocket 断开、标签丢失怎么定位第一类问题是 401 或 403。排查顺序当前进程是否读取到TAOTOKEN_API_KEY请求头是否是Authorization: Bearer YOUR_API_KEYKey 是否被空格、换行、引号污染是否把 staging Key 用到 prod 项目。语音网关常常在子进程或容器里启动环境变量没有透传时会表现为“本地能通、线上 401”。建议启动日志只打印 Key 后四位和变量是否存在不打印完整 Key。第二类问题是 404。最常见原因是 Base URL 被改成了https://taotoken.net/api/v1或者在代码里又拼接了一次/api。统一使用https://taotoken.net/api模型路径、资源路径以控制台为准。语音编排器如果从配置文件、环境变量、数据库三处读取 Base URL要确保优先级一致避免本地测试改对了、线上仍读旧值。第三类问题是 WebSocket 断开。Gemini Live API 这类长连接语音会话对网络抖动、心跳、超时极其敏感。排障时先看语音网关日志断连前是否发生大量 turn、是否触发打断、是否长时间静音、是否服务端主动关闭。重连时建议复用voice_session_id但新建turn_id或标记reconnect_count避免一次会话被拆成多条计费记录。如果每次重连都换 Key 或换 Base URLToken 归集会更乱。第四类问题是标签丢失。表现是 TaoToken 用量有总数但本地明细按scene、voice_session_id聚合时大量落在unknown。排查 header 是否被反向代理剥离metadata 是否在异步回调中丢失trace_id是否只在入口生成但没有传到模型调用层。解决方式是把标签构造放进统一出口函数而不是每个业务方自己拼。只要请求出口统一在 TaoToken Base URL 前标签就有机会统一注入。第五类问题是 Token 对不上。不要先怀疑模型先查重复写入同一 turn 是否在成功回调和超时重试中各写一次重连是否重复发送最后一轮音频TTS 缓存是否导致本地没有记录但上游仍有调用Extended Thinking 是否和标准模式共用了一个model_route。把这些字段拆开后差异会小很多。Token 归集与观测的目标不是做一张好看的表而是让每一次语音会话都能解释清楚。8. 把语音 Token 归集接回 TaoToken 工作流模型对话、Coding Plan、Key、Claude Code 文档如果你已经按上面的方式把 TaoToken 放在 Gemini Live API 前下一步就是把工作流跑通。建议顺序是先用模型对话验证模型和 Key再按 Coding Plan 规划日常开发用量然后创建独立 API Key最后把 Claude Code 文档配置进本地环境。这样语音 Token 归集、开发工具 Token 消耗、控制台 Key 管理不会混在一起。第一步模型对话入口 https://taotoken.net/models/detail/chat?utm_sourcetaotoken_aicg_blog_endutm_contentgemini_live_chat先用它验证YOUR_API_KEY是否能正常调用确认模型名称、返回结构和用量回包。语音网关接入前先用文本对话把 Base URL 和 Key 跑通可以排除大部分 401、404 问题。第二步Coding Plan https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentgemini_live_coding如果你的团队同时在用 Claude Code、Codex、CC Switch建议把日常编码工具和线上语音智能体分开规划。语音 Token 归集看的是voice_session_id和turn_id编码工具看的是本地项目 profile两者不要共用同一个 Key。第三步创建 Key https://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentgemini_live_keys给语音生产、语音测试、本地开发分别建 Key。生产 Key 只注入语音网关测试 Key 只注入 staging本地 Key 只用于调试。这样 Token 归集表的project env scene才有意义。第四步Claude Code 文档 https://taotoken.net/doc/ClaudeCodeAnthropic?utm_sourcetaotoken_aicg_blog_endutm_contentgemini_live_claude_code按文档配置settings.json里的ANTHROPIC_BASE_URL和ANTHROPIC_AUTH_TOKEN。Codex 继续使用config.toml不要混用ANTHROPIC_*。CC Switch 三件套则按 Claude Code、Codex、Gemini Live Orchestrator 三套 profile 管理。最后回到语音 Token 归集本身TaoToken 官网入口用 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentgemini_live_cta 进入Base URL 固定为https://taotoken.net/apiKey 用YOUR_API_KEY请求标签带project、env、scene、voice_session_id、turn_id、trace_id。坚持把每轮语音会话写入明细再用本地 SQL 汇总成 Token 归集表。这样当 Gemini 3.8 Live 或 Gemini 3.8 Live Extended Thinking 的语音智能体流量上来时你看到的不只是一个总 Token 数而是每一路会话、每一轮对话、每一个场景的完整用量解释。
RELATED

相关推荐

HIXL 内存信息结构体 MemInfo:Python 接口解析、Memtype 枚举与 remap_registered_memory 故障修复实践

HIXL 内存信息结构体 MemInfo:Python 接口解析、Memtype 枚举与 remap_registered_memory 故障修复实践

HIXL 内存信息结构体 MemInfo:Python 接口解析、Memtype 枚举与 remap_registered_memory 故障修复实践 【免费下载链接】hixl HIXL(Huawei Xfer Library)是一个灵活、高效的昇腾单边通信库,面向集群场景提供简单、可靠、高效的点…

📅 2026/9/18 12:20:05
LangChain Agent 入门:ReAct 循环、工具调用与记忆管理

LangChain Agent 入门:ReAct 循环、工具调用与记忆管理

1. 先把 Agent 是什么这件事说透,再谈 LangChain玩 Agent 开发这件事,我踩过的第一个坑不是代码写错,而是概念没理清就急着上框架。市面上关于 Agent、LangChain、智能体、框架这些词的讨论实在太多,有人说 LangChain 是入门首选&…

📅 2026/9/18 12:20:05
解析 .doc 复习概要:大纲树、卡片与检索索引

解析 .doc 复习概要:大纲树、卡片与检索索引

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/9/18 12:20:05
MORE NEWS

更多资讯

📰

从 .doc 到结构化题库:选择题文档解析与 JSON 转换全流程

简介:这份习题集为计算机专业基础课程提供了典型选择题训练,面向本科、高职、自考等阶段的初学者与备考者,可用于章节自测或考前速记。文档以1个doc文件打包,整体仅415KB,轻量便于下载后打印或导入笔记软件使用。全部题…

📰

数据编织落地指南:主动元数据与知识图谱如何打通数据孤岛

简介:Gartner《有效商业决策指南》系列之四聚焦数据编织在数据管理架构中的作用,面向数据与分析(D&A)领导者、企业架构师及数据治理人员,帮助其理解这一新兴设计概念如何跨越数据孤岛、自动化数据集成并更快提供洞…

📰

parking-lot-search:基于 Data.go.kr 官方数据的韩国公共停车场检索指南

parking-lot-search:基于 Data.go.kr 官方数据的韩国公共停车场检索指南 【免费下载链接】k-skill 한국인을 위한 스킬 모음집 - 에이전트를 한국인으로 项目地址: https://gitcode.com/GitHub_Trending/ks/k-skill 导读 parking-lot-search 是 k-skill 仓库…

📰

达梦数据库DM8存储过程与函数开发实战:从迁移踩坑到性能优化

去年接手了一个从老系统往达梦数据库迁移的项目,最头疼的不是表结构,而是一大堆历史存储过程和自定义函数。团队里有人从 MySQL 过来,习惯写DELIMITER //那一套;有人从 Oracle 过来,觉得 PL/SQL 直接搬就能跑&#xff…

📰

3 步调优:BabelDOC(OVSeg 开放词汇语义分割)的推理速度与分割精度双目标实践

3 步调优:BabelDOC(OVSeg 开放词汇语义分割)的推理速度与分割精度双目标实践 【免费下载链接】BabelDOC Yet Another Document Translator 项目地址: https://gitcode.com/GitHub_Trending/ba/BabelDOC 跑一份两百页的文档要等几十分钟…

📰

一键微信公众号 RSS 订阅:wewe-rss 私有化部署完整指南

一键微信公众号 RSS 订阅:wewe-rss 私有化部署完整指南 【免费下载链接】wewe-rss 🤗更优雅的微信公众号订阅方式,支持私有化部署、微信公众号RSS生成(基于微信读书) 项目地址: https://gitcode.com/GitHub_Trending…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬