<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
  <title>Ridgport</title>
  <link>https://jemai.cc/demo/ridgport/en/</link>
  <description>Fictional machinery works · CF CMS forge demo</description>
  <language>en</language>
  <lastBuildDate>Mon, 19 Oct 2026 05:39:38 GMT</lastBuildDate>
  <atom:link href="https://jemai.cc/demo/ridgport/en/rss.xml" rel="self" type="application/rss+xml"/>
  <item>
    <title>Short-run window: fifteen working days</title>
    <link>https://jemai.cc/demo/ridgport/en/posts/short-run-window</link>
    <guid isPermaLink="true">https://jemai.cc/demo/ridgport/en/posts/short-run-window</guid>
    <pubDate>Mon, 19 Oct 2026 02:53:16 GMT</pubDate>
    <description></description>
    <content:encoded><![CDATA[<p>A fictional delivery note. When the drawing is ready, the run can be scheduled—no fake lead times.</p>
]]></content:encoded>
    
  </item>
  <item>
    <title>Gearbox housing specs updated</title>
    <link>https://jemai.cc/demo/ridgport/en/posts/gearbox-housing-spec</link>
    <guid isPermaLink="true">https://jemai.cc/demo/ridgport/en/posts/gearbox-housing-spec</guid>
    <pubDate>Mon, 19 Oct 2026 02:53:15 GMT</pubDate>
    <description></description>
    <content:encoded><![CDATA[<p>A fictional product note. Datum schemes sit in the process sheet; casting and machining share one part number.</p>
]]></content:encoded>
    
  </item>
  <item>
    <title>CNC line upgrade: probes on the floor</title>
    <link>https://jemai.cc/demo/ridgport/en/posts/cnc-line-upgrade</link>
    <guid isPermaLink="true">https://jemai.cc/demo/ridgport/en/posts/cnc-line-upgrade</guid>
    <pubDate>Mon, 19 Oct 2026 02:53:13 GMT</pubDate>
    <description></description>
    <content:encoded><![CDATA[<p>A fictional plant note. In-process probes cut first-article time; inspection packs travel with the lot.</p>
]]></content:encoded>
    
  </item>
  <item>
    <title>A directory for answer engines</title>
    <link>https://jemai.cc/demo/ridgport/en/posts/a-directory-for-answer-engines</link>
    <guid isPermaLink="true">https://jemai.cc/demo/ridgport/en/posts/a-directory-for-answer-engines</guid>
    <pubDate>Tue, 16 Jun 2026 09:00:00 GMT</pubDate>
    <description>llms.txt is the short directory. llms-full.txt is the full text. Both list only published translations.</description>
    <content:encoded><![CDATA[<p>An answer engine does not read your site as a pile of divs. It looks for a directory it can cite: what this is, which languages exist, and what each essay says.</p>
<p><code>llms.txt</code> is the short directory. <code>llms-full.txt</code> carries the full text. Both are built from published translations, not from drafts in the admin.</p>
<h2 id="what-the-page-needs">What the page needs</h2>
<ul>
<li>A clean URL per language: <code>/zh/</code>, <code>/en/</code>, <code>/ja/</code>, <code>/es/</code>, <code>/ar/</code>.</li>
<li>A summary, a FAQ, and breadcrumbs inside the article.</li>
<li>Arabic pages that set <code>dir=&quot;rtl&quot;</code> and show up in hreflang, the sitemap, and RSS.</li>
</ul>
<p>The structure a person reads and the structure a model reads are the same one. The directory is just the short version.</p>
]]></content:encoded>
    <category>i18n</category>
    <category>SEO</category>
  </item>
  <item>
    <title>Small models belong at the edge</title>
    <link>https://jemai.cc/demo/ridgport/en/posts/small-models-at-the-edge</link>
    <guid isPermaLink="true">https://jemai.cc/demo/ridgport/en/posts/small-models-at-the-edge</guid>
    <pubDate>Wed, 08 Apr 2026 09:00:00 GMT</pubDate>
    <description>Leave translation on the publish button, not on every read. A note on Workers AI, the free allotment, and five languages.</description>
    <content:encoded><![CDATA[<p>Most teams picture intelligence as a round trip: the request flies to a large model somewhere else, then flies back. A chat window can wait. A blog post and a publish button should not.</p>
<p>This site keeps the model on the write path. The author finishes in one language, hits publish, and the translation happens in that same action. The result is a row in D1. Later, a reader opens a finished page rather than a script that is still loading.</p>
<h2 id="why-translate-at-publish-time">Why translate at publish time</h2>
<p>Three concrete reasons:</p>
<ol>
<li><p><strong>Cost stays predictable.</strong> The Workers AI free allotment resets daily. Translation happens when you publish, not on every read.</p>
</li>
<li><p><strong>The draft can be edited.</strong> The model hands you a draft. The title, the terms, and the sentence you share on X should be editable, and a language you have touched can be locked.</p>
</li>
<li><p><strong>Crawlers see a complete page.</strong> Search engines and answer engines read semantic HTML, including the summary and the FAQ, not an empty shell.</p>
</li>
</ol>
<h2 id="what-belongs-at-the-edge">What belongs at the edge</h2>
<table>
<thead>
<tr>
<th>Fits</th>
<th>Does not fit</th>
</tr>
</thead>
<tbody><tr>
<td>Translation, summaries, FAQ, labels</td>
<td>Betting a whole conversation on the free allotment</td>
</tr>
<tr>
<td>One run at publish time</td>
<td>Waiting on a large model inside every page request</td>
</tr>
<tr>
<td>A draft a person can revise</td>
<td>Ephemeral generation with no record</td>
</tr>
</tbody></table>
<p>Short code, links, and embed markers are not sent to the translator. This call stays as written:</p>
<pre class="code"><code class="language-ts">const translated = await env.AI.run(&quot;@cf/meta/m2m100-1.2b&quot;, {
  text: paragraph,
  source_lang: &quot;zh&quot;,
  target_lang: &quot;ar&quot;,
});</code></pre>
<h2 id="the-relationship-with-x">The relationship with X</h2>
<p>Technical discussion rarely lives in the comment box under a post. Each article keeps a share line, and the body can embed one public post.</p>
<figure class="x-embed" dir="ltr"><blockquote class="twitter-tweet" data-dnt="true"><p><a href="https://x.com/i/status/20">View this post on X</a></p></blockquote></figure>
<p>When there is no embed, the page does not request a third-party script.</p>
<h2 id="arabic-is-not-an-extra-language">Arabic is not an extra language</h2>
<p>Right-to-left is not finished when you set <code>dir</code>. Navigation, lists, and the quotation rule follow the inline direction, while code stays left to right. <code>hreflang</code> uses <code>ar</code>, and the sitemap and RSS each have an Arabic edition. Spanish joins the routes, the sitemap, and the switcher at <code>/es/</code>.</p>
<h2 id="what-to-keep">What to keep</h2>
<ul>
<li>One source language, and several published translations.</li>
<li>Model calls on the write path. The read path only touches the database and object storage.</li>
<li>A summary and a FAQ that a person can read, and a generative engine can read too.</li>
</ul>
]]></content:encoded>
    <category>Edge</category>
    <category>i18n</category>
    <category>Workers AI</category>
  </item>
</channel>
</rss>
