ChatGPT Plus
I&#x27;ve been using ChatGPT pretty consistently during the workday and have found it useful for open ended programming questions, &quot;cleaning up&quot; rough bullet points into a coherent paragraph of text, etc. $20&#x2F;month useful is questionable though, especially with all the filters. My &quot;in between&quot; solution has been to configure BetterTouchTool (Mac App) with a hotkey for &quot;Transform &amp; Replace Selection with Javascript&quot;. This is intended for doing text transforms, but putting an API call instead seems to work fine. I highlight some text, usually just an open ended &quot;prompt&quot; I typed in the IDE, or Notes app, or an email body, hit the hotkey, and ~1s later it adds the answer underneath. This works...surprisingly well. It feels almost native to the OS. And it&#x27;s cheaper than $20&#x2F;month, assuming you aren&#x27;t feeding it massive documents worth of text or expecting paragraphs in response. I&#x27;ve been averaging like 2-10c a day, depending on use.<p>Here is the javascript if anyone wants to do something similar. I don&#x27;t know JS really, so I&#x27;m sure it could be improved. But it seems to work fine. You can add your own hard coded prompt if you want even.<p><pre><code>    async (clipboardContentString) =&gt; {
        try {
          const response = await fetch(&quot;https:&#x2F;&#x2F;api.openai.com&#x2F;v1&#x2F;completions&quot;, {
            method: &quot;POST&quot;,
            headers: {
              &quot;Content-Type&quot;: &quot;application&#x2F;json&quot;,
              &quot;Authorization&quot;: &quot;Bearer YOUR API KEY HERE&quot;
            },
            body: JSON.stringify({
              model: &quot;text-davinci-003&quot;,
              prompt: `${clipboardContentString}.`,
              temperature: 0,
              max_tokens: 256
            })
          });
          const data = await response.json();
          const text = data.choices[0].text;
        return `${clipboardContentString} ${text}`;
        } catch (error) {
          return &quot;Error&quot;
        }
      }</code></pre>