当前位置: 首页 > article >正文

一个免费、轻量的 Typora 图床方案:Cloudflare R2 + Python——十分钟完成

一个免费、轻量的 Typora 图床方案Cloudflare R2 Python十分钟搞定平时我主要用 Typora 写 Markdown一直想要一个尽量简单的图床方案粘贴图片后自动上传自动回填链接不想额外折腾一堆服务和配置。我自己使用的轻量化方案Cloudflare R2负责存储图片Python 脚本负责上传文件Typora负责触发上传并回填图片链接这套方案很适合个人日常写作优点也很直接免费起步配置简单不需要自己搭服务能直接融进 Typora 的写作流程如果你本身已经有 Cloudflare 账号这套方式基本可以很快用起来。为什么选 Cloudflare R2Cloudflare R2 很适合做个人图床。根据 Cloudflare 官方文档R2 当前免费层包含每月10 GB-month存储、100 万Class A 请求、1000 万Class B 请求而且标准存储的公网流量免费。对个人写作、博客配图、知识库场景来说这个额度通常已经够用了。如果你在 Cloudflare 里还有自己的域名还可以把 R2 bucket 直接绑定到自定义域名上访问地址更自然也更适合长期使用。一、准备工作开始前你需要准备一个 Cloudflare 账号Python 3.10Typora二、创建 R2 bucket登录 Cloudflare 后进入R2 Object Storage创建一个新的 bucket记下 bucket 名称先把存储空间准备好后面上传脚本会直接用到它。三、创建 R2 API Key接下来需要给本地脚本一个可读写 R2 的凭证。在 Cloudflare 后台创建 R2 API Token / Access Key拿到这两个值Access Key IDSecret Access Key后面的 Python 脚本会通过 R2 的 S3-compatible API 直接上传图片。12四、给 bucket 配置公开访问地址这一步决定上传后的图片能不能直接访问。方案 A绑定自定义域名如果你已经把域名托管在 Cloudflare推荐直接把 bucket 绑定到自己的域名比如https://image.example.com这样有几个好处地址更整洁更适合长期使用可以直接配合 Cloudflare 的缓存能力方案 B先用r2.dev开发地址如果你只是先测试流程也可以直接开启 bucket 的公开开发地址。这样 Cloudflare 会给你一个r2.dev地址可以先用来验证上传链路是否正常。五、下载并配置本地脚本本地上传部分我使用的是一个 Python 脚本项目。我已经把它开源到了 GitHub可以直接拉下来使用https://github.com/jiachaoDing/CF-image-Typora.git把项目放到本地后进入目录执行python-m venv.venv.\.venv\Scripts\Activate.ps1 python-m pip install-r.\requirements.txt然后在.env里填写你自己的配置ACCOUNT_IDACCESS_KEY_IDSECRET_ACCESS_KEYBUCKET_NAMEPUBLIC_BASE_URL其中PUBLIC_BASE_URL就是上一步配置好的公开访问地址如果你绑定了自定义域名就填你的域名如果你先用r2.dev就填对应的开发地址可选让 AI 直接帮你生成上传脚本如果你不想直接使用我的仓库也可以把需求整理清楚后直接丢给 AI让它帮你生成一个最小可用的 Typora 上传脚本。核心思路其实很简单Typora 会把图片路径作为命令行参数传给脚本脚本读取本地图片文件通过 Cloudflare R2 的 S3 兼容接口上传图片上传成功后把图片公开 URL 输出到标准输出Typora 读取这行输出并自动回填到 Markdown 中你可以把下面这段 prompt 直接发给 AI让它帮你生成脚本。可直接复制的 Prompt请帮我写一个可直接用于 Typora Custom Command 的 Python 3.10 脚本用来把本地图片上传到 Cloudflare R2并把最终图片 URL 输出到标准输出。 需求如下 1. 使用 Python 实现。 2. 通过命令行参数接收一个或多个本地图片路径例如 python upload_to_r2.py image1.png image2.jpg 3. 使用 Cloudflare R2 的 S3-compatible API 上传文件。 4. 配置项从 .env 文件中读取包含 - ACCOUNT_ID - ACCESS_KEY_ID - SECRET_ACCESS_KEY - BUCKET_NAME - PUBLIC_BASE_URL 5. 上传后的文件名需要避免冲突建议按“日期目录 时间戳 随机字符串”的方式生成例如 images/2026/04/10/20260410-170501-ab12cd34.png 6. 保留原始文件扩展名。 7. 上传成功后针对每个文件向标准输出输出最终可访问的 URL每行一个格式适配 Typora Custom Command。 8. 如果上传失败需要把错误输出到标准错误并返回非 0 退出码。 9. 代码要结构清晰包含必要注释。 10. 使用常见、简单、稳定的依赖优先使用 boto3、python-dotenv。 11. 请同时给出 - 完整可运行的 upload_to_r2.py - 对应的 requirements.txt - 一个 .env.example 12. 请额外说明 Typora 中 Custom Command 应该如何配置。 13. 假设运行环境是 WindowsTypora 通过下面这种形式调用 project-path\\.venv\\Scripts\\python.exe project-path\\upload_to_r2.py 14. 请尽量保证脚本是最小可用版本不要引入复杂框架不要过度设计。 15. 请确保最终输出的 URL 拼接方式正确避免出现重复斜杠或路径错误。 16. 如果有必要请加入基本的文件类型校验和文件不存在校验。 17. 请在代码中处理 Windows 路径。 18. 请直接输出完整结果不要只给思路。如果你只是想尽快用起来直接用现成仓库会更省事如果你希望脚本完全可控或者想顺手练一下这类自动化工具用 AI 自己生成一份也是很好的选择。六、在 Typora 里配置上传命令Typora 支持通过Custom Command自定义图片上传。根据 Typora 官方说明Typora 会把图片路径传给你配置的命令并从标准输出中读取返回的 URL。在 Typora 中打开Preferences - Image上传方式选择Custom Command命令填写project-path\.venv\Scripts\python.exe project-path\upload_to_r2.py把project-path替换成你自己的项目目录即可。配置完成后Typora 在粘贴图片时就会自动调用这个脚本上传图片。七、先手动测试一次正式交给 Typora 之前建议先手动测试python.\upload_to_r2.py.\test.png如果配置正确终端会输出一行图片 URL。把这个 URL 粘到浏览器里能正常打开就说明上传链路已经通了。八、开始在 Typora 中使用现在回到 Typora直接粘贴图片即可。如果一切正常最终效果就是图片自动上传到 Cloudflare R2Typora 自动把图片链接写回 Markdown后续文章里的图片都直接走你的图床对日常写作来说这个流程已经足够顺手。九、总结如果你平时主要用 Typora 写 Markdown又想要一个尽量简单、免费起步、不需要自己搭服务的图床方案那么这套Cloudflare R2 Python Typora的组合是很合适的。它最大的优点不是“功能很多”而是足够轻、足够稳、足够贴近日常写作流程。图片上传不再是单独要处理的一步而是自然融进了你的 Markdown 写作过程里。参考链接Cloudflare R2 Pricinghttps://developers.cloudflare.com/r2/pricing/Cloudflare R2 Public Buckets / Custom Domainhttps://developers.cloudflare.com/r2/data-access/public-buckets/Typora Upload Image / Custom Commandhttps://support.typora.io/Upload-Image/

