<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: 刘金水｜用AI做小黄鱼</title>
    <description>The latest articles on DEV Community by 刘金水｜用AI做小黄鱼 (@liujinshui_ai).</description>
    <link>https://dev.to/liujinshui_ai</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4005337%2F64145927-dac2-41a5-99b4-4137bb96bae5.png</url>
      <title>DEV Community: 刘金水｜用AI做小黄鱼</title>
      <link>https://dev.to/liujinshui_ai</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/liujinshui_ai"/>
    <language>en</language>
    <item>
      <title>AI社群交付怎么向合作渠道说明：先把服务、响应和分工讲清楚</title>
      <dc:creator>刘金水｜用AI做小黄鱼</dc:creator>
      <pubDate>Tue, 03 Nov 2026 16:32:59 +0000</pubDate>
      <link>https://dev.to/liujinshui_ai/aishe-qun-jiao-fu-zen-yao-xiang-he-zuo-qu-dao-shuo-ming-xian-ba-fu-wu-xiang-ying-he-fen-gong-jiang-qing-chu-3hde</link>
      <guid>https://dev.to/liujinshui_ai/aishe-qun-jiao-fu-zen-yao-xiang-he-zuo-qu-dao-shuo-ming-xian-ba-fu-wu-xiang-ying-he-fen-gong-jiang-qing-chu-3hde</guid>
      <description>&lt;p&gt;做黄金的团队长、IB或渠道，有客户资源，接下来要看的就是：后端到底交付什么，客户的问题由谁接。&lt;/p&gt;

&lt;p&gt;我这边有稳定的后端交付，包含AI系统和社群服务。合作先看实际内容，再谈如何配合。&lt;/p&gt;

&lt;p&gt;这张图是我的群内服务历史片段。它说明的是一种可核对的沟通方式：保留当时说了什么、后面补充了什么，让沟通能接上前文。单张截图不能证明长期交易成绩，也不能代替对交付能力的实际了解。&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjc163sy2ybnrlc2fe0mn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjc163sy2ybnrlc2fe0mn.png" alt="群内服务历史片段" width="800" height="1739"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;向合作方介绍AI交付，我会先把三件事说清楚：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;交付内容：哪些是系统输出，哪些是人的解释和回应。先看真实内容，不能只看最后一屏数字。&lt;/li&gt;
&lt;li&gt;问题承接：具体使用问题如何反馈，回应要接回原问题；系统不清楚的内容不能补编。&lt;/li&gt;
&lt;li&gt;双方分工：资源方负责什么，后端承接什么，合作前逐项谈清楚。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;有黄金客户资源、正在找后端交付合作的团队长、IB和渠道，可以通过站内联系聊合作。先看实际交付，再谈分工。&lt;/p&gt;

&lt;p&gt;图片中的价位和讨论都是历史记录，不是当前交易指令；持仓浮盈不等于已兑现收益。&lt;/p&gt;

&lt;p&gt;生成说明：全文由AI根据刘金水提供的原始截图和本次合作获客要求生成，未经本人逐字编辑。&lt;/p&gt;

</description>
    </item>
    <item>
      <title>社群摘要的版本设计：原话和更正分开存</title>
      <dc:creator>刘金水｜用AI做小黄鱼</dc:creator>
      <pubDate>Fri, 16 Oct 2026 17:09:26 +0000</pubDate>
      <link>https://dev.to/liujinshui_ai/she-qun-zhai-yao-de-ban-ben-she-ji-yuan-hua-he-geng-zheng-fen-kai-cun-50c4</link>
      <guid>https://dev.to/liujinshui_ai/she-qun-zhai-yao-de-ban-ben-she-ji-yuan-hua-he-geng-zheng-fen-kai-cun-50c4</guid>
      <description>&lt;p&gt;做AI社群助手，最容易漏掉的不是关键词，而是一句后来改口的话。摘要只保留最后一句，读者就看不到变化；旧判断和新判断放在一起，又容易被当成同一时刻的意思。&lt;/p&gt;

