2作者: dpacman8 个月前原帖
嗨,HN!<p>我创建Termitty是因为我厌倦了为SSH自动化编写的那些临时解决方案。<p>在构建我的工作流自动化SaaS时,我有一个看似简单的需求:工作流需要在远程服务器上执行任务,而不仅仅是在浏览器中。Selenium使得浏览器部分变得优雅——你可以等待元素、处理动态内容、维护会话状态。但对于SSH?我感觉自己仍然停留在石器时代。<p>最终,我写了一个庞大的自定义驱动程序,它:<p>- 维护一个持久的SSH连接池 - 在命令之间跟踪工作目录 - 尝试用正则表达式解析ANSI转义码(不要这样做) - 有一个“wait_for_prompt”函数,实际上只是`time.sleep(2)`加上一些额外步骤<p>转折点是在我需要自动化一个涉及以下步骤的工作流时:<p>1. SSH进入生产服务器 2. 启动数据库备份 3. 导航ncurses配置菜单 4. 检测备份何时完成(通过进度条!) 5. 验证备份文件<p>我的“解决方案”非常尴尬——用正则表达式抓取终端输出,希望提示检测能够正常工作,并祈祷时机能够对上。这种方法脆弱、不易维护,我知道一定有更好的办法。<p>所以在Claude Opus 4的帮助下,我构建了我所希望的东西——Termitty将Selenium的模式带入了终端自动化。<p>关键的见解是,终端是有状态的用户界面,就像网页一样。因此,Termitty维护一个虚拟终端缓冲区——它实际上理解屏幕上的内容,跟踪光标位置,正确处理ANSI代码。你可以像查找DOM元素一样在终端屏幕上查找文本。<p>一些有趣的功能包括:<p>- 完整的终端仿真——它维护一个完整的VT100/ANSI终端状态 - 会话录制——将所有内容记录为JSON/asciinema格式,并提供流畅的回放用户界面 - 交互式Shell——持久的Shell会话可以控制vim、top、安装程序 - 真实的等待条件——不再需要sleep()!等待特定的输出、提示或模式<p>一旦我有了结构化的终端状态,AI集成变得显而易见——现在大型语言模型(LLMs)实际上可以“看到”终端,并对接下来的操作做出智能决策。<p>你遇到过哪些SSH自动化的痛点?我尤其好奇那些我还没有遇到的边缘案例!<p>附言——查看文档中的终端播放器。你可以录制一个会话并与美观的回放用户界面分享——这就像是终端的Loom!
2作者: andrewlech8 个月前原帖
嗨,HN, TorusKit 是一个 JavaScript 库,可以让你直接在 HTML 中创建简单或复杂的网页(CSS)动画,无需创建任何 JS 或 CSS 文件。我花了几年的时间来使它尽可能简单易用。它使用 [data-tor] 属性,语法简单(类似低代码): ```html <div data-tor="animate:[[translateX(2rem)], [scale(1.5)] <1s, infinite, alternate>]">Hello</div> ``` 它有点像 AOS(滚动时动画),但更灵活,不仅限于滚动,同时对于不喜欢代码复杂性的人来说,比 GSAP 更简单。 它支持以下功能: - 动画和链式动画 - 基于滚动的动画(视差效果) - 鼠标跟随效果 - 交错 + 组合动画 - 还有更多 我仍在修复一些错误和边缘情况,但它对于小型/中型网站来说已经足够功能完善和稳定。它在 WordPress、基于 Bootstrap 的网站或其他静态页面上效果最佳。Svelte 的支持也即将推出! 网站: [https://toruskit.com](https://toruskit.com) 文档: [https://docs.toruskit.com](https://docs.toruskit.com) 我非常感谢任何反馈。谢谢!
3作者: eliana_jordan8 个月前原帖
在对昂贵且笨重的SEO工具感到沮丧后,我决定自己开发一个工具。<p>于是我创建了SEOzast——一个可以生成1000字AI撰写的SEO文章,并附带您网站真实反向链接的工具。<p>它专为独立开发者、单人创始人以及希望在不花费每月50美元或撰写任何博客文章的情况下获取自然流量的人士而设计。<p>您只需输入您的网站,SEOzast会分析这些网站并生成标题、描述和主题。然后,它会处理其余的内容:从H1标签到元描述,从您真实文章的内部链接,再到一键将内容以Markdown或React(TSX/JSX)页面的形式部署到GitHub。图片来自Pexels,您还可以以不同格式下载文章。<p>该工具基于Next.js构建,底层使用OpenAI,我自己托管以保持低成本(比一杯咖啡每月便宜)。<p>我仍在不断改进它,欢迎您的反馈。诚实的意见非常欢迎。<p><a href="https://seozast.com" rel="nofollow">https://seozast.com</a>