相关文章:

一个免费、轻量的 Typora 图床方案:Cloudflare R2 + Python——十分钟完成

一个免费、轻量的 Typora 图床方案:Cloudflare R2 Python,十分钟搞定 平时我主要用 Typora 写 Markdown,一直想要一个尽量简单的图床方案: 粘贴图片后自动上传,自动回填链接,不想额外折腾一堆服务和配置。…...

Vibe Coding:用“氛围感”重塑编程

Vibe Coding(氛围编程)是由OpenAI联合创始人Andrej Karpathy于2025年初提出的编程新范式,核心是通过自然语言描述需求,由AI生成代码,开发者角色从"编码者"转变为"需求引导者"和"结果优化者&q…...

GetQzonehistory终极指南:5分钟永久备份你的QQ空间记忆

GetQzonehistory终极指南:5分钟永久备份你的QQ空间记忆 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 在这个数字记忆易逝的时代,QQ空间承载了我们太多的青春回…...

百川2-13B-对话模型WebUI快速部署:无需Docker,原生Python 3.10环境直跑

百川2-13B-对话模型WebUI快速部署:无需Docker,原生Python 3.10环境直跑 1. 开篇:为什么选择百川2-13B-Chat-4bits? 如果你正在寻找一个能在自己电脑上流畅运行的中文大语言模型,百川2-13B-Chat-4bits版本可能就是你想…...

一键部署后:BERT文本分割模型健康检查与监控

一键部署后:BERT文本分割模型健康检查与监控 部署一个BERT文本分割模型,看着服务成功启动,这只是万里长征的第一步。接下来,你可能会有这样的疑问:我的服务真的在稳定运行吗?它处理请求的速度够快吗&#…...

embeddinggemma-300m部署步骤详解:从pull模型到WebUI验证全流程