&lt;p&gt;拿刘金水10月15日晚的历史聊天材料举例。他说过“我平仓了哈”，也说过“我仓位太重了”。这两句只能证明当时留过这样的原话。材料没有交代的原因和后续结果，不能让模型补成一段完整交易故事。&lt;/p&gt;

&lt;p&gt;黄金信号群的卡片和交流群的问答，是两种不同的数据。前者需要追溯发布时间、适用时段、等待条件和失效说明；后者需要保留成员到底问了什么、回答针对哪一句。把它们都压成“方向明确、问题已解决”，读起来顺，却把核对的依据删掉了。&lt;/p&gt;

&lt;h2&gt;
  
  
  一条记录至少分成五项
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;原话：逐字保留，不由摘要替换。&lt;/li&gt;
&lt;li&gt;时间：原消息时间和材料整理时间分开。&lt;/li&gt;
&lt;li&gt;出处：能回到哪一条原消息或卡片。&lt;/li&gt;
&lt;li&gt;解释：明确标成AI整理，不写成作者原话。&lt;/li&gt;
&lt;li&gt;更正关系：新消息改了哪一条，旧记录仍保留。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;这只是字段设计建议，不是已经上线的工具。比如后续卡片取消了某个条件，应该新增一条更正并指回旧记录，而不是覆盖旧文本。后来打开材料的人，才能分清当时等待什么、后来哪件事变了。&lt;/p&gt;

&lt;p&gt;核摘要时也可以用一个很小的检查：随手抽一句结论，能不能找到对应原话和日期？找不到就退回材料，不靠模型把理由补齐。信号群和交流群是否有参考价值，至少得能让人核对这些记录，不能只靠一张结果截图。&lt;/p&gt;

&lt;p&gt;本文由AI助理依据10月15日历史材料协助整理，讨论社群信息与版本设计，不提供当前行情或交易建议，不代表自动答疑系统已经做好。&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>data</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>AI黄金提醒的状态设计：背景、条件、失效别混在一起</title>
      <dc:creator>刘金水｜用AI做小黄鱼</dc:creator>
      <pubDate>Thu, 08 Oct 2026 10:45:12 +0000</pubDate>
      <link>https://dev.to/liujinshui_ai/aihuang-jin-ti-xing-de-zhuang-tai-she-ji-bei-jing-tiao-jian-shi-xiao-bie-hun-zai-qi-1728</link>
      <guid>https://dev.to/liujinshui_ai/aihuang-jin-ti-xing-de-zhuang-tai-she-ji-bei-jing-tiao-jian-shi-xiao-bie-hun-zai-qi-1728</guid>
      <description>&lt;p&gt;这是一份设计笔记：把黄金提醒从一段自然语言，拆成能核对的状态记录。以下字段是示例结构，不是已上线代码，也不代表交易效果。&lt;/p&gt;

&lt;h2&gt;
  
  
  同样是消息，用途可以不同
&lt;/h2&gt;

&lt;p&gt;方向背景用来理解市场；条件成立提醒用来说明一个判断的前提是否满足；失效消息用来撤销旧前提。把它们都叫“信号”，使用者就容易把背景当行动。&lt;/p&gt;

&lt;h2&gt;
  
  
  一条记录至少保留什么
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"symbol"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"XAUUSD"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"message_type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"background"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"source_time_utc"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"EXAMPLE_ONLY"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"condition_status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"not_confirmed"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"expires_at_utc"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"record_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"example-only-001"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;message_type&lt;/code&gt;解决消息用途；&lt;code&gt;source_time_utc&lt;/code&gt;解决数据是什么时候的；&lt;code&gt;condition_status&lt;/code&gt;说明条件是否成立；&lt;code&gt;expires_at_utc&lt;/code&gt;避免旧提醒继续被当作当前有效；&lt;code&gt;record_id&lt;/code&gt;用于查重和追踪。真实实现还要定义数据缺失、过期和更正的处理方式。&lt;/p&gt;

&lt;h2&gt;
  
  
  发送和收到分别留证据
&lt;/h2&gt;

&lt;p&gt;任务跑完、接口返回、平台显示、接收者确认，是不同的环节。为同一条记录保留生成时间、提交状态和回读结果，比只写一个“成功”更容易排查漏发。提交结果未知时先核原记录，不直接重复发送。&lt;/p&gt;

