<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>browser-tools on S Anand</title>
    <link>https://www.s-anand.net/blog/tag/browser-tools/</link>
    <description>Recent content in browser-tools on S Anand</description>
    <generator>Hugo -- 0.164.0</generator>
    <language>en-us</language>
    <lastBuildDate>Tue, 20 Jan 2026 08:46:10 +0530</lastBuildDate>
    <atom:link href="https://www.s-anand.net/blog/tag/browser-tools/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Gemini Scraper</title>
      <link>https://www.s-anand.net/blog/gemini-scraper/</link>
      <pubDate>Tue, 20 Jan 2026 08:46:10 +0530</pubDate>
      <guid>https://www.s-anand.net/blog/gemini-scraper/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://gemini.google.com/&#34;&gt;Gemini&lt;/a&gt; lets you copy individual responses as Markdown, but not an entire conversation.&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s useful if you want to save the chat for later, pass it to another LLM, or publish it.&lt;/p&gt;
&lt;p&gt;So I built a &lt;a href=&#34;https://tools.s-anand.net/geminiscraper/&#34;&gt;bookmarklet&lt;/a&gt; that scrapes the entire conversation as Markdown and copies it to the clipboard.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SETUP&lt;/strong&gt;: Drag the bookmarklet to your bookmarks bar.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://files.s-anand.net/images/2026-01-20-gemini-scraper-add-bookmarklet.avif&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;USAGE&lt;/strong&gt;: On a Gemini chat page, click the bookmarklet. It copies the chat as Markdown.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://files.s-anand.net/images/2026-01-20-gemini-scraper-use-bookmarklet.avif&#34;&gt;&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s a sample output:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nn&#34;&gt;---&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Trump&amp;#39;s Nobel Prize Snub&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;date&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;ld&#34;&gt;2026-01-20T10:10:38&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;+05&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;30&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;source&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;https://gemini.google.com/app/6dbb3b934006cd9f&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nn&#34;&gt;---&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## User
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Answer in 1 line: What was Trump&amp;#39;s most controversial announcement yesterday?
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## Gemini
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;&amp;gt; &lt;/span&gt;&lt;span class=&#34;ge&#34;&gt;**Thinking:** ...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;He stated that his demand to purchase Greenland and the subsequent tariff threats against European allies were driven by his resentment over being snubbed for the Nobel Peace Prize.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## User
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Answer in 1 line: Who else historically have acted so strongly when snubbed?
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## Gemini
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;&amp;gt; &lt;/span&gt;&lt;span class=&#34;ge&#34;&gt;**Thinking:** ...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Genghis Khan diverted his armies to annihilate the entire Khwarazmian Empire after its Shah insulted him by beheading his diplomatic envoys.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: When I vibe coded this at first, I got an error that made me think Gemini&amp;rsquo;s &lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy&#34;&gt;Content-Security-Policy&lt;/a&gt; prevents executing &lt;code&gt;javascript:&lt;/code&gt; URLs. But on testing, the CSP actually looks like:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Content-Security-Policy: ...; script-src * &amp;#39;unsafe-inline&amp;#39; &amp;#39;unsafe-eval&amp;#39; blob: data:; ...
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This specifically allows &lt;code&gt;unsafe-inline&lt;/code&gt; scripts, which is what bookmarklets are. So it works fine.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>YubNub</title>
      <link>https://www.s-anand.net/blog/yubnub/</link>
      <pubDate>Wed, 14 Sep 2005 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/yubnub/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://yubnub.org/&#34;&gt;YubNub&lt;/a&gt; is a web command line. A &lt;a href=&#34;http://jonaquino.blogspot.com/2005/06/yubnub-my-entry-for-rails-day-24-hour.html&#34;&gt;starting point for a Web OS&lt;/a&gt;, as Jon Aquino suggests. &lt;a href=&#34;http://www.emilychang.com/go/ehub/&#34;&gt;via eHub&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>ButMeNot</title>
      <link>https://www.s-anand.net/blog/butmenot/</link>
      <pubDate>Tue, 13 Jul 2004 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/butmenot/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://www.bugmenot.com/&#34;&gt;BugMeNot&lt;/a&gt; &amp;ndash; registrations for famous sites, along with passwords. Mozilla also has a &lt;a href=&#34;http://bugmenot.mozdev.org/&#34;&gt;Bugmenot project&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Virtual Stapler</title>
      <link>https://www.s-anand.net/blog/virtual-stapler/</link>
      <pubDate>Fri, 10 Aug 2001 12:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/virtual-stapler/</guid>
      <description>&lt;p&gt;I had several minutes of fun using the &lt;a href=&#34;http://www.virtualstapler.com/&#34;&gt;Virtual Stapler&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
  </channel>
</rss>
