惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Schneier on Security
The Register - Security
The Register - Security
月光博客
月光博客
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The GitHub Blog
The GitHub Blog
博客园 - 司徒正美
罗磊的独立博客
U
Unit 42
S
SegmentFault 最新的问题
Y
Y Combinator Blog
博客园_首页
Hugging Face - Blog
Hugging Face - Blog
J
Java Code Geeks
Schneier on Security
Schneier on Security
Know Your Adversary
Know Your Adversary
C
Check Point Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Simon Willison's Weblog
Simon Willison's Weblog
V
Vulnerabilities – Threatpost
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
阮一峰的网络日志
阮一峰的网络日志
The Hacker News
The Hacker News
博客园 - 叶小钗
C
Cybersecurity and Infrastructure Security Agency CISA
Spread Privacy
Spread Privacy
L
LINUX DO - 热门话题
T
The Exploit Database - CXSecurity.com
P
Palo Alto Networks Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Latest news
Latest news
L
Lohrmann on Cybersecurity
A
About on SuperTechFans
L
LangChain Blog
Stack Overflow Blog
Stack Overflow Blog
S
Securelist
A
Arctic Wolf
D
Darknet – Hacking Tools, Hacker News & Cyber Security
T
Threatpost
Scott Helme
Scott Helme
博客园 - 聂微东
博客园 - 【当耐特】
T
Tenable Blog
I
Intezer
D
DataBreaches.Net
B
Blog RSS Feed
Security Latest
Security Latest
C
Cisco Blogs
T
Tor Project blog
N
Netflix TechBlog - Medium

Steve Hanov's Blog

How this Canadian Startup Bought Millions of Impressions for $8,000 How to Run a Fellowship Program Into the Ground (and get 18M impressions in the process) My Waterloo Intern went back to school. I'll miss him dearly but here's how I replaced him with Hermes I learned Mandarin. Here's what it taught me about B2C SaaS. The VC's Waterloo Coffee Tour: Where to Find Canada's Next Unicorn How I run multiple $10K MRR companies on a $20/month tech stack A Ralph Loop for Reading: Beating GPT 5.2 with a 4k Context Window (and 4 GPUs) I built a Chrome extension that lets an LLM “see” tweets Fighting Blog Comment Spam with Qwen3 and Ollama Make a web page screenshot service Automatically remove wordiness from your writing I found Security Vulnerability in your web application How to detect if an object has been garbage collected in Javascript My favourite Google Cardboard Apps O(n) Delta Compression With a Suffix Array Finding Bieber: On removing duplicates from a set of documents Let's read a Truetype font file from scratch A Quick Measure of Sortedness My thoughts on various programming languages A little VIM hacking
How to Save a Gemini Canvas as Markdown
2026-03-14 · via Steve Hanov's Blog

I was working on a project the other night, using Google's Gemini to help brainstorm a technical plan. If you've used it recently, you've probably seen the "Canvas" feature. It pops up on the right side of your screen, rendering code and text beautifully. It looks great.

But then I actually finished the document, and I needed to get that text out of the browser and into my actual codebase. I looked around the sleek interface for a "Save as Markdown" button. It doesn't exist.

If you are trying to extract a Gemini Canvas as markdown, you usually attempt the naive solution first: you click inside the canvas, press Ctrl+A, and Ctrl+C. You paste it into your editor, and instantly realize your mistake. You don't get markdown. You get a formatting disaster—a jumble of lost line breaks, stripped headers, and weird spacing.

This actually matters. When you are pasting a technical plan or documentation back into an LLM, that formatting is highly important. Under the hood, LLMs are trained and optimized to read and write raw markdown text, not whatever rich-text soup the browser clipboard spits out.

If you Google for a solution to this, you'll find two terrible workarounds.

The first is the "official" route: click "Export to Google Docs," wait for it to open, and then go to File -> Download -> Markdown. This takes way too long, and worse, you are left with hundreds of useless, orphaned documents permanently cluttering your Google Drive.

The second is the "prompt engineering" route. You type the magic words: "Copy this entire canvas as markdown into a code block." This is surprisingly hit or miss. Because of escaping issues—code blocks nested inside other code blocks—the LLM often breaks the formatting halfway through. Plus, it takes a full minute to generate, wasting expensive GPU cycles in a datacenter somewhere just to print text that has already been calculated and is sitting right there on your screen.

We just want our text file.

The Solution: A Quick Userscript

To fix this annoyance permanently, I wrote a quick script that reaches into the page and downloads the raw markdown for you.

image.png

If you just want the tool, you can grab it from GitHub here: gemini-to-markdown.

To run it, you'll need Tampermonkey.

What is Tampermonkey? If you haven't heard of it, Tampermonkey is a popular, free browser extension (available for Chrome, Firefox, Safari, etc.) that acts as a user script manager. It basically allows you to inject tiny snippets of your own JavaScript into specific websites to change how they look or behave. It's the perfect tool for fixing minor UI annoyances on the web without having to build a full-blown browser extension.

How to Install It

Getting this set up takes about thirty seconds:

  1. Install Tampermonkey: Head over to your browser's extension store and install the Tampermonkey extension.
  2. Get the Script: Go to the gemini-to-markdown repository on GitHub.
  3. Install: Click on the gemini-to-markdown.user.js file, and click the "Raw" button. Tampermonkey will automatically detect the script and pop up an install screen. Just click "Install". That's it. The next time you open a Gemini Canvas, you'll have a quiet, reliable way to extract your clean markdown, without the Google Drive clutter or the datacenter GPU waste.