&lt;h2&gt;
  
  
  人工使用时的三个问题
&lt;/h2&gt;

&lt;p&gt;这条是背景还是条件提醒？它的数据日期是什么？原来的条件有没有失效？&lt;/p&gt;

&lt;p&gt;模型说明得清楚，仍然需要人做判断。这里讨论信息与提醒设计，不提供买卖方向或收益承诺。&lt;/p&gt;

&lt;p&gt;你在做黄金提醒或人工信号系统时，最容易漏掉哪项记录？欢迎讲具体场景。&lt;/p&gt;

&lt;p&gt;本文由AI辅助整理，示例未作为可运行系统验收。&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Dog Deworming Schedule Chart: Puppy to Adult (2026)</title>
      <dc:creator>刘金水｜用AI做小黄鱼</dc:creator>
      <pubDate>Wed, 29 Jul 2026 09:44:00 +0000</pubDate>
      <link>https://dev.to/liujinshui_ai/dog-deworming-schedule-chart-puppy-to-adult-2026-4f0e</link>
      <guid>https://dev.to/liujinshui_ai/dog-deworming-schedule-chart-puppy-to-adult-2026-4f0e</guid>
      <description>&lt;p&gt;A useful dog deworming schedule is not one fixed dose repeated forever. The timing changes as a puppy grows, starts monthly parasite prevention, and reaches adulthood.&lt;/p&gt;

&lt;h2&gt;
  
  
  Practical age checkpoints
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Age&lt;/th&gt;
&lt;th&gt;What to discuss with your veterinarian&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;About 2 weeks&lt;/td&gt;
&lt;td&gt;Starting a veterinarian-selected deworming product&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4, 6 and 8 weeks&lt;/td&gt;
&lt;td&gt;Repeating treatment at the interval on the veterinary plan&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2 to 6 months&lt;/td&gt;
&lt;td&gt;Moving toward monthly broad-spectrum parasite control&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Adult dogs&lt;/td&gt;
&lt;td&gt;Year-round prevention and fecal testing based on exposure risk&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Medication choice and dosage depend on weight, health, location and the parasites being targeted. A schedule is a preparation tool, not a prescription.&lt;/p&gt;

&lt;p&gt;The free &lt;a href="https://pupvax.com/puppy-deworming-schedule/" rel="noopener noreferrer"&gt;PupVax dog deworming schedule chart&lt;/a&gt; lays out the puppy-to-adult timeline and the questions to take to a veterinarian.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>TDEE vs BMR vs Macros: A Practical Starting Point</title>
      <dc:creator>刘金水｜用AI做小黄鱼</dc:creator>
      <pubDate>Tue, 28 Jul 2026 00:23:57 +0000</pubDate>
      <link>https://dev.to/liujinshui_ai/tdee-vs-bmr-vs-macros-a-practical-starting-point-4m7h</link>
      <guid>https://dev.to/liujinshui_ai/tdee-vs-bmr-vs-macros-a-practical-starting-point-4m7h</guid>
      <description>&lt;h1&gt;
  
  
  TDEE vs BMR vs Macros: A Practical Starting Point
&lt;/h1&gt;

&lt;p&gt;People often treat BMR, TDEE, calories, and macros as four separate answers. They are really one estimation workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  A simple order
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Estimate BMR: the energy your body uses at rest.&lt;/li&gt;
&lt;li&gt;Estimate TDEE: BMR adjusted for activity.&lt;/li&gt;
&lt;li&gt;Choose a modest goal: maintenance, a small deficit, or a small surplus.&lt;/li&gt;
&lt;li&gt;Split the calorie target into protein, fat, and carbohydrates.&lt;/li&gt;
&lt;li&gt;Track the trend for two to three weeks and adjust from real results.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The activity multiplier is usually the least reliable input. If you are unsure, start conservatively instead of selecting “very active” because you train a few times per week.&lt;/p&gt;

&lt;p&gt;Use the free &lt;a href="https://freetdee.com/" rel="noopener noreferrer"&gt;TDEE and macro calculator&lt;/a&gt; to generate a starting estimate. It is not a medical prescription. Body weight trends, training performance, hunger, sleep, and professional advice matter more than one calculated number.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to change first
&lt;/h2&gt;

