<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>tools.jamesking.io</title>
    <link>https://tools.jamesking.io/</link>
    <atom:link href="https://tools.jamesking.io/feed.xml" rel="self" type="application/rss+xml"/>
    <description>New and updated tools on tools.jamesking.io.</description>
    <language>en</language>
    <lastBuildDate>Tue, 13 Oct 2026 11:16:57 GMT</lastBuildDate>
    <item>
      <title>Updated: Glanceable podcast (2 changes)</title>
      <link>https://tools.jamesking.io/glanceable-podcast/changelog.html</link>
      <guid isPermaLink="false">tool:glanceable-podcast:2026-10-13</guid>
      <pubDate>Tue, 13 Oct 2026 11:16:57 GMT</pubDate>
      <category>skill</category>
      <description>&lt;ul&gt;&lt;li&gt;fetch_article: drop Tufte-style margin notes and sidenotes &lt;a href=&quot;https://github.com/jamesking/tools/commit/f8ce5d44401e68e43f3ffd7db5413128493063e0&quot;&gt;&lt;code&gt;f8ce5d4&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;fetch_article: resolve image URLs against the fetched page, not og:url &lt;a href=&quot;https://github.com/jamesking/tools/commit/2f3e4015cf2c7c7b7bba0e5226fd27841bbcd715&quot;&gt;&lt;code&gt;2f3e401&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://tools.jamesking.io/glanceable-podcast/&quot;&gt;Tool&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/glanceable-podcast/readme.html&quot;&gt;Readme&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/glanceable-podcast/changelog.html&quot;&gt;Changelog&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated: Glanceable podcast (3 changes)</title>
      <link>https://tools.jamesking.io/glanceable-podcast/changelog.html</link>
      <guid isPermaLink="false">tool:glanceable-podcast:2026-10-10</guid>
      <pubDate>Sat, 10 Oct 2026 15:58:59 GMT</pubDate>
      <category>skill</category>
      <description>&lt;ul&gt;&lt;li&gt;article_episode: per-block voice, for interviews &lt;a href=&quot;https://github.com/jamesking/tools/commit/7e38d46fb4714fd8b9ad0c6ecbf537b2a5e585fe&quot;&gt;&lt;code&gt;7e38d46&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;fetch_article: decode pages by byte-order mark and &amp;lt;meta charset&amp;gt; &lt;a href=&quot;https://github.com/jamesking/tools/commit/5282b2f6dda4fcbb3232969774193d5f067eb9c1&quot;&gt;&lt;code&gt;5282b2f&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;fetch_article: pick the largest image in a srcset, not the last &lt;a href=&quot;https://github.com/jamesking/tools/commit/7b4dc4649d0b6798adcc5cac4f8d6ff37f20e1af&quot;&gt;&lt;code&gt;7b4dc46&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://tools.jamesking.io/glanceable-podcast/&quot;&gt;Tool&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/glanceable-podcast/readme.html&quot;&gt;Readme&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/glanceable-podcast/changelog.html&quot;&gt;Changelog&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated: Glanceable podcast (3 changes)</title>
      <link>https://tools.jamesking.io/glanceable-podcast/changelog.html</link>
      <guid isPermaLink="false">tool:glanceable-podcast:2026-10-08</guid>
      <pubDate>Thu, 08 Oct 2026 11:16:08 GMT</pubDate>
      <category>skill</category>
      <description>&lt;ul&gt;&lt;li&gt;Keep uncaptioned pictures that Readability would drop &lt;a href=&quot;https://github.com/jamesking/tools/commit/f12fd3b6b85163446a7a7f5699e11d3e073ce253&quot;&gt;&lt;code&gt;f12fd3b&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Drop heading self-links like &amp;quot;🔗&amp;quot;, &amp;quot;#&amp;quot; and &amp;quot;¶&amp;quot; from headings &lt;a href=&quot;https://github.com/jamesking/tools/commit/5386bd61968339ce2f33e2598225f168132a5bce&quot;&gt;&lt;code&gt;5386bd6&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Keep a space between paragraphs and nested list items in extracted text &lt;a href=&quot;https://github.com/jamesking/tools/commit/a5014b7cfc273b1f3d02061fbe51e85027c1b17a&quot;&gt;&lt;code&gt;a5014b7&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://tools.jamesking.io/glanceable-podcast/&quot;&gt;Tool&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/glanceable-podcast/readme.html&quot;&gt;Readme&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/glanceable-podcast/changelog.html&quot;&gt;Changelog&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated: Glanceable podcast (5 changes)</title>
      <link>https://tools.jamesking.io/glanceable-podcast/changelog.html</link>
      <guid isPermaLink="false">tool:glanceable-podcast:2026-10-07</guid>
      <pubDate>Wed, 07 Oct 2026 15:08:08 GMT</pubDate>
      <category>skill</category>
      <description>&lt;ul&gt;&lt;li&gt;Video episodes from SlidesLive talks and audio-only recordings &lt;a href=&quot;https://github.com/jamesking/tools/commit/401e1433626cedf3991c7b03bebef22539dcbfeb&quot;&gt;&lt;code&gt;401e143&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Extract articles from Tailwind sites with KaTeX maths &lt;a href=&quot;https://github.com/jamesking/tools/commit/6ef39eaa0d12c43ed821f5c9b37126dfaf8c0037&quot;&gt;&lt;code&gt;6ef39ea&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Keep the published skill free of the routine&amp;#39;s PR setup &lt;a href=&quot;https://github.com/jamesking/tools/commit/588883396826c8832187e129b3e624f3ca831e15&quot;&gt;&lt;code&gt;5888833&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Unattended inbox runs work around script gaps, not edit scripts &lt;a href=&quot;https://github.com/jamesking/tools/commit/904dc75f4be56f9ebb0a73fa164acc62b1755fb1&quot;&gt;&lt;code&gt;904dc75&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;End article episodes with a closing chime &lt;a href=&quot;https://github.com/jamesking/tools/commit/516d53f4b6836e3baa9fe83bed43ba631b79fa74&quot;&gt;&lt;code&gt;516d53f&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://tools.jamesking.io/glanceable-podcast/&quot;&gt;Tool&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/glanceable-podcast/readme.html&quot;&gt;Readme&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/glanceable-podcast/changelog.html&quot;&gt;Changelog&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated: Glanceable podcast (3 changes)</title>
      <link>https://tools.jamesking.io/glanceable-podcast/changelog.html</link>
      <guid isPermaLink="false">tool:glanceable-podcast:2026-10-06</guid>
      <pubDate>Tue, 06 Oct 2026 16:41:28 GMT</pubDate>
      <category>skill</category>
      <description>&lt;ul&gt;&lt;li&gt;Send links to glanceable from the phone &lt;a href=&quot;https://github.com/jamesking/tools/commit/f6fa47f89055059f75f26f7031a3809328df79d8&quot;&gt;&lt;code&gt;f6fa47f&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Suggest a recording when an article embeds one; check PDFs for fragments &lt;a href=&quot;https://github.com/jamesking/tools/commit/4ccc9f0d369d88e50cb857de76ef84287657738f&quot;&gt;&lt;code&gt;4ccc9f0&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;PDF figures and layout, and spotting embedded videos &lt;a href=&quot;https://github.com/jamesking/tools/commit/9cc253448f9bcd5e795a3c56fdcec192421fd03f&quot;&gt;&lt;code&gt;9cc2534&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://tools.jamesking.io/glanceable-podcast/&quot;&gt;Tool&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/glanceable-podcast/readme.html&quot;&gt;Readme&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/glanceable-podcast/changelog.html&quot;&gt;Changelog&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated: Syndicate elsewhere (1 change)</title>
      <link>https://tools.jamesking.io/syndicate-elsewhere/changelog.html</link>
      <guid isPermaLink="false">tool:syndicate-elsewhere:2026-10-06</guid>
      <pubDate>Tue, 06 Oct 2026 14:30:58 GMT</pubDate>
      <category>web</category>
      <description>&lt;ul&gt;&lt;li&gt;Stop serving stale feeds from the RSS proxy &lt;a href=&quot;https://github.com/jamesking/tools/commit/70b088d2c624860d72e0b199c46cb0bae62f35e5&quot;&gt;&lt;code&gt;70b088d&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://tools.jamesking.io/syndicate-elsewhere/&quot;&gt;Tool&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/syndicate-elsewhere/readme.html&quot;&gt;Readme&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/syndicate-elsewhere/changelog.html&quot;&gt;Changelog&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated: Syndicate elsewhere (2 changes)</title>
      <link>https://tools.jamesking.io/syndicate-elsewhere/changelog.html</link>
      <guid isPermaLink="false">tool:syndicate-elsewhere:2026-10-05</guid>
      <pubDate>Mon, 05 Oct 2026 10:33:33 GMT</pubDate>
      <category>web</category>
      <description>&lt;ul&gt;&lt;li&gt;Configure GitHub link recording per feed &lt;a href=&quot;https://github.com/jamesking/tools/commit/892c20a6d8f5b4fc18adf9ea14dc974ea7eb9ed5&quot;&gt;&lt;code&gt;892c20a&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Record syndication links in the blog post&amp;#39;s source on GitHub &lt;a href=&quot;https://github.com/jamesking/tools/commit/4c886b7e0ff4ae20e54882b16b284eba90a151e5&quot;&gt;&lt;code&gt;4c886b7&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://tools.jamesking.io/syndicate-elsewhere/&quot;&gt;Tool&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/syndicate-elsewhere/readme.html&quot;&gt;Readme&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/syndicate-elsewhere/changelog.html&quot;&gt;Changelog&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated: Glanceable podcast (2 changes)</title>
      <link>https://tools.jamesking.io/glanceable-podcast/changelog.html</link>
      <guid isPermaLink="false">tool:glanceable-podcast:2026-10-04</guid>
      <pubDate>Sun, 04 Oct 2026 09:09:12 GMT</pubDate>
      <category>skill</category>
      <description>&lt;ul&gt;&lt;li&gt;Don&amp;#39;t read flattened powers as plain numbers &lt;a href=&quot;https://github.com/jamesking/tools/commit/03e55605aa58e772102de8bd55437c7dc87d9d18&quot;&gt;&lt;code&gt;03e5560&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Read PDFs, X Articles and arXiv papers as glanceable episodes &lt;a href=&quot;https://github.com/jamesking/tools/commit/481563b57ff1ee652187c2076541b3b0f1eb89d8&quot;&gt;&lt;code&gt;481563b&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://tools.jamesking.io/glanceable-podcast/&quot;&gt;Tool&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/glanceable-podcast/readme.html&quot;&gt;Readme&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/glanceable-podcast/changelog.html&quot;&gt;Changelog&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated: Glanceable podcast (2 changes)</title>
      <link>https://tools.jamesking.io/glanceable-podcast/changelog.html</link>
      <guid isPermaLink="false">tool:glanceable-podcast:2026-10-03</guid>
      <pubDate>Sat, 03 Oct 2026 13:47:23 GMT</pubDate>
      <category>skill</category>
      <description>&lt;ul&gt;&lt;li&gt;Show maths as pictures in article episodes, and read journal pages &lt;a href=&quot;https://github.com/jamesking/tools/commit/00cf3a8597270877cedde67d830f1aa796c4d82a&quot;&gt;&lt;code&gt;00cf3a8&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Handle Substack video posts, share titles and struck-through text &lt;a href=&quot;https://github.com/jamesking/tools/commit/23a92d1b5102ecb1c4fc79deaeaf2a59088e69ca&quot;&gt;&lt;code&gt;23a92d1&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://tools.jamesking.io/glanceable-podcast/&quot;&gt;Tool&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/glanceable-podcast/readme.html&quot;&gt;Readme&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/glanceable-podcast/changelog.html&quot;&gt;Changelog&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated: Glanceable podcast (1 change)</title>
      <link>https://tools.jamesking.io/glanceable-podcast/changelog.html</link>
      <guid isPermaLink="false">tool:glanceable-podcast:2026-10-02</guid>
      <pubDate>Fri, 02 Oct 2026 10:44:21 GMT</pubDate>
      <category>skill</category>
      <description>&lt;ul&gt;&lt;li&gt;Find authors by reference and don&amp;#39;t repeat names in article intros &lt;a href=&quot;https://github.com/jamesking/tools/commit/69e2e64e7066ee720b8c1959a26cc3309a89baab&quot;&gt;&lt;code&gt;69e2e64&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://tools.jamesking.io/glanceable-podcast/&quot;&gt;Tool&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/glanceable-podcast/readme.html&quot;&gt;Readme&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/glanceable-podcast/changelog.html&quot;&gt;Changelog&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>New tool: Glanceable podcast</title>
      <link>https://tools.jamesking.io/glanceable-podcast/readme.html</link>
      <guid isPermaLink="false">tool:glanceable-podcast:new</guid>
      <pubDate>Thu, 01 Oct 2026 17:02:38 GMT</pubDate>
      <category>skill</category>
      <description>&lt;p&gt;A Claude Code skill that turns YouTube videos and web articles into &lt;em&gt;glanceable&lt;/em&gt; podcast episodes in your own private podcast feed. Articles are read aloud with open-source text-to-speech and YouTube videos are converted to audio MP3 files with frequently updating chapter artwork from the video itself.
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Tighten the glanceable podcast docs&lt;/li&gt;&lt;li&gt;Add article episodes to the glanceable podcast skill &lt;a href=&quot;https://github.com/jamesking/tools/commit/68d24203318641a19d91fe882ef3125068c2ed99&quot;&gt;&lt;code&gt;68d2420&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Don&amp;#39;t let a caption rate limit stop an episode &lt;a href=&quot;https://github.com/jamesking/tools/commit/f4443f61a37d60afd37b66c0428be682b398d1ff&quot;&gt;&lt;code&gt;f4443f6&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Say why a 1Password lookup failed &lt;a href=&quot;https://github.com/jamesking/tools/commit/73bc1f031b31517b32d9aad238c96b74db46a1f1&quot;&gt;&lt;code&gt;73bc1f0&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Support choosing a 1Password account for the podcast skill &lt;a href=&quot;https://github.com/jamesking/tools/commit/bac4e5eba93b9afabf1e4e2702c68a0bdf0c578b&quot;&gt;&lt;code&gt;bac4e5e&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Add YouTube → Glanceable podcast skill &lt;a href=&quot;https://github.com/jamesking/tools/commit/279c05b5c70c321731f4ecbbf9c9f6c110b6031c&quot;&gt;&lt;code&gt;279c05b&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://tools.jamesking.io/glanceable-podcast/&quot;&gt;Tool&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/glanceable-podcast/readme.html&quot;&gt;Readme&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/glanceable-podcast/changelog.html&quot;&gt;Changelog&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated: Audiolog preprocessor shortcut (1 change)</title>
      <link>https://tools.jamesking.io/audiolog-shortcut/changelog.html</link>
      <guid isPermaLink="false">tool:audiolog-shortcut:2026-10-01</guid>
      <pubDate>Thu, 01 Oct 2026 10:56:08 GMT</pubDate>
      <category>shortcut</category>
      <description>&lt;ul&gt;&lt;li&gt;Group the tools index into Web apps, Skills and Shortcuts &lt;a href=&quot;https://github.com/jamesking/tools/commit/857cdd8441ce7253714c8426604bde2aae4555ff&quot;&gt;&lt;code&gt;857cdd8&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://www.icloud.com/shortcuts/7cc9f8f8812847c9b588cf3e6945c06c&quot;&gt;Tool&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/audiolog-shortcut/readme.html&quot;&gt;Readme&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/audiolog-shortcut/changelog.html&quot;&gt;Changelog&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated: Observable Notebooks 2.0 export (1 change)</title>
      <link>https://tools.jamesking.io/observable-notebook-export/changelog.html</link>
      <guid isPermaLink="false">tool:observable-notebook-export:2026-09-18</guid>
      <pubDate>Fri, 18 Sep 2026 08:05:48 GMT</pubDate>
      <category>web</category>
      <description>&lt;ul&gt;&lt;li&gt;Follow the URL when exporting an Observable notebook &lt;a href=&quot;https://github.com/jamesking/tools/commit/2cf004dca3a7934c4de6f5266573b3662a0c3d04&quot;&gt;&lt;code&gt;2cf004d&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://tools.jamesking.io/observable-notebook-export/&quot;&gt;Tool&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/observable-notebook-export/readme.html&quot;&gt;Readme&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/observable-notebook-export/changelog.html&quot;&gt;Changelog&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>New tool: Observable Notebooks 2.0 export</title>
      <link>https://tools.jamesking.io/observable-notebook-export/readme.html</link>
      <guid isPermaLink="false">tool:observable-notebook-export:new</guid>
      <pubDate>Mon, 03 Aug 2026 17:35:13 GMT</pubDate>
      <category>web</category>
      <description>&lt;p&gt;A bookmarklet that downloads the source of any &lt;a href=&quot;https://observablehq.com/public&quot;&gt;Observable Notebooks 2.0&lt;/a&gt; notebook as a self-contained &lt;a href=&quot;https://observablehq.com/notebook-kit/&quot;&gt;Observable 2.0&lt;/a&gt; &lt;code&gt;.html&lt;/code&gt; file. Useful for editing with &lt;a href=&quot;https://observablehq.com/notebook-kit/desktop&quot;&gt;Observable Desktop&lt;/a&gt;.
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Rename tool to &amp;quot;Observable Notebooks 2.0 export&amp;quot; &lt;a href=&quot;https://github.com/jamesking/tools/commit/c7bb4bd1910329b80c0d12f59c294fb4294a4edc&quot;&gt;&lt;code&gt;c7bb4bd&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Resolve Flight references in exported notebook cells &lt;a href=&quot;https://github.com/jamesking/tools/commit/2d43286bd4125a229dc51f843aa7876c07aa31f9&quot;&gt;&lt;code&gt;2d43286&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Update README &lt;a href=&quot;https://github.com/jamesking/tools/commit/b4e939557f8a186675089846ad2d8798652b96f1&quot;&gt;&lt;code&gt;b4e9395&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Add Observable Notebook Export tool &lt;a href=&quot;https://github.com/jamesking/tools/commit/edd78a83b3389f5131fdef66965061d7918572b3&quot;&gt;&lt;code&gt;edd78a8&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://tools.jamesking.io/observable-notebook-export/&quot;&gt;Tool&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/observable-notebook-export/readme.html&quot;&gt;Readme&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/observable-notebook-export/changelog.html&quot;&gt;Changelog&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated: Syndicate elsewhere (2 changes)</title>
      <link>https://tools.jamesking.io/syndicate-elsewhere/changelog.html</link>
      <guid isPermaLink="false">tool:syndicate-elsewhere:2026-07-02</guid>
      <pubDate>Thu, 02 Jul 2026 09:50:42 GMT</pubDate>
      <category>web</category>
      <description>&lt;ul&gt;&lt;li&gt;Fix Slack content card not rendering (send as payload= form param) &lt;a href=&quot;https://github.com/jamesking/tools/commit/607d851942a4e81a2b05177153a9fce349c76746&quot;&gt;&lt;code&gt;607d851&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Post a rich content card to Slack (title, summary, image) &lt;a href=&quot;https://github.com/jamesking/tools/commit/4a63fd08198ad3b5c9ff8f96b38bd8b76a7ba924&quot;&gt;&lt;code&gt;4a63fd0&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://tools.jamesking.io/syndicate-elsewhere/&quot;&gt;Tool&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/syndicate-elsewhere/readme.html&quot;&gt;Readme&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/syndicate-elsewhere/changelog.html&quot;&gt;Changelog&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated: Syndicate elsewhere (1 change)</title>
      <link>https://tools.jamesking.io/syndicate-elsewhere/changelog.html</link>
      <guid isPermaLink="false">tool:syndicate-elsewhere:2026-07-01</guid>
      <pubDate>Wed, 01 Jul 2026 09:14:54 GMT</pubDate>
      <category>web</category>
      <description>&lt;ul&gt;&lt;li&gt;Add LinkedIn and Threads as assisted-posting destinations &lt;a href=&quot;https://github.com/jamesking/tools/commit/f840ca16f39062f1f003f80775a07fed14f7a4c1&quot;&gt;&lt;code&gt;f840ca1&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://tools.jamesking.io/syndicate-elsewhere/&quot;&gt;Tool&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/syndicate-elsewhere/readme.html&quot;&gt;Readme&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/syndicate-elsewhere/changelog.html&quot;&gt;Changelog&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated: Syndicate elsewhere (1 change)</title>
      <link>https://tools.jamesking.io/syndicate-elsewhere/changelog.html</link>
      <guid isPermaLink="false">tool:syndicate-elsewhere:2026-06-29</guid>
      <pubDate>Mon, 29 Jun 2026 20:54:10 GMT</pubDate>
      <category>web</category>
      <description>&lt;ul&gt;&lt;li&gt;Add Slack as a publishing destination to Syndicate Elsewhere &lt;a href=&quot;https://github.com/jamesking/tools/commit/37eb0cf9513be34f32c7de34744bfaf286714324&quot;&gt;&lt;code&gt;37eb0cf&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://tools.jamesking.io/syndicate-elsewhere/&quot;&gt;Tool&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/syndicate-elsewhere/readme.html&quot;&gt;Readme&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/syndicate-elsewhere/changelog.html&quot;&gt;Changelog&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated: Syndicate elsewhere (1 change)</title>
      <link>https://tools.jamesking.io/syndicate-elsewhere/changelog.html</link>
      <guid isPermaLink="false">tool:syndicate-elsewhere:2026-06-22</guid>
      <pubDate>Mon, 22 Jun 2026 10:00:13 GMT</pubDate>
      <category>web</category>
      <description>&lt;ul&gt;&lt;li&gt;Syndicate: abort Bluesky post if the card image fails &lt;a href=&quot;https://github.com/jamesking/tools/commit/4d75c14c94e649c3df42f18389b1dfa408654eb4&quot;&gt;&lt;code&gt;4d75c14&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://tools.jamesking.io/syndicate-elsewhere/&quot;&gt;Tool&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/syndicate-elsewhere/readme.html&quot;&gt;Readme&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/syndicate-elsewhere/changelog.html&quot;&gt;Changelog&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated: Syndicate elsewhere (1 change)</title>
      <link>https://tools.jamesking.io/syndicate-elsewhere/changelog.html</link>
      <guid isPermaLink="false">tool:syndicate-elsewhere:2026-06-10</guid>
      <pubDate>Wed, 10 Jun 2026 14:24:09 GMT</pubDate>
      <category>web</category>
      <description>&lt;ul&gt;&lt;li&gt;Syndicate: structured multi-field templates + per-post field editing &lt;a href=&quot;https://github.com/jamesking/tools/commit/00052bb93057f78214ad3f19dc27dbe0660c2424&quot;&gt;&lt;code&gt;00052bb&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://tools.jamesking.io/syndicate-elsewhere/&quot;&gt;Tool&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/syndicate-elsewhere/readme.html&quot;&gt;Readme&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/syndicate-elsewhere/changelog.html&quot;&gt;Changelog&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated: Radio Archive → Podcast Feed (10 changes)</title>
      <link>https://tools.jamesking.io/radio-archive-rss/changelog.html</link>
      <guid isPermaLink="false">tool:radio-archive-rss:2026-06-09</guid>
      <pubDate>Tue, 09 Jun 2026 14:55:51 GMT</pubDate>
      <category>web</category>
      <description>&lt;ul&gt;&lt;li&gt;Edit README &lt;a href=&quot;https://github.com/jamesking/tools/commit/d853cbb2ca421fbc072414631d283a0653aa1d68&quot;&gt;&lt;code&gt;d853cbb&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fix title &lt;a href=&quot;https://github.com/jamesking/tools/commit/f3f2fbd9a7ce19a2c44113a7fb6165667dc3cb9d&quot;&gt;&lt;code&gt;f3f2fbd&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;radio-archive-rss: builder UI tweaks &lt;a href=&quot;https://github.com/jamesking/tools/commit/17480696072ceb8693c9d6a22065b29b4ef63e53&quot;&gt;&lt;code&gt;1748069&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Polish README &lt;a href=&quot;https://github.com/jamesking/tools/commit/2c4a41472898be8aa39f5e37a932710f50d91954&quot;&gt;&lt;code&gt;2c4a414&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;docs: add automated audio re-hosting (R2) as a future improvement &lt;a href=&quot;https://github.com/jamesking/tools/commit/049fa69522a46d6e0ddd3505ed1e3fc533278257&quot;&gt;&lt;code&gt;049fa69&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;docs: document the Overcast known issue + refresh notes &lt;a href=&quot;https://github.com/jamesking/tools/commit/d244dcaa402a23165ec2f71d3d31b0bb28debadd&quot;&gt;&lt;code&gt;d244dca&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;feed: add &amp;quot;Private feed&amp;quot; toggle emitting &amp;lt;itunes:block&amp;gt; &lt;a href=&quot;https://github.com/jamesking/tools/commit/ef735b0546fc961da6b1c0d9e8807382aa888b0a&quot;&gt;&lt;code&gt;ef735b0&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;feed: omit enclosure length when unknown instead of length=&amp;quot;0&amp;quot; &lt;a href=&quot;https://github.com/jamesking/tools/commit/75df43b19f76224743d83f4b9f0b2928cc2cc0c7&quot;&gt;&lt;code&gt;75df43b&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;radio-archive-rss: use absolute enclosure URLs (fix empty feed in Overcast) &lt;a href=&quot;https://github.com/jamesking/tools/commit/ed50a2e10c40a9020b4fa3dadce9f8e0beaa1009&quot;&gt;&lt;code&gt;ed50a2e&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;radio-archive-rss: fix &amp;quot;Copy feed as URL&amp;quot; on iOS Safari &lt;a href=&quot;https://github.com/jamesking/tools/commit/74f282a4d037a87f70d011726b3976df1362c75c&quot;&gt;&lt;code&gt;74f282a&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://tools.jamesking.io/radio-archive-rss/&quot;&gt;Tool&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/radio-archive-rss/readme.html&quot;&gt;Readme&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/radio-archive-rss/changelog.html&quot;&gt;Changelog&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated: Radio Archive → Podcast Feed (3 changes)</title>
      <link>https://tools.jamesking.io/radio-archive-rss/changelog.html</link>
      <guid isPermaLink="false">tool:radio-archive-rss:2026-06-08</guid>
      <pubDate>Mon, 08 Jun 2026 21:05:50 GMT</pubDate>
      <category>web</category>
      <description>&lt;ul&gt;&lt;li&gt;radio-archive-rss: fix multi-file sidecar upload dropping all but the first &lt;a href=&quot;https://github.com/jamesking/tools/commit/635b5066ce18e4793f356df3ba9a8dd1e9d5df24&quot;&gt;&lt;code&gt;635b506&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Add &amp;quot;Copy feed as URL&amp;quot; — self-host the feed via a /feed edge function &lt;a href=&quot;https://github.com/jamesking/tools/commit/6b35d245464a77a1211699034e423d9b5e919461&quot;&gt;&lt;code&gt;6b35d24&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Grabber: record original MP3 URL + filename; host audio beside the feed &lt;a href=&quot;https://github.com/jamesking/tools/commit/9e4e80a1dcfdb13b30cb480a8cf0879ca0401b6f&quot;&gt;&lt;code&gt;9e4e80a&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://tools.jamesking.io/radio-archive-rss/&quot;&gt;Tool&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/radio-archive-rss/readme.html&quot;&gt;Readme&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/radio-archive-rss/changelog.html&quot;&gt;Changelog&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated: Syndicate elsewhere (6 changes)</title>
      <link>https://tools.jamesking.io/syndicate-elsewhere/changelog.html</link>
      <guid isPermaLink="false">tool:syndicate-elsewhere:2026-06-08</guid>
      <pubDate>Mon, 08 Jun 2026 16:12:54 GMT</pubDate>
      <category>web</category>
      <description>&lt;ul&gt;&lt;li&gt;Syndicate: per-platform preview image source (feed vs OG) &lt;a href=&quot;https://github.com/jamesking/tools/commit/47c1ce7a75e4d11cd7f9f99f98f3147c708182fe&quot;&gt;&lt;code&gt;47c1ce7&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fix blank Bluesky thumbnail: make rss-proxy binary-safe &lt;a href=&quot;https://github.com/jamesking/tools/commit/c9a4a3f3d7c2c73722bc1f1887697db7a5b371a3&quot;&gt;&lt;code&gt;c9a4a3f&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Syndicate: use page OpenGraph image for preview + Bluesky card &lt;a href=&quot;https://github.com/jamesking/tools/commit/f0e92b2713b6a797d9dd73421d4122439ae2a941&quot;&gt;&lt;code&gt;f0e92b2&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Syndicate: live Mastodon/Bluesky preview in the composer &lt;a href=&quot;https://github.com/jamesking/tools/commit/de96eb36c89610fa70f61c77fd6c02d16d42f2f3&quot;&gt;&lt;code&gt;de96eb3&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Syndicate: downscale Bluesky thumbnail to fit the blob size limit &lt;a href=&quot;https://github.com/jamesking/tools/commit/080d1f38e670e41231bc4dc3d0171094d7f92b6a&quot;&gt;&lt;code&gt;080d1f3&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Syndicate: fix Bluesky link-preview card &lt;a href=&quot;https://github.com/jamesking/tools/commit/f3ec12846c883d2db036d93a7abc7211e354d430&quot;&gt;&lt;code&gt;f3ec128&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://tools.jamesking.io/syndicate-elsewhere/&quot;&gt;Tool&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/syndicate-elsewhere/readme.html&quot;&gt;Readme&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/syndicate-elsewhere/changelog.html&quot;&gt;Changelog&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated: Audiolog episode creator (8 changes)</title>
      <link>https://tools.jamesking.io/audiolog-episode-creator/changelog.html</link>
      <guid isPermaLink="false">tool:audiolog-episode-creator:2026-06-08</guid>
      <pubDate>Mon, 08 Jun 2026 12:51:02 GMT</pubDate>
      <category>web</category>
      <description>&lt;ul&gt;&lt;li&gt;Use cover art as the episode YAML thumbnail &lt;a href=&quot;https://github.com/jamesking/tools/commit/a9bade363216a86159715178d95515b462a91813&quot;&gt;&lt;code&gt;a9bade3&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fix invalid YAML indentation in episode chapters &lt;a href=&quot;https://github.com/jamesking/tools/commit/fb1e44498f27c5b6a21eb4188f6d182bd5c02d12&quot;&gt;&lt;code&gt;fb1e444&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Cap cover art at 1500px for the MP3 poster and ZIP &lt;a href=&quot;https://github.com/jamesking/tools/commit/9040b934ef9db7728e06d4054e87e0a978b3d477&quot;&gt;&lt;code&gt;9040b93&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Embed cover art as the MP3 front-cover poster image &lt;a href=&quot;https://github.com/jamesking/tools/commit/8e267dd446bd06139417ab27a41708079f8587bb&quot;&gt;&lt;code&gt;8e267dd&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Add a plain-text Source field to each clip &lt;a href=&quot;https://github.com/jamesking/tools/commit/a7a514960306154e721924b3309b66dc68bbb2a3&quot;&gt;&lt;code&gt;a7a5149&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Equal clip-list/editor columns; render card description as Markdown &lt;a href=&quot;https://github.com/jamesking/tools/commit/467d67e8eca28c21a776fa9c4cec99d47578fd7d&quot;&gt;&lt;code&gt;467d67e&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Editable clip thumbnails + metadata-rich clip cards &lt;a href=&quot;https://github.com/jamesking/tools/commit/9d9a5eed7693113fd8c8954c4efab800425551b6&quot;&gt;&lt;code&gt;9d9a5ee&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Add MP3 chapters + per-clip Link field to Audiolog episode creator &lt;a href=&quot;https://github.com/jamesking/tools/commit/7aa608c71b1432b1a6bbce5ed97f00fff9518827&quot;&gt;&lt;code&gt;7aa608c&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://tools.jamesking.io/audiolog-episode-creator/&quot;&gt;Tool&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/audiolog-episode-creator/readme.html&quot;&gt;Readme&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/audiolog-episode-creator/changelog.html&quot;&gt;Changelog&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>New tool: Radio Archive → Podcast Feed</title>
      <link>https://tools.jamesking.io/radio-archive-rss/readme.html</link>
      <guid isPermaLink="false">tool:radio-archive-rss:new</guid>
      <pubDate>Sun, 07 Jun 2026 20:00:06 GMT</pubDate>
      <category>web</category>
      <description>&lt;p&gt;Build a private, subscribable podcast feed from a radio-show archive.
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Reframe grabber install page as a grabber chooser &lt;a href=&quot;https://github.com/jamesking/tools/commit/03a10bb61e96795637959d80d44a91d1f3f1a02c&quot;&gt;&lt;code&gt;03a10bb&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Relabel grabber as CBC and add a site-adapter seam &lt;a href=&quot;https://github.com/jamesking/tools/commit/ba3ff3d6d0b002d5dbf18201128c893d0a469f4a&quot;&gt;&lt;code&gt;ba3ff3d&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Rework radio-archive-rss into a bookmarklet + feed builder &lt;a href=&quot;https://github.com/jamesking/tools/commit/f3aae5aca7394f243452c4ae04cbd22aa574d825&quot;&gt;&lt;code&gt;f3aae5a&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Add Radio Archive → Podcast RSS tool &lt;a href=&quot;https://github.com/jamesking/tools/commit/23480a2d1d478bbe22d3f30f37473771ac49b3c8&quot;&gt;&lt;code&gt;23480a2&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://tools.jamesking.io/radio-archive-rss/&quot;&gt;Tool&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/radio-archive-rss/readme.html&quot;&gt;Readme&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/radio-archive-rss/changelog.html&quot;&gt;Changelog&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated: Syndicate elsewhere (1 change)</title>
      <link>https://tools.jamesking.io/syndicate-elsewhere/changelog.html</link>
      <guid isPermaLink="false">tool:syndicate-elsewhere:2026-06-04</guid>
      <pubDate>Thu, 04 Jun 2026 02:07:06 GMT</pubDate>
      <category>web</category>
      <description>&lt;ul&gt;&lt;li&gt;Match Syndicate header top spacing to index/audiolog &lt;a href=&quot;https://github.com/jamesking/tools/commit/31d9fd97903b7d11786aaa80ca53b513b28bd569&quot;&gt;&lt;code&gt;31d9fd9&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://tools.jamesking.io/syndicate-elsewhere/&quot;&gt;Tool&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/syndicate-elsewhere/readme.html&quot;&gt;Readme&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/syndicate-elsewhere/changelog.html&quot;&gt;Changelog&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated: Audiolog episode creator (8 changes)</title>
      <link>https://tools.jamesking.io/audiolog-episode-creator/changelog.html</link>
      <guid isPermaLink="false">tool:audiolog-episode-creator:2026-06-04</guid>
      <pubDate>Thu, 04 Jun 2026 00:59:17 GMT</pubDate>
      <category>web</category>
      <description>&lt;ul&gt;&lt;li&gt;Audiolog: fix episode metadata modal (dark-mode legibility + overflow) &lt;a href=&quot;https://github.com/jamesking/tools/commit/65baaec29aa53506744ca5a0efacbe864fb138c6&quot;&gt;&lt;code&gt;65baaec&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Audiolog: thorough design-system pass &lt;a href=&quot;https://github.com/jamesking/tools/commit/2ca983fa624534051078237589b2804db7120785&quot;&gt;&lt;code&gt;2ca983f&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Refactor audiolog (cleanup): extract lib/theme.js, sweep comments, document architecture &lt;a href=&quot;https://github.com/jamesking/tools/commit/b46a348af30a0841a4f0cd6863a69a6b16445954&quot;&gt;&lt;code&gt;b46a348&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Refactor audiolog (phase 4): extract lib/transcript.js + lib/audio-buffer.js &lt;a href=&quot;https://github.com/jamesking/tools/commit/a7bca4bfe58caff199fe39622f4a2824b4a357b2&quot;&gt;&lt;code&gt;a7bca4b&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fix metadata.js: import formatTime/formatTimeHHMMSS from format.js &lt;a href=&quot;https://github.com/jamesking/tools/commit/d98cfae7ff50d994ca8c9af6f5bf2cb51ce23465&quot;&gt;&lt;code&gt;d98cfae&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Refactor audiolog (phase 4): extract lib/metadata.js (episode YAML) &lt;a href=&quot;https://github.com/jamesking/tools/commit/31d7c8dfad4562f0dfce044b1ba519bacce59c38&quot;&gt;&lt;code&gt;31d7c8d&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Refactor audiolog (phase 2c): extract lib/audio-encode.js &lt;a href=&quot;https://github.com/jamesking/tools/commit/388d5a4472b6ee1da4c0b483d574e589137367c5&quot;&gt;&lt;code&gt;388d5a4&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Refactor audiolog (phase 2c): extract lib/format.js &lt;a href=&quot;https://github.com/jamesking/tools/commit/c5bd80da3eff303f426326d2ab808804b9d80390&quot;&gt;&lt;code&gt;c5bd80d&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://tools.jamesking.io/audiolog-episode-creator/&quot;&gt;Tool&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/audiolog-episode-creator/readme.html&quot;&gt;Readme&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/audiolog-episode-creator/changelog.html&quot;&gt;Changelog&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated: Audiolog episode creator (6 changes)</title>
      <link>https://tools.jamesking.io/audiolog-episode-creator/changelog.html</link>
      <guid isPermaLink="false">tool:audiolog-episode-creator:2026-06-03</guid>
      <pubDate>Wed, 03 Jun 2026 22:54:59 GMT</pubDate>
      <category>web</category>
      <description>&lt;ul&gt;&lt;li&gt;Fix module parse error: remove dead duplicate audioBufferToWav &lt;a href=&quot;https://github.com/jamesking/tools/commit/6351232a75dc2919de2e629c405922f0ec628e6d&quot;&gt;&lt;code&gt;6351232&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Refactor audiolog (phase 2b): load app.js as an ES module &lt;a href=&quot;https://github.com/jamesking/tools/commit/75c5170436db8d0498c980fa1a2570339c87d900&quot;&gt;&lt;code&gt;75c5170&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Refactor audiolog (phase 2a): move script to external app.js &lt;a href=&quot;https://github.com/jamesking/tools/commit/0e9234bd254f38ee86e9413bbc0c5f43be8f9d95&quot;&gt;&lt;code&gt;0e9234b&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Refactor audiolog (phase 0-1): smoke-test checklist + extract CSS &lt;a href=&quot;https://github.com/jamesking/tools/commit/76947f7c9b388a5e73b51f369bd773ed654ccb18&quot;&gt;&lt;code&gt;76947f7&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Make audiolog theme-aware (enable dark mode) &lt;a href=&quot;https://github.com/jamesking/tools/commit/28b92afed6a54c23fc848ea0d6e2769fd51417b1&quot;&gt;&lt;code&gt;28b92af&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Apply design system to audiolog editor (light palette) &lt;a href=&quot;https://github.com/jamesking/tools/commit/cde70f6b341a35274981cdf497cf8ed7582b4fe4&quot;&gt;&lt;code&gt;cde70f6&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://tools.jamesking.io/audiolog-episode-creator/&quot;&gt;Tool&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/audiolog-episode-creator/readme.html&quot;&gt;Readme&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/audiolog-episode-creator/changelog.html&quot;&gt;Changelog&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>New tool: Syndicate elsewhere</title>
      <link>https://tools.jamesking.io/syndicate-elsewhere/readme.html</link>
      <guid isPermaLink="false">tool:syndicate-elsewhere:new</guid>
      <pubDate>Wed, 03 Jun 2026 13:56:16 GMT</pubDate>
      <category>web</category>
      <description>&lt;p&gt;A simple, local-first publishing dashboard for syndicating blog posts and podcast episodes from RSS feeds to social platforms like Bluesky, Mastodon, Slack, LinkedIn, and Threads.
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Fix broken README links: use root-absolute paths &lt;a href=&quot;https://github.com/jamesking/tools/commit/6e41681dd7db2a3ff25a19a216794b145479e145&quot;&gt;&lt;code&gt;6e41681&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Add Syndicate Elsewhere tool + Netlify RSS proxy &lt;a href=&quot;https://github.com/jamesking/tools/commit/033efc94760bbe6cd44604d47e270ff3e7e4eec3&quot;&gt;&lt;code&gt;033efc9&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://tools.jamesking.io/syndicate-elsewhere/&quot;&gt;Tool&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/syndicate-elsewhere/readme.html&quot;&gt;Readme&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/syndicate-elsewhere/changelog.html&quot;&gt;Changelog&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated: Audiolog preprocessor shortcut (2 changes)</title>
      <link>https://tools.jamesking.io/audiolog-shortcut/changelog.html</link>
      <guid isPermaLink="false">tool:audiolog-shortcut:2026-06-03</guid>
      <pubDate>Wed, 03 Jun 2026 12:15:06 GMT</pubDate>
      <category>shortcut</category>
      <description>&lt;ul&gt;&lt;li&gt;Fix lint &lt;a href=&quot;https://github.com/jamesking/tools/commit/fb4de215928db9bc57ea55408785f61b3e92aeb8&quot;&gt;&lt;code&gt;fb4de21&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Update Audiolog shortcut &lt;a href=&quot;https://github.com/jamesking/tools/commit/0b01de74bea7bd7e6137d85211fcb0ea27a9bf55&quot;&gt;&lt;code&gt;0b01de7&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://www.icloud.com/shortcuts/7cc9f8f8812847c9b588cf3e6945c06c&quot;&gt;Tool&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/audiolog-shortcut/readme.html&quot;&gt;Readme&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/audiolog-shortcut/changelog.html&quot;&gt;Changelog&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated: Audiolog episode creator (4 changes)</title>
      <link>https://tools.jamesking.io/audiolog-episode-creator/changelog.html</link>
      <guid isPermaLink="false">tool:audiolog-episode-creator:2025-11-15</guid>
      <pubDate>Sat, 15 Nov 2025 13:31:06 GMT</pubDate>
      <category>web</category>
      <description>&lt;ul&gt;&lt;li&gt;Add complete arrow shape schema based on TLDraw v2.0.2 documentation &lt;a href=&quot;https://github.com/jamesking/tools/commit/e32dc78b5b44ba85fd2307fa2316d1d136356c3e&quot;&gt;&lt;code&gt;e32dc78&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Add isPrecise property to complete arrow binding requirements &lt;a href=&quot;https://github.com/jamesking/tools/commit/a7d5fa7fedd92f17c04cf4e6cd97b20f4223e41c&quot;&gt;&lt;code&gt;a7d5fa7&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Add isExact property to arrow binding endpoints &lt;a href=&quot;https://github.com/jamesking/tools/commit/1a7d5e28c8aa08350e06b3e94c5159e918bcf87a&quot;&gt;&lt;code&gt;1a7d5e2&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Add normalizedAnchor property to arrow binding endpoints &lt;a href=&quot;https://github.com/jamesking/tools/commit/43c15812a4eff99d93bc4e200102d196e5db03da&quot;&gt;&lt;code&gt;43c1581&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://tools.jamesking.io/audiolog-episode-creator/&quot;&gt;Tool&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/audiolog-episode-creator/readme.html&quot;&gt;Readme&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/audiolog-episode-creator/changelog.html&quot;&gt;Changelog&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated: Audiolog episode creator (42 changes)</title>
      <link>https://tools.jamesking.io/audiolog-episode-creator/changelog.html</link>
      <guid isPermaLink="false">tool:audiolog-episode-creator:2025-11-14</guid>
      <pubDate>Fri, 14 Nov 2025 23:05:14 GMT</pubDate>
      <category>web</category>
      <description>&lt;ul&gt;&lt;li&gt;Add missing font property to arrow shapes &lt;a href=&quot;https://github.com/jamesking/tools/commit/44e16dde05da40c71ff25c158283048e913583dc&quot;&gt;&lt;code&gt;44e16dd&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Add missing labelColor property to arrow shapes &lt;a href=&quot;https://github.com/jamesking/tools/commit/4cdeac4765bea7dc9c96c6f1b8965f6a897777ec&quot;&gt;&lt;code&gt;4cdeac4&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fix TLDraw fractional index format - use base-36 encoding with &amp;#39;a&amp;#39; prefix &lt;a href=&quot;https://github.com/jamesking/tools/commit/2d45621e8544b41b35c1a51d51a6ffb872e75226&quot;&gt;&lt;code&gt;2d45621&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fix TLDraw index validation error - use index+1 to avoid invalid &amp;#39;a0&amp;#39;, &amp;#39;b0&amp;#39; keys &lt;a href=&quot;https://github.com/jamesking/tools/commit/8b1ea18a4c9661bf367935590cedcb3947bd195d&quot;&gt;&lt;code&gt;8b1ea18&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fix arrow ID validation - all shape IDs must start with &amp;#39;shape:&amp;#39; prefix including arrows &lt;a href=&quot;https://github.com/jamesking/tools/commit/658d3624d31818973c8cb4c051099039034f6d62&quot;&gt;&lt;code&gt;658d362&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fix validation error by using &amp;#39;cloud&amp;#39; shape instead of invalid &amp;#39;note&amp;#39; geo type for cluster labels &lt;a href=&quot;https://github.com/jamesking/tools/commit/471b3cf851f92f88c29606b174c5c51569f1e60f&quot;&gt;&lt;code&gt;471b3cf&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Update OpenAI prompt to request full sentences, thematic clusters with sticky notes, and poetic cross-clip connections &lt;a href=&quot;https://github.com/jamesking/tools/commit/5482f1a6013c10234fcd9c72e303a54857c4f8cc&quot;&gt;&lt;code&gt;5482f1a&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Refactor to use TLDraw native serialization (store.allRecords/store.put) instead of custom format mapping &lt;a href=&quot;https://github.com/jamesking/tools/commit/b579789ab82d4b555ec592ca3a744187a95f09a7&quot;&gt;&lt;code&gt;b579789&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Add detailed logging to debug arrow binding and rotation persistence issues &lt;a href=&quot;https://github.com/jamesking/tools/commit/9da55130932e8d14ddfc962a7d608b253b935322&quot;&gt;&lt;code&gt;9da5513&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fix arrow persistence by removing bound-shapes-only requirement and supporting free-floating arrows &lt;a href=&quot;https://github.com/jamesking/tools/commit/cdd7393d81e9bbae175a9e38f8c93a0182daae0b&quot;&gt;&lt;code&gt;cdd7393&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Capture and restore all TLDraw shape properties including colors, styles, rotation, and all shape types &lt;a href=&quot;https://github.com/jamesking/tools/commit/0dea909fa20b75e56b11416e59946608a87a56b3&quot;&gt;&lt;code&gt;0dea909&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Save TLDraw edits to localStorage when closing modal to preserve user changes &lt;a href=&quot;https://github.com/jamesking/tools/commit/9f3a4c9ac193caf7e634df69fca5b2cf98effe0b&quot;&gt;&lt;code&gt;9f3a4c9&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Use TLDraw native export methods with 3x scale for high-quality PNG output, remove html2canvas &lt;a href=&quot;https://github.com/jamesking/tools/commit/069a2bc18606a18e94bdefb34fec5660f6f697a2&quot;&gt;&lt;code&gt;069a2bc&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Initialize TLDraw editor after modal is appended to DOM to ensure iframe contentDocument is accessible &lt;a href=&quot;https://github.com/jamesking/tools/commit/53b1d546976afa4f188b87f04e01dd463eca59d6&quot;&gt;&lt;code&gt;53b1d54&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Wait for iframe to initialize before accessing document to fix modal loading &lt;a href=&quot;https://github.com/jamesking/tools/commit/8081c50e3c9025f463b0a4fc801eeccb1edd6d15&quot;&gt;&lt;code&gt;8081c50&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Add detailed logging and simplify iframe document access to diagnose modal loading issue &lt;a href=&quot;https://github.com/jamesking/tools/commit/2c027de54e8881e019d371461bd9dbd6b10e9158&quot;&gt;&lt;code&gt;2c027de&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fix iframe initialization race condition by waiting for iframe to be ready before accessing document &lt;a href=&quot;https://github.com/jamesking/tools/commit/413e808f79aacb06d12d15127e2c6e2c2b3cd6ea&quot;&gt;&lt;code&gt;413e808&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Use html2canvas to capture TLDraw canvas directly as PNG, bypassing SVG/font issues &lt;a href=&quot;https://github.com/jamesking/tools/commit/1492ad1456620c3282002188250cc8283ab294ee&quot;&gt;&lt;code&gt;1492ad1&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Replace SVG-to-PNG conversion with TLDraw&amp;#39;s native toImage() method for reliable PNG export &lt;a href=&quot;https://github.com/jamesking/tools/commit/b528f5b142df979b5a58e9513668777b8b56e753&quot;&gt;&lt;code&gt;b528f5b&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fix @font-face regex to properly match multi-line font definitions with base64 data &lt;a href=&quot;https://github.com/jamesking/tools/commit/a859b7f7915646255ac2a82d73f03c37693ab5ba&quot;&gt;&lt;code&gt;a859b7f&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fix template literal parsing by using RegExp constructor for closing tags and improve dollar sign escaping &lt;a href=&quot;https://github.com/jamesking/tools/commit/99cbaca0a09e913d228b9916d65e883c6555b2e2&quot;&gt;&lt;code&gt;99cbaca&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fix PNG export by removing embedded fonts from SVG - browsers block @font-face in SVG images &lt;a href=&quot;https://github.com/jamesking/tools/commit/51bb0b5932bd442a295b9fa69064d71fac95d784&quot;&gt;&lt;code&gt;51bb0b5&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Add detailed SVG logging and improve PNG export with proper namespace handling &lt;a href=&quot;https://github.com/jamesking/tools/commit/d0b6a6c8b3e6c91af3a8e8b43f4f8848a9c79c99&quot;&gt;&lt;code&gt;d0b6a6c&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Use data URI instead of blob URL for SVG to PNG conversion &lt;a href=&quot;https://github.com/jamesking/tools/commit/f34081459371c2e3aa6053f5fc79d7ff1bbdf6a3&quot;&gt;&lt;code&gt;f340814&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Add comprehensive logging to SVG to PNG conversion &lt;a href=&quot;https://github.com/jamesking/tools/commit/dca7ae541a28f640fb91850dfa084cbf4529873c&quot;&gt;&lt;code&gt;dca7ae5&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Add detailed logging to diagnose PNG export failure &lt;a href=&quot;https://github.com/jamesking/tools/commit/458d32b0100e611e821ae2382462a579754ad0c5&quot;&gt;&lt;code&gt;458d32b&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fix PNG export - convert Set to Array for getSvg &lt;a href=&quot;https://github.com/jamesking/tools/commit/6314e9244d5fc22fe8297f4a941a0396349f25eb&quot;&gt;&lt;code&gt;6314e92&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Add comprehensive debugging for PNG export issue &lt;a href=&quot;https://github.com/jamesking/tools/commit/482b5694b411896d03f2449ff1a75af6d48ba5e8&quot;&gt;&lt;code&gt;482b569&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Wait for PNG caching to complete before closing modal &lt;a href=&quot;https://github.com/jamesking/tools/commit/2f12774940a409695fb22ee606ff46d7ac9b0704&quot;&gt;&lt;code&gt;2f12774&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fix cover art PNG export by caching before modal closes &lt;a href=&quot;https://github.com/jamesking/tools/commit/fd2dd9305edb7596888ff7d6f6a1279f76c369f9&quot;&gt;&lt;code&gt;fd2dd93&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Add cover art caching and fix ZIP export &lt;a href=&quot;https://github.com/jamesking/tools/commit/a19c084d64f1009806a7cecdbeaec208501070e7&quot;&gt;&lt;code&gt;a19c084&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Add both isPrecise and isExact to arrow bindings &lt;a href=&quot;https://github.com/jamesking/tools/commit/977b30a03f31b61aa4385bf7d4cc5049f8837d59&quot;&gt;&lt;code&gt;977b30a&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fix TLDraw arrow binding validation error &lt;a href=&quot;https://github.com/jamesking/tools/commit/fc460f662a026ce719c3ea4c68abd35a12d87cd0&quot;&gt;&lt;code&gt;fc460f6&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Use import map to ensure single React instance &lt;a href=&quot;https://github.com/jamesking/tools/commit/0c7f735a47cc4e98c24107d91fed47e46cb87f06&quot;&gt;&lt;code&gt;0c7f735&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fix React version conflict - use ES modules for all libraries &lt;a href=&quot;https://github.com/jamesking/tools/commit/4fe4223ac3ce6ef67e7e4695c1aa5dd373b55393&quot;&gt;&lt;code&gt;4fe4223&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Switch to ES modules for TLDraw library loading &lt;a href=&quot;https://github.com/jamesking/tools/commit/2cb3bed426ab060b91edf9edb71f94fe47d2e4da&quot;&gt;&lt;code&gt;2cb3bed&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fix TLDraw library not loading - wait for scripts &lt;a href=&quot;https://github.com/jamesking/tools/commit/6557c2d351e02f80079f48a334e70646e0e2e177&quot;&gt;&lt;code&gt;6557c2d&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Add comprehensive debugging for blank cover art issue &lt;a href=&quot;https://github.com/jamesking/tools/commit/d01ecc0c66fd529ffa0151a0a7d61a2299f24d74&quot;&gt;&lt;code&gt;d01ecc0&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fix JavaScript leaking onto page in TLDraw iframe &lt;a href=&quot;https://github.com/jamesking/tools/commit/569d0e072d2cddd4e52abfce98ab4256411ac014&quot;&gt;&lt;code&gt;569d0e0&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Replace canvas preview with full TLDraw editor &lt;a href=&quot;https://github.com/jamesking/tools/commit/dd91d09c67f098ae5d248b62160677751015bcf2&quot;&gt;&lt;code&gt;dd91d09&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fix cover art generator to use correct OpenAI API key name &lt;a href=&quot;https://github.com/jamesking/tools/commit/bc35ed70890d5484da901794ecc5b71977cd999f&quot;&gt;&lt;code&gt;bc35ed7&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Add cover art generator feature to episode creator &lt;a href=&quot;https://github.com/jamesking/tools/commit/4037a7c6bf8eb10af71585e7b54561503182d8bd&quot;&gt;&lt;code&gt;4037a7c&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://tools.jamesking.io/audiolog-episode-creator/&quot;&gt;Tool&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/audiolog-episode-creator/readme.html&quot;&gt;Readme&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/audiolog-episode-creator/changelog.html&quot;&gt;Changelog&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated: Audiolog episode creator (5 changes)</title>
      <link>https://tools.jamesking.io/audiolog-episode-creator/changelog.html</link>
      <guid isPermaLink="false">tool:audiolog-episode-creator:2025-11-13</guid>
      <pubDate>Thu, 13 Nov 2025 16:55:18 GMT</pubDate>
      <category>web</category>
      <description>&lt;ul&gt;&lt;li&gt;Fix reset button to properly restore original transcript &lt;a href=&quot;https://github.com/jamesking/tools/commit/e2390c791b1bec66ef7f852cda7dee301200359a&quot;&gt;&lt;code&gt;e2390c7&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Add transcript reset feature to undo edits and merges &lt;a href=&quot;https://github.com/jamesking/tools/commit/619eb46bedbf721e70a0dc7c2cddf4d9cea3d076&quot;&gt;&lt;code&gt;619eb46&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Add speaker merge feature for transcript editing &lt;a href=&quot;https://github.com/jamesking/tools/commit/c05624ee7488ed69560300969178dab9456cfb40&quot;&gt;&lt;code&gt;c05624e&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fix missing speakerNames in YAML chapters output &lt;a href=&quot;https://github.com/jamesking/tools/commit/3c44e796eaca8829fc319fcf1e801dfc1d48678e&quot;&gt;&lt;code&gt;3c44e79&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Update speaker mapping to use index format in YAML export &lt;a href=&quot;https://github.com/jamesking/tools/commit/0a46f44f0bb1dd7aee1975a41b905a692a28bb7f&quot;&gt;&lt;code&gt;0a46f44&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://tools.jamesking.io/audiolog-episode-creator/&quot;&gt;Tool&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/audiolog-episode-creator/readme.html&quot;&gt;Readme&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/audiolog-episode-creator/changelog.html&quot;&gt;Changelog&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated: Audiolog episode creator (11 changes)</title>
      <link>https://tools.jamesking.io/audiolog-episode-creator/changelog.html</link>
      <guid isPermaLink="false">tool:audiolog-episode-creator:2025-11-11</guid>
      <pubDate>Tue, 11 Nov 2025 17:30:10 GMT</pubDate>
      <category>web</category>
      <description>&lt;ul&gt;&lt;li&gt;Persist transcript data and add to episode.yaml export &lt;a href=&quot;https://github.com/jamesking/tools/commit/2c447d1671d7badf1019c321e12a72c6bcc8346f&quot;&gt;&lt;code&gt;2c447d1&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Add speaker name mapping feature for transcript customization &lt;a href=&quot;https://github.com/jamesking/tools/commit/0c5f4ea3cae0bfa0ecffc68e105c81afa48be63a&quot;&gt;&lt;code&gt;0c5f4ea&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Add response_format parameter to get diarized JSON output &lt;a href=&quot;https://github.com/jamesking/tools/commit/0cb1c21968d6212f828e6000e4658a209224829f&quot;&gt;&lt;code&gt;0cb1c21&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Add raw JSON viewer for transcript debugging &lt;a href=&quot;https://github.com/jamesking/tools/commit/7610682bfeffd8614c03a9705859b02df76fbb3b&quot;&gt;&lt;code&gt;7610682&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Format transcript with speakers and timestamps &lt;a href=&quot;https://github.com/jamesking/tools/commit/01fe0a2aeb7d15ec966927353382feed27dbfedf&quot;&gt;&lt;code&gt;01fe0a2&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fix chunking_strategy to use server_vad instead of auto &lt;a href=&quot;https://github.com/jamesking/tools/commit/3e6c025ecde77346d3378708ec19a897e451b352&quot;&gt;&lt;code&gt;3e6c025&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Add chunking_strategy parameter for diarization model &lt;a href=&quot;https://github.com/jamesking/tools/commit/5ca694648e817d9266c861d917a95575a9a00221&quot;&gt;&lt;code&gt;5ca6946&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fix audio decoding error in transcript generation &lt;a href=&quot;https://github.com/jamesking/tools/commit/d883a3dc8f5e75b93ca2ccc0c8f07fb93cbe5744&quot;&gt;&lt;code&gt;d883a3d&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Refactor transcript generation to per-clip approach &lt;a href=&quot;https://github.com/jamesking/tools/commit/e7abf74e836104d0a281bbf939bd5d4ea1d94c9c&quot;&gt;&lt;code&gt;e7abf74&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Add transcript generation feature with OpenAI integration &lt;a href=&quot;https://github.com/jamesking/tools/commit/7219fdf6e260c219ee17fe8d2a0210ab896e88c2&quot;&gt;&lt;code&gt;7219fdf&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Add individual clip export to audiolog episode creator &lt;a href=&quot;https://github.com/jamesking/tools/commit/fe462fc8625ea45463dcff46f0dd8d763c50cfac&quot;&gt;&lt;code&gt;fe462fc&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://tools.jamesking.io/audiolog-episode-creator/&quot;&gt;Tool&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/audiolog-episode-creator/readme.html&quot;&gt;Readme&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/audiolog-episode-creator/changelog.html&quot;&gt;Changelog&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Updated: Audiolog episode creator (3 changes)</title>
      <link>https://tools.jamesking.io/audiolog-episode-creator/changelog.html</link>
      <guid isPermaLink="false">tool:audiolog-episode-creator:2025-11-10</guid>
      <pubDate>Mon, 10 Nov 2025 17:10:49 GMT</pubDate>
      <category>web</category>
      <description>&lt;ul&gt;&lt;li&gt;Keep episode metadata persistent across generations &lt;a href=&quot;https://github.com/jamesking/tools/commit/a297d634162e42e96c62d9ed2ff3944944377036&quot;&gt;&lt;code&gt;a297d63&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Add episode metadata persistence and improve episode counter logic &lt;a href=&quot;https://github.com/jamesking/tools/commit/511499bdd5d9c29601663efec8a02f6862c92c6a&quot;&gt;&lt;code&gt;511499b&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fix clip ordering bugs in audiolog episode creator &lt;a href=&quot;https://github.com/jamesking/tools/commit/a258b4f0a37a885bf12976732ed3368f117d6954&quot;&gt;&lt;code&gt;a258b4f&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://tools.jamesking.io/audiolog-episode-creator/&quot;&gt;Tool&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/audiolog-episode-creator/readme.html&quot;&gt;Readme&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/audiolog-episode-creator/changelog.html&quot;&gt;Changelog&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>New tool: Audiolog preprocessor shortcut</title>
      <link>https://tools.jamesking.io/audiolog-shortcut/readme.html</link>
      <guid isPermaLink="false">tool:audiolog-shortcut:new</guid>
      <pubDate>Thu, 02 Oct 2025 22:47:55 GMT</pubDate>
      <category>shortcut</category>
      <description>&lt;p&gt;An Apple Shortcut for iOS and macOS that selects recent screen recordings from your photo library, extracts the audio, thumbnail image and metadata and saves the results in a dated folder.
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Add external tools &lt;a href=&quot;https://github.com/jamesking/tools/commit/08c9641deecce5603f01f7f20c522071f37939bc&quot;&gt;&lt;code&gt;08c9641&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://www.icloud.com/shortcuts/7cc9f8f8812847c9b588cf3e6945c06c&quot;&gt;Tool&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/audiolog-shortcut/readme.html&quot;&gt;Readme&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/audiolog-shortcut/changelog.html&quot;&gt;Changelog&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>New tool: Font collection</title>
      <link>https://tools.jamesking.io/fonts-collection/readme.html</link>
      <guid isPermaLink="false">tool:fonts-collection:new</guid>
      <pubDate>Thu, 02 Oct 2025 22:47:55 GMT</pubDate>
      <category>web</category>
      <description>&lt;p&gt;A collection of openly licensed fonts that I find interesting or beautiful. These are fonts that I am bookmarking or actively using. As well as a font-browser, this tool also serves the CSS and webfont files for inclusion in website projects.
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Add external tools &lt;a href=&quot;https://github.com/jamesking/tools/commit/08c9641deecce5603f01f7f20c522071f37939bc&quot;&gt;&lt;code&gt;08c9641&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://fonts.jamesking.io&quot;&gt;Tool&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/fonts-collection/readme.html&quot;&gt;Readme&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/fonts-collection/changelog.html&quot;&gt;Changelog&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>New tool: Audiolog episode creator</title>
      <link>https://tools.jamesking.io/audiolog-episode-creator/readme.html</link>
      <guid isPermaLink="false">tool:audiolog-episode-creator:new</guid>
      <pubDate>Sun, 11 May 2025 21:14:40 GMT</pubDate>
      <category>web</category>
      <description>&lt;p&gt;A browser-based app for processing and editing episodes of my &lt;a href=&quot;https://audiolog.jamesking.io&quot;&gt;Audiolog&lt;/a&gt;.
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Fix capitalisation and expand README &lt;a href=&quot;https://github.com/jamesking/tools/commit/98a398f217ecc8cbb8d66c0467330e34d7cb675f&quot;&gt;&lt;code&gt;98a398f&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Add build process to create a tools index file &lt;a href=&quot;https://github.com/jamesking/tools/commit/174acedc0bdf272932f2964ad5e84470559f84c8&quot;&gt;&lt;code&gt;174aced&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Tidy up repo and rename tools &lt;a href=&quot;https://github.com/jamesking/tools/commit/c3310e55955ab4cc6a5c982ffbf2b49654b7545c&quot;&gt;&lt;code&gt;c3310e5&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://tools.jamesking.io/audiolog-episode-creator/&quot;&gt;Tool&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/audiolog-episode-creator/readme.html&quot;&gt;Readme&lt;/a&gt; • &lt;a href=&quot;https://tools.jamesking.io/audiolog-episode-creator/changelog.html&quot;&gt;Changelog&lt;/a&gt;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