embeddinggemma-300m部署步骤详解:从pull模型到WebUI验证全流程 1. 环境准备与ollama安装 在开始部署embeddinggemma-300m之前,我们需要先准备好运行环境。这个模型对硬件要求相对友好,普通笔记本电脑或台式机都能运行。 系统要求&#xf…...

白嫖 1000 次!这款毫秒级企业工商数据 API 实测,真香!

作为一名长期在需求一线摸爬滚打的后端开发,最头疼的就是接各种第三方接口。尤其是企业工商数据这块,由于数据量大、更新快,很多大厂的 API 授权费动辄上万,对于咱们这种接个外包、做个 Demo 验证或者初创项目的团队来说&#xff…...

Cursor报错user is unauthorized?3种快速解决方法(附官方推荐安装指南)

Cursor报错"user is unauthorized"的深度排查与解决方案 1. 理解"user is unauthorized"错误的本质 当你满怀期待地打开Cursor准备开始一天的编码工作,却突然看到"user is unauthorized"的红色错误提示时,那种感觉就像被…...

嵌入式常见的面试题1

在嵌入式 Linux 应用层,使用 TCP socket 发送数据时,write()/send() 返回成功是否意味着数据已送达对端?如何确保对端应用层确实收到了数据?考察点:TCP 协议栈缓冲区机制、可靠传输的误解、应用层确认协议。参考答案&a…...

深度解析:ComfyUI-Manager节点冲突检测的5种技术解决方案与架构设计

深度解析:ComfyUI-Manager节点冲突检测的5种技术解决方案与架构设计 【免费下载链接】ComfyUI-Manager ComfyUI-Manager is an extension designed to enhance the usability of ComfyUI. It offers management functions to install, remove, disable, and enable …...

2026移动应用质量监控Bugly:全平台异常定位与统一管理实践

2026移动应用质量监控Bugly:全平台异常定位与统一管理实践 在移动应用开发进入多端融合与高频迭代的背景下,复杂运行环境使崩溃、性能劣化等问题更易隐蔽扩散,企业诉求已从被动修复转向主动、统一的质量管控。Bugly作为腾讯推出的专业应用质量…...

Omni-Vision Sanctuary前端交互设计:基于Web的实时图像生成演示系统

Omni-Vision Sanctuary前端交互设计:基于Web的实时图像生成演示系统 1. 项目背景与核心价值 想象一下这样的场景:设计师需要快速生成产品概念图,营销团队等待社交媒体配图,而开发人员正在调试AI模型的参数。传统工作流程中&…...

Windows任务栏美化终极指南:TranslucentTB让你的桌面秒变高级感

Windows任务栏美化终极指南:TranslucentTB让你的桌面秒变高级感 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 还在忍受Wind…...

154W,确实可以封神了!!

去年DeepSeek爆火,生成式AI和大模型技术呈现爆发式增长,也让算法工程师重新成了炙手可热的岗位,岗位薪资远超很多运维、嵌入式、前后端岗位,在程序员中稳居前列。AI的快速发展也给很多程序员带来更多的机会,很多公司都…...

为什么AI时代真正稀缺的不是代码, 而是 Idea. 我因此做了一个“发现+判断”的项目

最近做项目的时候, 我越来越强烈地感觉到一件事: 现在真正卡住很多人的, 可能已经不是“怎么做”, 而是“到底做什么”。 以前做一个产品, 最大门槛通常是执行。 不会写前端, 不会搭后端, 不会部署, 不会把整个闭环跑起来。那个时候, 真正稀缺的是开发能力。 但这两年情况已…...

终极免费学术论文获取指南:如何用Unpaywall一键解锁付费墙

终极免费学术论文获取指南:如何用Unpaywall一键解锁付费墙 【免费下载链接】unpaywall-extension Firefox/Chrome extension that gives you a link to a free PDF when you view scholarly articles 项目地址: https://gitcode.com/gh_mirrors/un/unpaywall-exte…...

局域网视频软件BeeWorks Meet

对于必须在内网进行高清视频沟通的场景,BeeWorks Meet 是一款定位清晰、功能全面的私有化视频会议解决方案。它最大的特点在于,能将所有会议数据都安全地保留在企业内部网络,让企业对自己的核心会议内容拥有完全的自主权。📌 BeeW…...

电商客服+导购智能体的设计与开发投

这个代码的核心功能是:基于输入词的长度动态选择反义词示例,并调用大模型生成反义词,体现了 “动态少样本提示(Dynamic Few-Shot Prompting)” 与 “上下文长度感知的示例选择” 的能力。 from langchain.prompts impo…...

寻音捉影·侠客行行业落地:教育机构快速提取在线课程中所有‘课后习题’出现时刻