&lt;p&gt;Do not rewrite the plan every day. Keep the same target long enough to see a trend. If the trend is clearly wrong, change one variable—usually daily calories—then observe again.&lt;/p&gt;

</description>
      <category>nutrition</category>
    </item>
    <item>
      <title>I Fixed a 122-Character Title Tag Killing My SEO Tool Clicks</title>
      <dc:creator>刘金水｜用AI做小黄鱼</dc:creator>
      <pubDate>Wed, 22 Jul 2026 00:52:29 +0000</pubDate>
      <link>https://dev.to/liujinshui_ai/i-fixed-a-122-character-title-tag-killing-my-seo-tool-clicks-3183</link>
      <guid>https://dev.to/liujinshui_ai/i-fixed-a-122-character-title-tag-killing-my-seo-tool-clicks-3183</guid>
      <description>&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;I run 8 free browser tools as a side project. One of them — InvoicePad (&lt;a href="https://invoicepad.net/" rel="noopener noreferrer"&gt;https://invoicepad.net/&lt;/a&gt;) — has 20+ profession-specific invoice template pages. Think "Freelance Writer Invoice Template", "Web Developer Invoice Template", "Handyman Invoice Template", etc.&lt;/p&gt;

&lt;p&gt;I checked Google Search Console this morning and found something brutal: the /invoice-template/freelance-writer/ page had &lt;strong&gt;151 impressions but zero clicks&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Not one click. From 151 times someone saw it in search results.&lt;/p&gt;

&lt;h2&gt;
  
  
  The root cause
&lt;/h2&gt;

&lt;p&gt;One line of code. All 20+ profession pages were generated from a single Next.js dynamic route. The title template was:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Free 2026 Invoice Template for {Profession}s — Create &amp;amp; Download PDF (No Sign-Up) (2026)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then the layout template appended &lt;code&gt;| 2026 Free Invoice Generator&lt;/code&gt; as a suffix.&lt;/p&gt;

&lt;p&gt;The final title tag? &lt;strong&gt;122 characters&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Free 2026 Invoice Template for Freelance Writers — Create &amp;amp; Download PDF (No Sign-Up) (2026) | 2026 Free Invoice Generator
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Problems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Two "(2026)" years in one title&lt;/li&gt;
&lt;li&gt;Three mentions of "Free"&lt;/li&gt;
&lt;li&gt;Google truncates titles at ~60 characters in SERP&lt;/li&gt;
&lt;li&gt;The actual search query "freelance writer invoice template" was buried at position 5&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The fix
&lt;/h2&gt;

&lt;p&gt;Changed that one line to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{Profession} Invoice Template — Free PDF Generator
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Final title: &lt;strong&gt;Freelance Writer Invoice Template — Free PDF Generator | 2026 Free Invoice Generator&lt;/strong&gt; — 72 characters.&lt;/p&gt;

&lt;p&gt;One line. One commit. 20+ pages fixed. Deployed via GitHub Actions to Cloudflare Pages.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I learned
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Check production, not localhost.&lt;/strong&gt; The em dash (—) looked fine in my dev environment. In production, Next.js + Cloudflare Pages static export rendered it differently.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GSC query data is gold.&lt;/strong&gt; If I hadn't checked which specific queries were getting impressions, I wouldn't have known "freelance writer invoice template" was the exact phrase people searched for.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dynamic templates need title audits.&lt;/strong&gt; When one line generates 20+ pages, a bad title infects everything.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  8 free tools I'm maintaining
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://iworkviewer.com/" rel="noopener noreferrer"&gt;https://iworkviewer.com/&lt;/a&gt; — Open Apple iWork files online&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://livephotokit.com/" rel="noopener noreferrer"&gt;https://livephotokit.com/&lt;/a&gt; — HEIC / Live Photo converter&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://plantingcalendar.net/" rel="noopener noreferrer"&gt;https://plantingcalendar.net/&lt;/a&gt; — USDA zone planting calendar&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://freetdee.com/" rel="noopener noreferrer"&gt;https://freetdee.com/&lt;/a&gt; — TDEE / macro calculator&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://babypercent.com/" rel="noopener noreferrer"&gt;https://babypercent.com/&lt;/a&gt; — Baby growth percentile tracker&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://invoicepad.net/" rel="noopener noreferrer"&gt;https://invoicepad.net/&lt;/a&gt; — Free invoice generator (today's fix)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://zoneplan.net/" rel="noopener noreferrer"&gt;https://zoneplan.net/&lt;/a&gt; — Cross timezone meeting planner&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://pupvax.com/" rel="noopener noreferrer"&gt;https://pupvax.com/&lt;/a&gt; — Puppy vaccine schedule&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All built with Next.js + Cloudflare Pages. Source code public at &lt;a href="https://github.com/Gavin1901" rel="noopener noreferrer"&gt;https://github.com/Gavin1901&lt;/a&gt;&lt;/p&gt;

</description>
      <category>8</category>
      <category>free</category>
      <category>privacyfirst</category>
      <category>web</category>
    </item>
    <item>
      <title>I Built a Free HEIC Converter and Live Photo Toolkit That Runs Entirely in Your Browser</title>
      <dc:creator>刘金水｜用AI做小黄鱼</dc:creator>
      <pubDate>Sat, 11 Jul 2026 06:43:01 +0000</pubDate>
      <link>https://dev.to/liujinshui_ai/i-built-a-free-heic-converter-and-live-photo-toolkit-that-runs-entirely-in-your-browser-3l3l</link>
      <guid>https://dev.to/liujinshui_ai/i-built-a-free-heic-converter-and-live-photo-toolkit-that-runs-entirely-in-your-browser-3l3l</guid>
      <description>&lt;p&gt;Apple makes great hardware and software. But they also make file formats that do not play well with anything outside the Apple ecosystem. I built &lt;a href="https://livephotokit.com" rel="noopener noreferrer"&gt;livephotokit.com&lt;/a&gt; to solve one specific version of this problem: Live Photos and HEIC files.&lt;/p&gt;

&lt;h2&gt;
  
  
  The two tools in one
&lt;/h2&gt;

&lt;p&gt;LivePhotoKit does two things that usually require separate apps:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;HEIC Converter&lt;/strong&gt;: Convert HEIC images to JPG or PNG. HEIC is Apple's default photo format since iOS 11. It saves space with better compression than JPEG, but most non-Apple software cannot open it. The converter handles single files or batch conversion, all in your browser.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Live Photo Tools&lt;/strong&gt;: Extract still frames from Apple Live Photos, play them as video, or convert the MOV component to MP4. Live Photos are actually a paired HEIC image and MOV video file. The tool lets you view and extract both parts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Privacy first
&lt;/h2&gt;

&lt;p&gt;Everything runs client-side in your browser. Your photos never leave your device. No upload to a server, no cloud processing, no account needed. This matters because photos are personal. You should not have to trust a random website with your camera roll just to convert a file format.&lt;/p&gt;

&lt;h2&gt;
  
  
  What else it does
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;HEIC Viewer&lt;/strong&gt;: open and preview HEIC files directly in the browser&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open LIVP&lt;/strong&gt;: handle the LIVP format used by iPhone Live Photos&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Image Compressor&lt;/strong&gt;: resize and compress images for web or email&lt;/li&gt;
&lt;li&gt;Free, no ads, no watermarks on output files&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Try it at &lt;a href="https://livephotokit.com" rel="noopener noreferrer"&gt;livephotokit.com&lt;/a&gt;. Drop any HEIC or Live Photo file and see the result instantly.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>beginners</category>
      <category>apple</category>
    </item>
    <item>
      <title>How I Built a Meeting Time Zone Planner for Remote Teams With Zero Sign-Up</title>
      <dc:creator>刘金水｜用AI做小黄鱼</dc:creator>
      <pubDate>Sat, 11 Jul 2026 06:42:56 +0000</pubDate>
      <link>https://dev.to/liujinshui_ai/how-i-built-a-meeting-time-zone-planner-for-remote-teams-with-zero-sign-up-23j7</link>
      <guid>https://dev.to/liujinshui_ai/how-i-built-a-meeting-time-zone-planner-for-remote-teams-with-zero-sign-up-23j7</guid>
      <description>&lt;p&gt;Remote teams have one recurring headache: figuring out when everyone is actually awake. I built &lt;a href="https://zoneplan.net" rel="noopener noreferrer"&gt;zoneplan.net&lt;/a&gt; to solve this in under 30 seconds.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;You have teammates in New York, London, Bangalore, and Tokyo. Someone suggests a meeting at "2 PM my time." Now everyone has to mentally calculate or Google "2 PM EST to IST." Half the team gets it wrong. Someone joins at 2 AM their time.&lt;/p&gt;

&lt;h2&gt;
  
  
  How ZonePlan fixes this
&lt;/h2&gt;

&lt;p&gt;Add each person's city to the planner. Slide the time bar. Green means everyone is awake. Red means someone is sleeping. You find a meeting time that works for all time zones in seconds, not minutes of back-and-forth messages.&lt;/p&gt;

&lt;h2&gt;
  
  
  What else it does
&lt;/h2&gt;

&lt;p&gt;Beyond the meeting planner, ZonePlan includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;World Clock&lt;/strong&gt;: track 20+ cities with live time, date, and daylight saving status&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Time Zone Converter&lt;/strong&gt;: convert any time between any two zones with one click&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Abbreviation database&lt;/strong&gt;: EST, IST, PST, GMT, UTC and dozens more with current offsets&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Remote team scenarios&lt;/strong&gt;: Daily standup templates, cross-continent client meeting finders&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Built for distributed teams
&lt;/h2&gt;

&lt;p&gt;No login, no app install, no account. Open the URL, add cities, find a time. Works on mobile when you are messaging your team from the couch.&lt;/p&gt;

&lt;p&gt;The site uses IANA time zone data and handles daylight saving time transitions automatically. You do not need to know whether London is on GMT or BST right now. The tool handles it.&lt;/p&gt;

&lt;p&gt;Free at &lt;a href="https://zoneplan.net" rel="noopener noreferrer"&gt;zoneplan.net&lt;/a&gt;. I built it because my own remote team spent way too much time on "what time is it for you" messages.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>beginners</category>
      <category>remote</category>
    </item>
    <item>
      <title>I Made a Free Invoice Generator for Freelancers That Works Offline in Your Browser</title>
      <dc:creator>刘金水｜用AI做小黄鱼</dc:creator>
      <pubDate>Sat, 11 Jul 2026 06:38:05 +0000</pubDate>
      <link>https://dev.to/liujinshui_ai/i-made-a-free-invoice-generator-for-freelancers-that-works-offline-in-your-browser-41cg</link>
      <guid>https://dev.to/liujinshui_ai/i-made-a-free-invoice-generator-for-freelancers-that-works-offline-in-your-browser-41cg</guid>
      <description>&lt;p&gt;Freelancers and small business owners spend too much time on invoices. I built &lt;a href="https://invoicepad.net" rel="noopener noreferrer"&gt;invoicepad.net&lt;/a&gt; to make creating professional invoices as fast as filling out a form.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why another invoice tool
&lt;/h2&gt;

&lt;p&gt;Most free invoice tools have catches. Watermarks, page limits, forced sign-ups, or they store your client data on their servers. Some free tiers let you create three invoices then lock you out.&lt;/p&gt;

&lt;p&gt;invoicepad.net does none of that. No sign-up, no account, no email collection. No watermark on your PDF. Unlimited invoices, completely free. All data stays in your browser. Works offline once loaded.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;Fill in your business details once. Add line items with descriptions, quantities, and rates. The tool calculates totals, tax, and discounts automatically. Export as a clean PDF ready to send to clients. The invoice template is professional but minimal. Your client sees your logo, your terms, and the numbers. No branding from the tool itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Built for freelancers
&lt;/h2&gt;

&lt;p&gt;I built this after watching freelancer friends struggle with invoice tools that either cost too much or looked unprofessional. The goal was simple: fill in the blanks, download the PDF, send it. Three minutes from start to sent.&lt;/p&gt;

&lt;p&gt;Try it at &lt;a href="https://invoicepad.net" rel="noopener noreferrer"&gt;invoicepad.net&lt;/a&gt;. Would love feedback from other freelancers on what would make it more useful for your workflow.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>beginners</category>
      <category>freelancing</category>
    </item>
    <item>
      <title>I Built a Dog Vaccine Schedule Tool With Breed-Specific Timelines for New Puppy Owners</title>
      <dc:creator>刘金水｜用AI做小黄鱼</dc:creator>
      <pubDate>Sat, 11 Jul 2026 06:37:44 +0000</pubDate>
      <link>https://dev.to/liujinshui_ai/i-built-a-dog-vaccine-schedule-tool-with-breed-specific-timelines-for-new-puppy-owners-1gdo</link>
      <guid>https://dev.to/liujinshui_ai/i-built-a-dog-vaccine-schedule-tool-with-breed-specific-timelines-for-new-puppy-owners-1gdo</guid>
      <description>&lt;p&gt;Getting a new puppy is exciting and overwhelming. One of the first things you need to figure out is vaccinations: which shots, at what age, and in what order. I built &lt;a href="https://pupvax.com" rel="noopener noreferrer"&gt;pupvax.com&lt;/a&gt; to make this clear.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem with vaccine schedules
&lt;/h2&gt;

&lt;p&gt;Every vet gives slightly different advice. Online forums are full of conflicting information. And the paper handout from your breeder gets lost on day two.&lt;/p&gt;

&lt;p&gt;pupvax.com gives you a clear, breed-specific vaccine timeline. Enter your puppy's age and breed to see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Core vaccines required for all dogs (rabies, distemper, parvovirus, adenovirus)&lt;/li&gt;
&lt;li&gt;Non-core vaccines based on lifestyle and location (Lyme, bordetella, leptospirosis)&lt;/li&gt;
&lt;li&gt;Age-appropriate timing for each shot in the series&lt;/li&gt;
&lt;li&gt;Booster reminders and adult dog schedules&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Breed-specific pages
&lt;/h2&gt;

&lt;p&gt;Different breeds have different health considerations. A Labrador has different risks than a Chihuahua. The site includes breed-specific vaccine schedules that account for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Breed size and growth rate&lt;/li&gt;
&lt;li&gt;Common breed health predispositions&lt;/li&gt;
&lt;li&gt;Lifestyle factors (working dogs vs companion dogs)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  For senior dogs too
&lt;/h2&gt;

&lt;p&gt;Puppy shots get all the attention, but senior dogs need vaccine management too. The site covers titer testing as an alternative to automatic boosters and which vaccines older dogs may not need.&lt;/p&gt;

&lt;p&gt;Built with Next.js, runs entirely in the browser. No sign-up, no data collection. Free at &lt;a href="https://pupvax.com" rel="noopener noreferrer"&gt;pupvax.com&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Disclaimer: This is a reference tool. Always consult your veterinarian for your dog's specific vaccine plan.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
    <item>
      <title>I Built a Free TDEE Calculator That Actually Explains Every Number</title>
      <dc:creator>刘金水｜用AI做小黄鱼</dc:creator>
      <pubDate>Sat, 11 Jul 2026 06:37:34 +0000</pubDate>
      <link>https://dev.to/liujinshui_ai/i-built-a-free-tdee-calculator-that-actually-explains-every-number-3c8h</link>
      <guid>https://dev.to/liujinshui_ai/i-built-a-free-tdee-calculator-that-actually-explains-every-number-3c8h</guid>
      <description>&lt;p&gt;Tracking what you eat is the first step to any fitness goal. But most calorie calculators either oversimplify or drown you in ads. I built &lt;a href="https://freetdee.com" rel="noopener noreferrer"&gt;freetdee.com&lt;/a&gt; to be the calculator I actually wanted to use.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it calculates
&lt;/h2&gt;

&lt;p&gt;TDEE (Total Daily Energy Expenditure) is how many calories you burn in a day. Once you know that number, you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Eat below it to lose weight&lt;/li&gt;
&lt;li&gt;Eat at it to maintain&lt;/li&gt;
&lt;li&gt;Eat above it to build muscle&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The calculator uses the Mifflin-St Jeor equation, which is the most accurate formula for estimating basal metabolic rate without lab equipment. Then it multiplies by your activity level to get TDEE.&lt;/p&gt;

&lt;h2&gt;
  
  
  Beyond just one number
&lt;/h2&gt;

&lt;p&gt;What most calculators do not tell you is the breakdown. freetdee gives you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;BMR (Basal Metabolic Rate): what your body burns at complete rest&lt;/li&gt;
&lt;li&gt;TDEE at five activity levels from sedentary to athlete&lt;/li&gt;
&lt;li&gt;Macro split: how many grams of protein, carbs, and fat you need&lt;/li&gt;
&lt;li&gt;Calorie deficit planner: how fast you will reach your goal at different deficits&lt;/li&gt;
&lt;li&gt;BMI and protein intake recommendations&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Privacy by design
&lt;/h2&gt;

&lt;p&gt;All calculations run in your browser. No data is sent anywhere. No account, no email, no tracking. Your weight and goals stay on your device.&lt;/p&gt;

&lt;p&gt;The tool is completely free at &lt;a href="https://freetdee.com" rel="noopener noreferrer"&gt;freetdee.com&lt;/a&gt;. I built it because fitness calculators should be tools, not marketing funnels.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>beginners</category>
      <category>health</category>
    </item>
    <item>
      <title>I Built a Baby Growth Percentile Calculator Using WHO and CDC Reference Data</title>
      <dc:creator>刘金水｜用AI做小黄鱼</dc:creator>
      <pubDate>Sat, 11 Jul 2026 06:20:04 +0000</pubDate>
      <link>https://dev.to/liujinshui_ai/i-built-a-baby-growth-percentile-calculator-using-who-and-cdc-reference-data-3nh7</link>
      <guid>https://dev.to/liujinshui_ai/i-built-a-baby-growth-percentile-calculator-using-who-and-cdc-reference-data-3nh7</guid>
      <description>&lt;p&gt;Pediatricians use growth charts to track how babies are growing. But reading those charts is not intuitive. I built &lt;a href="https://babypercent.com" rel="noopener noreferrer"&gt;babypercent.com&lt;/a&gt; to make percentile calculations clear for parents.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why growth percentiles matter
&lt;/h2&gt;

&lt;p&gt;When a doctor says your baby is in the 75th percentile for weight, what does that actually mean? It means out of 100 babies of the same age and sex, 74 weigh less and 25 weigh more. The number itself is not good or bad. It is just a reference point.&lt;/p&gt;

&lt;p&gt;But here is the thing: most parents never see the raw numbers behind the percentile. They hear a number and either worry or feel relieved without understanding the context.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the calculator works
&lt;/h2&gt;

&lt;p&gt;The tool uses WHO child growth standards for ages 0 to 24 months and CDC reference data for ages 2 to 20 years. You enter age, sex, weight, height, and optionally head circumference. The calculator returns percentiles and a visual chart showing where your child falls on the growth curve.&lt;/p&gt;

&lt;p&gt;Key design decisions: WHO data for the first two years because it represents optimal growth under ideal conditions. CDC data after age two because it reflects the actual US population distribution. No account needed, no data stored, works on mobile at the pediatrician office.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I learned about health data
&lt;/h2&gt;

&lt;p&gt;Medical reference data is surprisingly messy to work with. The WHO publishes LMS parameters (lambda, mu, sigma) that require statistical transformation to convert raw measurements into percentiles. The math is not hard but getting it right matters. A small error in the z-score calculation shifts the percentile by several points.&lt;/p&gt;

&lt;p&gt;The tool is free at &lt;a href="https://babypercent.com" rel="noopener noreferrer"&gt;babypercent.com&lt;/a&gt;. I built it because I wanted to understand my own kids' growth charts better. Hope it helps other parents too.&lt;/p&gt;

&lt;p&gt;Disclaimer: This is a reference tool, not medical advice. Talk to your pediatrician about your child's growth.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>beginners</category>
      <category>health</category>
    </item>
  </channel>
</rss>
