重要前提
安装AI Skills的关键前提是:必须科学上网,且开启TUN模式,这一点至关重要,直接决定安装能否顺利完成,在此郑重提醒三遍:科学上网,科学上网,科学上网。查看完整安装教程 →
social-media by epicenterhq/epicenter
npx skills add https://github.com/epicenterhq/epicenter --skill social-media遵循 writing-voice 的语调规范。
当你需要时,请使用此模式:
好的:
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
Whispering 现已支持文件上传。拖入音频/视频文件,即可获得转录输出。可与任何 OpenAI 兼容的 API 配合使用。
开源地址:github.com/EpicenterHQ/epicenter
差的:
🚀 激动人心的消息!Whispering 现已支持文件上传!
拖放您的文件,即可获得即时 AI 驱动的转录。这是生产力的游戏规则改变者!🎯
立即尝试 👇
github.com/EpicenterHQ/epicenter
#OpenSource #AI #Productivity
好的:
TIL: Tauri 的 onDragDropEvent 在 Web 拖放失效的地方有效。如果你正在用 Web 技术构建桌面应用,原生拖放大约需要 20 行代码,并以操作系统的方式处理文件路径。
差的:
刚刚发现了 Tauri 的一些惊人之处!🤯
他们的原生拖放 API 功能极其强大,能无缝处理 Web API 根本无法匹配的文件操作。
这就是我喜欢用 Tauri 构建的原因!💪
区别:好的推文教授了具体的东西。差的推文表达了对空泛内容的热情。
当一条推文不够时,使用简短的推文串。每条推文都应足够独立,即使有人单独看到它也能理解其意。
好的:
Tweet 1:
构建了一个基于 CRDT 的表格存储,相同数据下比 Y.Map 小 1935 倍。诀窍:将单元格以 "rowId:colId" 键的形式存储在带有 LWW 时间戳的扁平数组中。
Tweet 2:
Y.Map 为每个键创建一个 CRDT 条目,每个条目都有元数据开销。一个扁平的 YKeyValue 数组存储带有时间戳的原始条目;冲突解决在用户层进行。对于一个 50 行的表格,从 524KB 减少到 271 字节。
Tweet 3:
权衡:你失去了 Y.Map 内置的 observe() 粒度。我们重建了一个 CellStore 层来解析键并发出类型化的变更事件。为了节省存储空间,这是值得的。
源码:github.com/EpicenterHQ/epicenter
差的:
Tweet 1:
🧵 推文串:我们如何在 CRDT 存储上实现了巨大的 1935 倍改进!让我带你了解我们的历程...
Tweet 2:
首先,让我们理解问题。Y.Map 很棒,但会产生显著的开销...
Tweet 3:
那么我们做了什么?我们采用了一种创新的方法...
Tweet 4:
结果绝对令人难以置信!以下是主要好处:
- 存储空间缩小 1935 倍
- 更快的同步时间
- 更好的冲突解决
Tweet 5:
如果你觉得这有帮助,请转发并关注以获取更多类似内容!🙏
好的推文串:每条推文都有一个具体事实。差的推文串:推文 1 是引子,推文 2 是铺垫,信息直到推文 3 才开始。"请转发"的结尾会立即失去可信度。
Whispering 现已支持直接文件上传!
只需拖放(或点击浏览)你的音频文件,即可获得即时转录,并可使用你选择的模型。
免费开源应用:https://github.com/EpicenterHQ/epicenter
很高兴地宣布,Whispering 现已支持直接文件上传!
这一颠覆性功能允许你:
- 拖放任何音频/视频文件
- 获得即时、准确的转录
- 节省时间并提升生产力
秉承透明和用户控制的理念构建,你只需支付实际 API 成本(仅 2 美分/小时!),没有隐藏费用或订阅。
准备好革新你的工作流程了吗?立即尝试!
GitHub:https://github.com/EpicenterHQ/epicenter
#OpenSource #Productivity #Innovation #DeveloperTools #Transcription
嘿 r/sveltejs!刚刚为 Whispering 发布了文件上传功能,想分享一下我是如何实现拖放文件的。
我使用了 [shadcn-svelte-extras 的 FileDropZone 组件](https://www.shadcn-svelte-extras.com/components/file-drop-zone),它提供了一个简洁的抽象,允许用户拖放和点击上传文件:
```svelte
<FileDropZone
accept="{ACCEPT_AUDIO}, {ACCEPT_VIDEO}"
maxFiles={10}
maxFileSize={25 * MEGABYTE}
onUpload={(files) => {
if (files.length > 0) {
handleFileUpload(files);
}
}}
/>
```
该组件处理 Web 拖放,但由于 Whispering 是一个 Tauri 桌面应用,拖放功能在桌面上不起作用(点击选择仍然正常工作)。所以我使用了 Tauri 的 [onDragDropEvent](https://tauri.app/reference/javascript/api/namespacewebviewwindow/#ondragdropevent) 来添加对将文件拖到应用程序任何位置的原生支持。
你可以在这里看到 [完整实现](link)(注意,按我的标准,代码还有些混乱;计划清理!)。
Whispering 是一个大型、开源、生产级的 Svelte 5 + Tauri 应用:https://github.com/EpicenterHQ/epicenter
欢迎查看以获取更多模式!如果你正在构建 Svelte 5 应用并需要文件上传功能,一定要看看 shadcn-svelte-extras。无关联,只是它为我节省了几个小时的实现时间。
很高兴回答任何关于实现的问题!
## 问题
用户一直要求文件上传支持...
## 解决方案
我实现了一个漂亮的拖放界面...
## 主要好处
- 用户友好的界面
- 支持多种文件格式
- 闪电般的处理速度
## 为什么这很重要
这改变了用户体验...
每周安装量
66
代码仓库
GitHub 星标数
4.3K
首次出现
Jan 20, 2026
安全审计
安装于
gemini-cli60
opencode60
claude-code59
codex58
antigravity55
cursor54
Follow writing-voice for tone.
Use this pattern when you need to:
Good:
Whispering now does file uploads. Drag audio/video files in, get transcription out. Works with any OpenAI-compatible API.
Open source: github.com/EpicenterHQ/epicenter
Bad:
🚀 Exciting news! Whispering now supports file uploads!
Drag and drop your files for instant AI-powered transcription. This is a game-changer for productivity! 🎯
Try it now 👇
github.com/EpicenterHQ/epicenter
#OpenSource #AI #Productivity
Good:
TIL: Tauri's onDragDropEvent works where web drag-and-drop doesn't. If you're building a desktop app with web tech, native drag-and-drop is ~20 lines and handles file paths the OS way.
Bad:
Just discovered something amazing about Tauri! 🤯
Their native drag-and-drop API is incredibly powerful and seamlessly handles file operations that web APIs simply can't match.
This is why I love building with Tauri! 💪
The difference: the good tweet teaches something specific. The bad tweet expresses enthusiasm about nothing in particular.
When a single tweet isn't enough, use a short thread. Each tweet should be self-contained enough to make sense if someone sees it in isolation.
Good:
Tweet 1:
Built a CRDT-based table storage that's 1935x smaller than Y.Map for the same data. The trick: store cells as "rowId:colId" keys in a flat array with LWW timestamps.
Tweet 2:
Y.Map creates one CRDT entry per key, each with metadata overhead. A flat YKeyValue array stores raw entries with timestamps; conflict resolution happens in userland. 524KB → 271 bytes for a 50-row table.
Tweet 3:
Trade-off: you lose Y.Map's built-in observe() granularity. We rebuilt it with a CellStore layer that parses keys and emits typed change events. Worth it for the storage savings.
Source: github.com/EpicenterHQ/epicenter
Bad:
Tweet 1:
🧵 Thread: How we achieved a massive 1935x improvement in our CRDT storage! Let me walk you through our journey...
Tweet 2:
First, let's understand the problem. Y.Map is great but creates significant overhead...
Tweet 3:
So what did we do? We implemented an innovative approach using...
Tweet 4:
The results were absolutely incredible! Here are the key benefits:
- 1935x smaller storage
- Faster sync times
- Better conflict resolution
Tweet 5:
If you found this helpful, please RT and follow for more content like this! 🙏
The good thread: each tweet has a concrete fact. The bad thread: tweet 1 is a hook, tweet 2 is setup, and the information doesn't start until tweet 3. The "please RT" closer is an instant credibility loss.
Whispering now supports direct file uploads!
Simply drag and drop (or click to browse) your audio files for instant transcription, with your model of choice.
Free open-source app: https://github.com/EpicenterHQ/epicenter
Excited to announce that Whispering now supports direct file uploads!
This game-changing feature allows you to:
- Drag and drop any audio/video file
- Get instant, accurate transcriptions
- Save time and boost productivity
Built with the same philosophy of transparency and user control, you pay only actual API costs (just 2c/hour!) with no hidden fees or subscriptions.
Ready to revolutionize your workflow? Try it now!
GitHub: https://github.com/EpicenterHQ/epicenter
#OpenSource #Productivity #Innovation #DeveloperTools #Transcription
Hey r/sveltejs! Just shipped a file upload feature for Whispering and wanted to share how I implemented drag-and-drop files.
I used the [FileDropZone component from shadcn-svelte-extras](https://www.shadcn-svelte-extras.com/components/file-drop-zone), which provided a clean abstraction that allows users to drop and click to upload files:
```svelte
<FileDropZone
accept="{ACCEPT_AUDIO}, {ACCEPT_VIDEO}"
maxFiles={10}
maxFileSize={25 * MEGABYTE}
onUpload={(files) => {
if (files.length > 0) {
handleFileUpload(files);
}
}}
/>
```
The component handles web drag-and-drop, but since Whispering is a Tauri desktop app, drag-and-drop functionality didn't work on the desktop (click-to-select still worked fine). So I reached for Tauri's [onDragDropEvent](https://tauri.app/reference/javascript/api/namespacewebviewwindow/#ondragdropevent) to add native support for dragging files anywhere into the application.
You can see the [full implementation here](link) (note that the code is still somewhat messy by my standards; it is slated for cleanup!).
Whispering is a large, open-source, production Svelte 5 + Tauri app: https://github.com/EpicenterHQ/epicenter
Feel free to check it out for more patterns! If you're building Svelte 5 apps and need file uploads, definitely check out shadcn-svelte-extras. Not affiliated, it just saved me hours of implementation time.
Happy to answer any questions about the implementation!
## The Problem
Users were asking for file upload support...
## The Solution
I implemented a beautiful drag-and-drop interface...
## Key Benefits
- User-friendly interface
- Supports multiple file formats
- Lightning-fast processing
## Why This Matters
This transforms the user experience...
Weekly Installs
66
Repository
GitHub Stars
4.3K
First Seen
Jan 20, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykPass
Installed on
gemini-cli60
opencode60
claude-code59
codex58
antigravity55
cursor54
社交媒体内容策略指南:创建、优化与互动全流程 | 营销技能
41,300 周安装
design-optimize 代码配置优化工具 - 提升开发效率与代码质量
1 周安装
design-normalize:代码规范与设计系统配置工具,提升开发一致性
1 周安装
design-delight - 提升代码编辑器设计体验的配置工具,优化开发工作流
1 周安装
design-colorize 代码着色工具 - 提升代码可读性的设计插件 | derklinke/codex-config
1 周安装
design-clarify - 代码配置与设计澄清工具,提升开发效率与代码质量
1 周安装
API网关配置指南:Kong、Nginx、AWS实战与微服务架构最佳实践
63 周安装