寻音捉影侠客行行业落地:教育机构快速提取在线课程中所有‘课后习题’出现时刻 1. 教育机构的音频处理痛点 在线教育机构每天产生大量课程录音,老师们经常需要在长达数小时的音频中找到特定内容。最常见的一个需求就是定位所有"课后习题"出现…...

如何重新激活微信网页版:wechat-need-web插件实战指南

如何重新激活微信网页版:wechat-need-web插件实战指南 【免费下载链接】wechat-need-web 让微信网页版可用 / Allow the use of WeChat via webpage access 项目地址: https://gitcode.com/gh_mirrors/we/wechat-need-web 微信网页版无法登录是许多用户在办公…...

别再为离线推送角标烦恼了!手把手教你搞定uniPush2.0的badgeClass配置(附正确路径查找方法)

深度解析uniPush2.0角标配置:从原理到实战避坑指南 在移动应用开发中,推送功能的重要性不言而喻。而推送消息的角标显示,作为用户体验的关键细节,却常常成为开发者头疼的问题。特别是当应用需要适配不同厂商设备时,角标…...

bootstrap怎么修改折叠面板(Accordion)的边框颜色

Accordion默认边框颜色来自.accordion-item的border-color,继承自Sass变量$border-color或$accordion-border-color,作用于border-top和border-bottom。Accordion 默认边框颜色从哪来bootstrap 的 accordion 边框颜色默认由 .accordion-item 的 border-c…...

网盘直链解析技术:如何绕过客户端限制实现高速下载

网盘直链解析技术:如何绕过客户端限制实现高速下载 【免费下载链接】baiduyun 油猴脚本 - 一个免费开源的网盘下载助手 项目地址: https://gitcode.com/gh_mirrors/ba/baiduyun 你是否曾因网盘客户端下载限速而苦恼?是否在无法安装客户端的环境中…...

企业级语音识别方案:Qwen3-ASR-1.7B部署与集成实战解析

企业级语音识别方案:Qwen3-ASR-1.7B部署与集成实战解析 1. 企业级语音识别需求与方案选型 在数字化转型浪潮中,语音识别技术已成为企业提升运营效率的关键工具。Qwen3-ASR-1.7B作为阿里通义千问推出的中等规模语音识别模型,凭借17亿参数的精…...

如何掌握RePKG:Wallpaper Engine资源逆向工程的终极工具指南

如何掌握RePKG:Wallpaper Engine资源逆向工程的终极工具指南 【免费下载链接】repkg Wallpaper engine PKG extractor/TEX to image converter 项目地址: https://gitcode.com/gh_mirrors/re/repkg RePKG是一款专为Wallpaper Engine设计的开源命令行工具&…...

你花了几个月搭的 RAG 知识库,可能从一开始方向就错了:Karpathy 的 LLM Wiki 模式全解析

知识管理这个概念比计算机还早。 1945 年,Vannevar Bush 在《Atlantic Monthly》上发了篇文章叫《As We May Think》,提出了一个叫 Memex 的概念——一台可以装载所有书籍和记录,并能把各种材料串连起来的机器。 这大概就是"个人知识库&…...

Windows用户必看:3分钟免费获取macOS风格鼠标指针完整指南

Windows用户必看:3分钟免费获取macOS风格鼠标指针完整指南 【免费下载链接】macOS-cursors-for-Windows Tested in Windows 10 & 11, 4K (125%, 150%, 200%). With 2 versions, 2 types and 3 different sizes! 项目地址: https://gitcode.com/gh_mirrors/ma/…...

Python如何在异步中运行同步代码_使用loop.run_in_executor处理计算

async函数中不可直接调用同步CPU密集型代码,因其会阻塞事件循环导致异步失效;应使用run_in_executor配合线程池或进程池执行,注意参数传递、异常处理与资源清理。为什么不能直接在 async 函数里调用同步 CPU 密集型代码因为 async 函数运行在…...

5个技巧,让Qwen-Image-2512-SDNQ帮你生成电商级产品图

5个技巧,让Qwen-Image-2512-SDNQ帮你生成电商级产品图 1. 为什么选择Qwen-Image-2512-SDNQ生成产品图 在电商运营中,高质量的产品图片直接影响转化率。传统摄影需要专业设备、场地和后期处理,成本高且周期长。Qwen-Image-2512-SDNQ模型通过…...

ug nx软件安装的几种错误报警

安装路径包含中文或特殊字符NX软件安装路径中若包含中文、空格或特殊符号(如#、&等),可能导致安装失败或功能异常。建议将安装路径修改为纯英文且无空格的目录,例如D:\Siemens\NX。系统环境变量配置错误安装过程中需正确配置系…...