<?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: Nick</title>
    <description>The latest articles on DEV Community by Nick (@nick_f2770970d5ee7a8dd09a).</description>
    <link>https://dev.to/nick_f2770970d5ee7a8dd09a</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%2F4184138%2Ff8b2df05-96a6-4b28-b8b8-0590a0fa774b.png</url>
      <title>DEV Community: Nick</title>
      <link>https://dev.to/nick_f2770970d5ee7a8dd09a</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nick_f2770970d5ee7a8dd09a"/>
    <language>en</language>
    <item>
      <title>I built a Chrome extension that sends one prompt to 12 AI chatbots at once (no API keys)</title>
      <dc:creator>Nick</dc:creator>
      <pubDate>Wed, 14 Oct 2026 09:05:18 +0000</pubDate>
      <link>https://dev.to/nick_f2770970d5ee7a8dd09a/i-built-a-chrome-extension-that-sends-one-prompt-to-12-ai-chatbots-at-once-no-api-keys-52g1</link>
      <guid>https://dev.to/nick_f2770970d5ee7a8dd09a/i-built-a-chrome-extension-that-sends-one-prompt-to-12-ai-chatbots-at-once-no-api-keys-52g1</guid>
      <description>&lt;p&gt;Every day I asked ChatGPT, Claude and Gemini the same question, because the only way to know which answer is best is to compare them. That meant copy, switch tab, paste, enter, and repeat for every follow-up.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;Panelize&lt;/strong&gt;, a free, open-source Chrome/Edge extension that puts your AI chats side by side in one window. You type once, click &lt;strong&gt;Send All&lt;/strong&gt;, and every panel gets the prompt.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4osqg7cea1jhl49jifg3.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4osqg7cea1jhl49jifg3.gif" alt="Panelize demo" width="600" height="338"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;ChatGPT, Claude, Gemini, Grok, DeepSeek, Kimi, Qwen, Doubao, Zhipu / Z.ai, Yuanbao and Google AI Mode: 12 providers, in 22 layouts from a 1×2 quick comparison to 12 at once.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works without API keys
&lt;/h2&gt;

&lt;p&gt;Each panel is the provider's real web app, loaded in an iframe with your normal logged-in session. Most of these sites refuse to be framed, so the extension uses &lt;code&gt;declarativeNetRequest&lt;/code&gt; to drop &lt;code&gt;X-Frame-Options&lt;/code&gt; and the CSP &lt;code&gt;frame-ancestors&lt;/code&gt; directive, but only for &lt;code&gt;sub_frame&lt;/code&gt; requests to a fixed allowlist of provider domains. A small content script per provider fills the composer and clicks send.&lt;/p&gt;

&lt;p&gt;The upside: your ChatGPT Plus or Claude Pro plan just works, and new models show up the day the website ships them.&lt;/p&gt;

&lt;p&gt;The downside: these sites change their DOM constantly. Panelize has a Playwright e2e suite against local fixtures, plus a "live" suite that runs against the real sites before every release to catch broken selectors.&lt;/p&gt;

&lt;h2&gt;
  
  
  Other bits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Prompt library&lt;/strong&gt; with variables like &lt;code&gt;{topic}&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One-click privacy mode&lt;/strong&gt; that switches every supported provider to a temporary chat&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No backend, no analytics.&lt;/strong&gt; MIT licensed.&lt;/li&gt;
&lt;/ul&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%2F5o6yz8yl2kcsdomrkspm.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%2F5o6yz8yl2kcsdomrkspm.png" alt="Main panel" width="800" height="488"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Chrome Web Store: &lt;a href="https://chromewebstore.google.com/detail/panelize/iokalaafkmjffolodkkgbbccmofbglii" rel="noopener noreferrer"&gt;https://chromewebstore.google.com/detail/panelize/iokalaafkmjffolodkkgbbccmofbglii&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/Manho/Panelize" rel="noopener noreferrer"&gt;https://github.com/Manho/Panelize&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'd love feedback, especially on the security model of stripping frame headers for an allowlist of domains, and on which provider you'd want next.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>chrome</category>
      <category>opensource</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
