id: e723b27ae89541beaeab372e41c967e2
parent_id: 
item_type: 1
item_id: 1dcbce4d0dc1406c92feee68a4e8f0f3
item_updated_time: 1764345644803
title_diff: "[{\"diffs\":[[1,\"Gemini应用开发分享3：AI分析师“三件套”\"]],\"start1\":0,\"start2\":0,\"length1\":0,\"length2\":24}]"
body_diff: "[{\"diffs\":[[1,\"<html>\\\r\\\n<head>\\\r\\\n  <title>Gemini应用开发分享3：AI分析师“三件套”</title>\\\r\\\n  <basefont face=\\\"微软雅黑\\\" size=\\\"2\\\" />\\\r\\\n  <meta http-equiv=\\\"Content-Type\\\" content=\\\"text/html;charset=utf-8\\\" />\\\r\\\n  <meta name=\\\"exporter-version\\\" content=\\\"YXBJ Windows/608924 (zh-CN, DDL); Windows/10.0.0 (Win64); EDAMVersion=V2;\\\"/>\\\r\\\n  <meta name=\\\"content-class\\\" content=\\\"yinxiang.peso.superNote\\\"/>\\\r\\\n  <meta name=\\\"application-data:yinxiang.noteLayout\\\" content=\\\"{\\\"lineSpace\\\":\\\"recommend\\\",\\\"paragraphSpace\\\":\\\"recommend\\\"}\\\"/>\\\r\\\n  <style>\\\r\\\n\\tbody, td {\\\r\\\n\\t  font-family: 微软雅黑;\\\r\\\n\\t  font-size: 12pt;\\\r\\\n\\t}\\\r\\\n  </style>\\\r\\\n</head>\\\r\\\n<body>\\\r\\\n<a name=\\\"47959\\\"></a>\\\r\\\n<h1>Gemini应用开发分享3：AI分析师“三件套”</h1>\\\r\\\n\\\r\\\n<div><span style=\\\"\\\"><div style=\\\"max-width: 700px;\\\"><p></p><div style=\\\"--en-blockquote: true; box-sizing: border-box; border-left: 3px solid #b4c0cc; background-position: initial initial; background-repeat: initial initial;\\\"><div>原文链接: <a href=\\\"https://mp.weixin.qq.com/s?__biz=MzAxNjg0NDM2OQ==&amp;mid=2658186415&amp;idx=1&amp;sn=cfd02ecbf5c6f2e0f3aae64a470ad29b&amp;chksm=81c6664c12283aeca56f4b276b2115504e290ad9a8a2a7461a01682de86d2d1d271d59fb709d&amp;mpshare=1&amp;scene=1&amp;srcid=1111L5kfsVoECcyb7wAlQdpt&amp;sharer_shareinfo=7a2c4feac76d3db065e616eede04f38b&amp;sharer_shareinfo_first=7a2c4feac76d3db065e616eede04f38b#rd\\\"><span>https://mp.weixin.qq.com/s?__biz=MzAxNjg0NDM2OQ==&amp;mid=265818...</span></a></div></div><p></p><div style=\\\"-webkit-tap-highlight-color: transparent;\\\"><div style=\\\"-webkit-tap-highlight-color: transparent;\\\"><div style=\\\"-webkit-tap-highlight-color: transparent;\\\"><div style=\\\"-webkit-tap-highlight-color: transparent;\\\"><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">原创</span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\"> 道明 </span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\"><a style=\\\"-webkit-tap-highlight-color: transparent;\\\"> 数字游牧日常 </a></span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\"><em style=\\\"-webkit-tap-highlight-color: transparent;\\\"></em></span></div><div style=\\\"-webkit-tap-highlight-color: transparent;\\\"><span style=\\\"-webkit-tap-highlight-color: transparent;\\\"><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">因为一些个人“失误”，发送时间，标题等，上一个分享并没有达到新的解锁要求。同时，也变成了自己给自己挖的一个小坑。</span></span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\"><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">没关系了，继续分享之路，对我而言，分享逐渐变成一种另类的动力：因为做好的已经分享出来了，自己就必须进一步优化改进，或者做出更好的工具。</span></span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\"><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">所以，今天一次性分享三项工具，在之前被我称为分析师三件套的工具：Open Analyst, Open Narrator, Open Renderer。</span></span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\"><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">分别完成AI报告撰写，PPT及解说生成，视频渲染。</span></span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\"><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">我已经把相关项目上传了之前的github项目,当然命名有一些差异：</span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">https://github.com/dmquant/fabric 。</span></span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\"><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">同时最近发现Google对AI Studio的注册要求放的很宽松了，好像只要有Google账号就可以食用了，我也在每个项目下直接贴出Build的分享地址，有Google账号的就可以自己体验了。</span></span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\"><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">1. Open Analyst（</span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">https://ai.studio/apps/drive/1iSX7ycRxNhMNaFkBAy6CJ4dNAF4aPROq）</span></span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\"><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">AI股票分析师：输入任意股票代码，即可进行深入分析（Deep Dive）或者简要分析（General），如果有FMP的API Key，也可以选择使用FMP数据。</span></span><span style=\\\"-webkit-tap-highlight-color: transparent; text-align: center;\\\"><img src=\\\":/d4cd461766f9491692a6c00b48c3b3ee\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks: %7B%22align%22%3A%22center%22%7D; -webkit-tap-highlight-color: transparent; width: auto;\\\" width=\\\"auto\\\"/></span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\"><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">今天截图时因为Gemini额度紧张了，就用一个一般分析的界面做一下展示。当然也有完全开启了FMP数据和使用Deep Dive模式的截图（不同公司），一次研究耗费20次左右的Gemini API调用，大家可以计算着来。</span></span><span style=\\\"-webkit-tap-highlight-color: transparent; text-align: center;\\\"><img src=\\\":/321c6a282feb4e7aaf97a29cbe5823ef\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks: %7B%22align%22%3A%22center%22%7D; -webkit-tap-highlight-color: transparent; width: auto;\\\" width=\\\"auto\\\"/></span><span style=\\\"-webkit-tap-highlight-color: transparent; text-align: center;\\\"><img src=\\\":/7a6c32a512d943e29154d49d148060eb\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks: %7B%22align%22%3A%22center%22%7D; -webkit-tap-highlight-color: transparent; width: auto;\\\" width=\\\"auto\\\"/></span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\"><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">有朋友问我除了美国市场的可不可以，答案是当然可以，比如&quot;600???.SS&quot;。</span></span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\"><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">在公众号平台上，我只分享技术和工具，所以，不构成任何建议。</span></span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\"><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">一份研究会有多个文件，深度模式会有每一个方面问题的详细分析和网页可视化，还会有日志，选择export report按钮，选择local方式，就会下载一个压缩包。</span></span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\"><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">解压后，其实类似于一个小网站：打开index.html即浏览网页，如果是深度研究模式，每一个部分也都做了网页可视化，可以跳转。</span></span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\"><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">支持中英文双语，在网页上点右上角语言按钮即可切换，不过有时候代码会有些小问题，导致中文版本的文字显示不全等。</span></span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\"><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">那么，是否可以直接用中文？在处理的全部流程里使用的都是英文，搜索和分析效果会更好一点，所以，建议还是使用英文。中文则通过模型翻译后作为多语言支持的选项。</span></span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\"><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">实际上，虽然网页越来越方便，但是很多人还是习惯于使用ppt形式的内容，这是第二个工具Open Narrator开发的初衷。</span></span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\"><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">2. Open Narrator（</span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">https://ai.studio/apps/drive/1uZ4UCUG9VsRbs2tlCQOFZOnoszQcump5</span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">）</span></span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\"><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">AI解说员：分成两大部分，PPT生成和语音解说。首先将想要展现的文字复制黏贴或者直接上传。如果需要生成中文，那么在最开始写一句&quot;slides in Simplified Chinese&quot;即可。同时提供了六种预设风格供选择。</span></span><span style=\\\"-webkit-tap-highlight-color: transparent; text-align: center;\\\"><img src=\\\":/37f19f2915534927b06a836a28ff4b10\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks: %7B%22align%22%3A%22center%22%7D; -webkit-tap-highlight-color: transparent; width: auto;\\\" width=\\\"auto\\\"/></span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\"><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">以上面的一般分析的报告结果展示为例：</span></span><span style=\\\"-webkit-tap-highlight-color: transparent; text-align: center;\\\"><img src=\\\":/102fc9744a4846559e7fdc0081a63386\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks: %7B%22align%22%3A%22center%22%7D; -webkit-tap-highlight-color: transparent; width: auto;\\\" width=\\\"auto\\\"/></span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\"><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">考虑到很多时候我们需要对PPT内容特别是文字进行些修改，做了一个相对简单的编辑功能，右侧PPT中的每个素材都可以点击，选中后会在左侧出现对应的代码，可以直接修改，也可以在下面的对话框里输入一些修改建议，让Gemini重做（“老板”肯定喜欢这么干，哪怕只要在上面简单的改两个字都不如下命令来的爽）。</span></span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\"><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">PPT加入了动态效果，有时候修改后，动态效果会失灵，主要是还是会不可避免的改动到了一些代码的细节部分，这时候在左上角有代码查看的按钮。“牛马”还是直接改代码来的香。</span></span><span style=\\\"-webkit-tap-highlight-color: transparent; text-align: center;\\\"><img src=\\\":/1a8a607947b8450cae123792ce6df517\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks: %7B%22align%22%3A%22center%22%7D; -webkit-tap-highlight-color: transparent; width: auto;\\\" width=\\\"auto\\\"/></span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\"><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">当然，对于PPT显示还可以选择不同的设备：桌面，平板，手机横屏，手机竖屏。这个功能就是为了截图和录屏方便。</span></span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\"><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">当然，也可以选择下载。但是还请等等，体会该工具最好的部分：AI语音解读。</span></span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\"><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">点击右上角“voice over”按钮，选择generate，一分钟左右后，语音播报文字稿就好了。这个文字的语言是跟着PPT走的，也可以编辑。</span></span><span style=\\\"-webkit-tap-highlight-color: transparent; text-align: center;\\\"><img src=\\\":/6cceda8baed24772a5b0879d49fc95d0\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks: %7B%22align%22%3A%22center%22%7D; -webkit-tap-highlight-color: transparent; width: auto;\\\" width=\\\"auto\\\"/></span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\"><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">修改好后，选择“Generate Audio”，生成语音。不需要多长时间等待，语音就好了。页面会多出一个播放界面。我最喜欢的部分来了，选上“autoplay”，然后点击播放，或者播放键左边的小按钮（从头开始），PPT自动翻页加语音同步播报就来了。</span></span><span style=\\\"-webkit-tap-highlight-color: transparent; text-align: center;\\\"><img src=\\\":/075a7d7d3cbb4eb881491acd79cfd325\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks: %7B%22align%22%3A%22center%22%7D; -webkit-tap-highlight-color: transparent; width: auto;\\\" width=\\\"auto\\\"/></span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\"><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">我为什么最喜欢，因为这时候我就可以录屏了。当然，为了更好的录屏效果，大家最好安装一个blackhole 2ch，直接录系统声音，不会有任何外部声音干扰（每到这个时候，我既可以一边录屏，还可以一边看新闻或者跟家人说话）。</span></span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\"><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">当然，这个工具完全可以独立，输入内容根本不限于什么报告，任何文字都行。</span></span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\"><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">我还强化了下载功能，选择右上角download就会下载一个包含所有内容的zip压缩包（是的，生成的语音也会以音频文件包含在内）。</span></span><span style=\\\"-webkit-tap-highlight-color: transparent; text-align: center;\\\"><img src=\\\":/3746c24dc556494e85d519c24479fb02\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks: %7B%22align%22%3A%22center%22%7D; -webkit-tap-highlight-color: transparent; width: auto;\\\" width=\\\"auto\\\"/></span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\"><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">其实，工具层面，本来到这里就可以了。可是我停不住，我想把录屏的工作都省了，毕竟录屏时虽然可以开小差，但是还是得等语音全部播完，还是要盯着屏幕或者听声音来操作开始结束。如果可以完全自动出视频，那就更好了。</span></span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\"><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">是的，这是一个很好的初衷，甚至设计阶段，我还把它想象成一个简化版的“非编”，还可以加背景音乐，来点emoji……</span></span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\"><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">3. Open Renderer（</span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">https://ai.studio/apps/drive/12ZSTF0H7Pm8E9WUxBKXu42MZTFM8h9OO）</span></span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\"><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">视频渲染（暂时没有AI）：接前面，愿望是美好的，现实是残酷的。因为如果我要把它作为Gemini AI Studio Build中的三件套工具收尾的话，我就不需使用headless的方式。ffmpeg渲染不是不可以，但是要么购买三方的付费服务（视频渲染很消耗算力的），要么自己使用cloudflare布一个可以使用ffmpeg的container，也很耗资源。还有种方式就是让web使用到local的gpu或者cpu能力，这个对build而言更难了。所以，反而这个应用反而是花费我最多时间的。最后我使用了简化方案，技术部分不再深入讨论了，直接看功能。</span></span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\"><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">首先是上传文件，直接把上一个ppt工具的压缩包上传即可。</span></span><span style=\\\"-webkit-tap-highlight-color: transparent; text-align: center;\\\"><img src=\\\":/92d4fbe3acb44b34b3afc446ddc379ff\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks: %7B%22align%22%3A%22center%22%7D; -webkit-tap-highlight-color: transparent; width: auto;\\\" width=\\\"auto\\\"/></span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\"><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">然后，经过一些预处理后，就可以看到ppt和对应的包含语音音频文件的timeline。也可以选择设备。</span></span><span style=\\\"-webkit-tap-highlight-color: transparent; text-align: center;\\\"><img src=\\\":/041addfd3bb944599c89dc06bab5384a\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks: %7B%22align%22%3A%22center%22%7D; -webkit-tap-highlight-color: transparent; width: auto;\\\" width=\\\"auto\\\"/></span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\"><span style=\\\"-webkit-tap-highlight-color: transparent;\\\"><img src=\\\":/d0c22f00ebde4ff2a357105113826e39\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks: %7B%22align%22%3A%22center%22%7D; -webkit-tap-highlight-color: transparent; width: auto;\\\" width=\\\"auto\\\"/></span></span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\"><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">选择“Generate &amp; Download Video”后，应用会开始逐页处理，处理完之后会直接下载一个webm文件，是的，webm，可以在web里放，但是如果要出视频的话，还是需要ffmpeg。不过就这样吧，毕竟相比录屏还是降低了不确定性和人工干预。</span></span><span style=\\\"-webkit-tap-highlight-color: transparent; text-align: center;\\\"><img src=\\\":/f370acc0f7fe4c7d8baaa9a45198f9a2\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks: %7B%22align%22%3A%22center%22%7D; -webkit-tap-highlight-color: transparent; width: auto;\\\" width=\\\"auto\\\"/></span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\"><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">好了，终于写完了。</span></span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\"><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">其实三个工具里，1和2是完全可以独立的，2和3因为文件格式的原因，我做了紧耦合。</span></span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\"><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">在以上所有的生成工作中，当然都不是一步到位的，或长或短，每一个应用都经历了不短的生成、修改、优化的时间。</span></span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\"><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">虽然代码最终都是由Gemini完成的，但我的工作量一点也不小，我需要做设计，帮助改一些不合理的项目结构，需要进行功能优化，需要研究一些可行的方案后，给Gemini明确的指令。</span></span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\"><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">绝大多数时间，我都是站在自己是用户的视角上去考虑每个问题的。如果说，什么时候确实是从开发者角度考虑的话，那么就是在应用3实现视频渲染功能时做的取舍。作为开发者的自己很快和作为用户的自己达成了“完美的妥协”。</span></span><span style=\\\"-webkit-tap-highlight-color: transparent;\\\"><span style=\\\"-webkit-tap-highlight-color: transparent;\\\">庆幸，自己是自己的用户，也庆幸，自己的用户是自己。</span></span></div></div></div></div></div></span>\\\n</div></body></html>\\u0000\"]],\"start1\":0,\"start2\":0,\"length1\":0,\"length2\":14462}]"
metadata_diff: {"new":{"id":"1dcbce4d0dc1406c92feee68a4e8f0f3","parent_id":"f67288c3a0be4374b5d532b5dcc3aabc","latitude":"0.00000000","longitude":"0.00000000","altitude":"0.0000","author":"","source_url":"","is_todo":0,"todo_due":0,"todo_completed":0,"source":"joplin-desktop","source_application":"net.cozic.joplin-desktop","application_data":"","order":1764348819626,"markup_language":2,"is_shared":0,"share_id":"","conflict_original_id":"","master_key_id":"","user_data":"","deleted_time":0},"deleted":[]}
encryption_cipher_text: 
encryption_applied: 0
updated_time: 2025-11-28T21:03:32.223Z
created_time: 2025-11-28T21:03:32.223Z
type_: 13