<?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: Terry Shine</title>
    <description>The latest articles on DEV Community by Terry Shine (@terryshine).</description>
    <link>https://dev.to/terryshine</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%2F3889144%2F94274161-86b2-4d15-b2f7-ab05e0af329e.jpg</url>
      <title>DEV Community: Terry Shine</title>
      <link>https://dev.to/terryshine</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/terryshine"/>
    <language>en</language>
    <item>
      <title>The hard part of an AI quiz generator isn't the questions — it's the wrong answers</title>
      <dc:creator>Terry Shine</dc:creator>
      <pubDate>Thu, 11 Jun 2026 09:14:39 +0000</pubDate>
      <link>https://dev.to/terryshine/the-hard-part-of-an-ai-quiz-generator-isnt-the-questions-its-the-wrong-answers-3e29</link>
      <guid>https://dev.to/terryshine/the-hard-part-of-an-ai-quiz-generator-isnt-the-questions-its-the-wrong-answers-3e29</guid>
      <description>&lt;p&gt;If you wire an LLM up to "write me 10 multiple-choice questions about photosynthesis," you'll get something that looks great in the demo and falls apart the moment a real student uses it. I've been building a quiz generator for a while now, and almost all of the actual engineering went into things that have nothing to do with generating the question text. Here are the problems that turned out to matter.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. The distractors are the whole game.&lt;/strong&gt; A multiple-choice question is only as good as its wrong answers. If the three distractors are obviously wrong — different category, absurd, or grammatically mismatched with the stem — the student picks the right answer by elimination without knowing anything. Good distractors have to be &lt;em&gt;plausible&lt;/em&gt;: common misconceptions, adjacent concepts, the answer to a slightly different question. Getting an LLM to produce genuinely tempting wrong answers (rather than filler) is much harder than getting it to produce the correct one, and it's where most generated quizzes quietly fail.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Answer leakage.&lt;/strong&gt; LLMs love to give the game away. The correct option is subtly longer, or more precisely worded, or the only one that's grammatically consistent with the stem. Humans pick up on these tells unconsciously. You have to actively normalize option length and phrasing so the correct answer doesn't stand out, and check that the stem doesn't contain a word that only appears in the right option.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Exactly one defensibly-correct answer.&lt;/strong&gt; This is the bug that erodes trust fastest. The model writes a question where two options are arguably correct, or where the "correct" one is wrong on a technicality. You need a validation pass — ideally a separate check — that confirms the keyed answer is unambiguously right and the others are unambiguously wrong, and discards or regenerates anything that isn't.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Coverage from messy source material.&lt;/strong&gt; When the input is a PDF or a wall of pasted notes, the easy failure mode is to generate five questions about the first paragraph and ignore the rest. Useful generation means chunking the source, spreading questions across the material, and skipping boilerplate (headers, references, page furniture) so the quiz reflects the whole document, not just whatever was at the top.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Knowing what you're bad at.&lt;/strong&gt; Fact-dense material — biology, history, vocabulary, definitions — generates well. Multi-step reasoning, math proofs, and anything where the "question" is really an argument generate poorly, and it's more honest to be upfront about that than to emit confident garbage.&lt;/p&gt;

&lt;p&gt;None of this is glamorous, and none of it shows up in a 30-second demo. But it's the difference between a quiz a student can actually study from and four random options where the wrong ones are obviously wrong. If you want to see how it holds up on your own material, you can paste a topic, notes, or a PDF into &lt;a href="https://quiz-maker.net" rel="noopener noreferrer"&gt;Quiz Maker&lt;/a&gt; — it's free and there's no signup to generate. I'm genuinely interested in where it still breaks, so if you find a subject where the distractors fall flat, that's useful to know.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>nlp</category>
      <category>edtech</category>
    </item>
    <item>
      <title>How to Transcribe a YouTube Video (Free, in Under a Minute)</title>
      <dc:creator>Terry Shine</dc:creator>
      <pubDate>Wed, 10 Jun 2026 06:55:21 +0000</pubDate>
      <link>https://dev.to/terryshine/how-to-transcribe-a-youtube-video-free-in-under-a-minute-co7</link>
      <guid>https://dev.to/terryshine/how-to-transcribe-a-youtube-video-free-in-under-a-minute-co7</guid>
      <description>&lt;p&gt;Building a "paste a YouTube link, get a transcript" feature sounds trivial until you deploy it to a server. The moment your request comes from a datacenter IP instead of a residential one, YouTube responds with &lt;code&gt;LOGIN_REQUIRED&lt;/code&gt; or quietly serves nothing. Here's how VidTranscriber handles it.&lt;/p&gt;

&lt;h3&gt;
  
  
  The problem
&lt;/h3&gt;

&lt;p&gt;There are two ways to get text from a YouTube video:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Existing captions&lt;/strong&gt; — if the uploader (or YouTube's auto-caption) provides them, you can fetch the caption track directly. Fast, free, no transcription needed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transcribe the audio&lt;/strong&gt; — pull the audio stream and run it through a speech-to-text model (Whisper-family). Works for any video, but costs compute.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Both start with talking to YouTube from your server — and that's where it breaks. YouTube aggressively gates datacenter traffic: the &lt;code&gt;watch&lt;/code&gt; page and InnerTube API return &lt;code&gt;LOGIN_REQUIRED&lt;/code&gt;, and naive audio fetching gets reCAPTCHA'd.&lt;/p&gt;

&lt;h3&gt;
  
  
  The approach
&lt;/h3&gt;

&lt;p&gt;The fix is to separate &lt;em&gt;where the request originates&lt;/em&gt; from &lt;em&gt;where the work happens&lt;/em&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A Cloudflare Worker handles the user request and orchestration.&lt;/li&gt;
&lt;li&gt;Caption/audio fetching is routed through a path whose egress isn't treated as a bot — so the &lt;code&gt;LOGIN_REQUIRED&lt;/code&gt; wall doesn't trigger.&lt;/li&gt;
&lt;li&gt;Captions, when available, become the &lt;strong&gt;primary&lt;/strong&gt; path (no transcription cost). Only when there are no usable captions do we fall back to downloading audio and running Whisper.&lt;/li&gt;
&lt;li&gt;Long jobs go onto a queue (Cloudflare Queues) so the request returns immediately and the transcript streams in as it completes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why captions-first matters
&lt;/h3&gt;

&lt;p&gt;Most "transcript generator" traffic is for videos that already have captions — talks, tutorials, news. Serving those from the caption track is instant and free, which means the expensive Whisper path is reserved for the minority of videos that actually need it. That's the difference between a tool that's cheap to run and one that isn't.&lt;/p&gt;

&lt;h3&gt;
  
  
  What's still hard
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;IP reputation drifts&lt;/strong&gt; — what works today can get throttled tomorrow, so the extraction path needs monitoring and fallbacks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Caption quality varies&lt;/strong&gt; — auto-generated captions lack punctuation and speaker labels, so for quality output we sometimes re-transcribe even when captions exist.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Very long videos&lt;/strong&gt; need chunking to stay within memory and timeout budgets.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Try it
&lt;/h3&gt;

&lt;p&gt;If you want to see the captions-first path in action, paste any public video into &lt;a href="https://vidtranscriber.com/tools/youtube-transcript-generator" rel="noopener noreferrer"&gt;the YouTube transcript generator&lt;/a&gt; — 60 minutes free, no signup.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>cloudflare</category>
      <category>ai</category>
    </item>
    <item>
      <title>Introducing VidCompress: in-browser video compression for developers who hate uploading files</title>
      <dc:creator>Terry Shine</dc:creator>
      <pubDate>Thu, 04 Jun 2026 15:02:40 +0000</pubDate>
      <link>https://dev.to/terryshine/introducing-vidcompress-in-browser-video-compression-for-developers-who-hate-uploading-files-e0e</link>
      <guid>https://dev.to/terryshine/introducing-vidcompress-in-browser-video-compression-for-developers-who-hate-uploading-files-e0e</guid>
      <description>&lt;p&gt;I got tired of the same routine. You want to shrink a video, you search for a "free online compressor," and it makes you upload the whole file to a server, sit in a queue, and then hands it back with a watermark on it. On a slow connection, a 200 MB clip means uploading 200 MB and pulling it back down again, just to make the thing smaller. And now your footage is sitting on somebody else's machine.&lt;/p&gt;

&lt;p&gt;So &lt;a href="https://dev.to/compress"&gt;VidCompress&lt;/a&gt; does it backwards. If the file is under 300 MB, the compression runs in your browser and the video never gets uploaded anywhere. Here's roughly how that works, and the parts that still give us trouble.&lt;/p&gt;

&lt;h2&gt;
  
  
  WebCodecs does the heavy lifting
&lt;/h2&gt;

&lt;p&gt;Browsers have shipped a low-level media API called WebCodecs for a while now — &lt;code&gt;VideoEncoder&lt;/code&gt; and &lt;code&gt;VideoDecoder&lt;/code&gt;. It hands JavaScript the hardware encoder more or less directly, which is the only reason any of this is possible. You decode the source into raw frames, re-encode them at a lower bitrate, and stuff the result back into an MP4. No server in the loop.&lt;/p&gt;

&lt;p&gt;Roughly:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Demux and decode the source with &lt;code&gt;VideoDecoder&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Re-encode the frames with &lt;code&gt;VideoEncoder&lt;/code&gt; at a bitrate worked out from the size you're aiming for.&lt;/li&gt;
&lt;li&gt;Mux the new chunks into an MP4.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;When the OS exposes a hardware encoder — most do these days — this is usually quicker than the upload would have been. And it's private for the obvious reason that nothing leaves your machine.&lt;/p&gt;

&lt;h2&gt;
  
  
  The annoying part is knowing when it &lt;em&gt;won't&lt;/em&gt; work
&lt;/h2&gt;

&lt;p&gt;WebCodecs is great until it isn't. Support is uneven across Chrome, Safari and Firefox. Some files just won't decode — older codecs, odd color spaces. And a long 4K video will happily eat all your memory halfway through the encode.&lt;/p&gt;

&lt;p&gt;So most of the real work went into failing gracefully, not the happy path. We sort the failures into a few buckets:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;LOCAL_OOM&lt;/code&gt; — ran out of memory mid-encode.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;UNSUPPORTED_CODEC&lt;/code&gt; — the browser can't decode this input.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;NO_HARDWARE_PATH&lt;/code&gt; — no fast local route on this browser at all.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When one of those fires you don't get a cryptic error. The job quietly retries on a server-side FFmpeg path (CRF-based) instead. Anything over 300 MB skips the browser entirely and goes straight there.&lt;/p&gt;

&lt;p&gt;That split — local first, cloud only when it has to be — is basically the product. Phone clips, &lt;a href="https://dev.to/compress"&gt;screen recordings&lt;/a&gt;, &lt;a href="https://dev.to/compress-video-for-discord"&gt;Discord gameplay captures&lt;/a&gt;: small enough to stay on your device and finish in seconds. The occasional giant &lt;a href="https://dev.to/compress-4k-video"&gt;4K master&lt;/a&gt; still works, it just takes the slower road.&lt;/p&gt;

&lt;h2&gt;
  
  
  You pick a size, not a "quality"
&lt;/h2&gt;

&lt;p&gt;Nobody opening a compressor is thinking in CRF or bitrate ladders. They're thinking "it has to fit Discord" or "it has to go through email." So we work backwards from the target size instead of asking people to guess a quality slider:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;target_bitrate ≈ (target_size_bytes * 8) / duration_seconds - audio_bitrate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The presets are just the limits people actually run into:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Destination&lt;/th&gt;
&lt;th&gt;Limit&lt;/th&gt;
&lt;th&gt;Preset target&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Discord (no Nitro)&lt;/td&gt;
&lt;td&gt;10 MB&lt;/td&gt;
&lt;td&gt;under 10 MB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;WhatsApp&lt;/td&gt;
&lt;td&gt;16 MB&lt;/td&gt;
&lt;td&gt;under 16 MB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Email (Gmail / Outlook)&lt;/td&gt;
&lt;td&gt;25 MB&lt;/td&gt;
&lt;td&gt;under 25 MB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Social / Telegram&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;~50 MB&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;If you don't care about a specific app, the &lt;a href="https://dev.to/video-compressor"&gt;plain video compressor&lt;/a&gt; just lets you type a number of MB. Either way the job is the same: hit the size, and spend whatever bitrate is left where your eyes will actually notice, so you &lt;a href="https://dev.to/compress-video-without-losing-quality"&gt;don't lose quality you'd care about&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it still falls down
&lt;/h2&gt;

&lt;p&gt;A few things I'd rather just say out loud:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Long 4K on a cheaper laptop or a phone will OOM. It's the number-one reason a job ends up on the cloud path.&lt;/li&gt;
&lt;li&gt;Safari trails Chromium on WebCodecs, so the local route shows up more often in Chrome and Edge.&lt;/li&gt;
&lt;li&gt;Multiple audio tracks or unusual audio codecs get punted to the server too.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want to twist every knob yourself and you're sat at a desk, HandBrake is honestly still the better tool — I wrote down &lt;a href="https://dev.to/handbrake-alternative"&gt;where we differ from HandBrake&lt;/a&gt; if you're weighing it. You're trading an install and a learning curve for "drop a file in a tab, get it back smaller."&lt;/p&gt;

&lt;h2&gt;
  
  
  So why do the browser thing at all
&lt;/h2&gt;

&lt;p&gt;Mostly privacy. A pre-launch demo, something medical, a private clip — it just never goes anywhere. Speed is the other reason: no upload, no queue, so short clips are done almost instantly. And because there's no server bill on the local path, there's nothing to lock behind a signup or stamp a watermark on.&lt;/p&gt;

&lt;p&gt;If you've ever bailed on a compressor because it wanted to upload your file, make you wait, then watermark it — &lt;a href="https://dev.to/compress"&gt;give this one a try&lt;/a&gt;. Under 300 MB it stays in your browser. No account, no watermark.&lt;/p&gt;

</description>
      <category>tool</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Classroom quiz templates that save teachers prep time</title>
      <dc:creator>Terry Shine</dc:creator>
      <pubDate>Mon, 11 May 2026 13:18:01 +0000</pubDate>
      <link>https://dev.to/terryshine/classroom-quiz-templates-that-save-teachers-prep-time-4gm6</link>
      <guid>https://dev.to/terryshine/classroom-quiz-templates-that-save-teachers-prep-time-4gm6</guid>
      <description>&lt;p&gt;Teachers do not need another flashy quiz tool.&lt;/p&gt;

&lt;p&gt;They need a faster way to turn lesson material into something they can actually use in class.&lt;/p&gt;

&lt;p&gt;That is why I think &lt;strong&gt;template-based quiz creation&lt;/strong&gt; is more useful than a generic “AI quiz maker” pitch.&lt;/p&gt;

&lt;h2&gt;
  
  
  The real classroom problem
&lt;/h2&gt;

&lt;p&gt;Most quiz workflows break in one of two places:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;building the first version still takes too long&lt;/li&gt;
&lt;li&gt;the output is too generic to use without cleanup&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A useful classroom quiz workflow should help with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;daily checks&lt;/li&gt;
&lt;li&gt;lesson wrap-ups&lt;/li&gt;
&lt;li&gt;formative assessment&lt;/li&gt;
&lt;li&gt;fast comprehension checks after reading or explanation&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why templates help
&lt;/h2&gt;

&lt;p&gt;A template gives you a starting structure before you add AI.&lt;/p&gt;

&lt;p&gt;That matters because classroom quizzes are not just “questions about a topic.”&lt;br&gt;
They usually need the right balance of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;clarity&lt;/li&gt;
&lt;li&gt;question variety&lt;/li&gt;
&lt;li&gt;age-appropriate phrasing&lt;/li&gt;
&lt;li&gt;reasonable difficulty&lt;/li&gt;
&lt;li&gt;quick editability for a real lesson plan&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A simple workflow I like
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Start from the lesson goal&lt;br&gt;&lt;br&gt;
What should students prove they understood?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use a template instead of a blank page&lt;br&gt;&lt;br&gt;
This cuts setup friction immediately.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Generate a first pass&lt;br&gt;&lt;br&gt;
Use the source material, not just a topic label.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Edit for your classroom&lt;br&gt;&lt;br&gt;
Tighten wording, remove ambiguity, and adjust difficulty.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  One template worth testing
&lt;/h2&gt;

&lt;p&gt;If you want a practical starting point, this classroom page is a good example:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://quiz-maker.net/quiz-templates/classroom-quiz-template?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=qm_batch1&amp;amp;utm_content=classroom_template" rel="noopener noreferrer"&gt;Classroom quiz template&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I like this direction because it frames the tool around a real use case:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;save prep time&lt;/li&gt;
&lt;li&gt;create daily checks faster&lt;/li&gt;
&lt;li&gt;move from lesson material to usable quiz without starting from scratch&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The bigger takeaway
&lt;/h2&gt;

&lt;p&gt;For education tools, “AI” is not the selling point.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Time saved before class starts&lt;/strong&gt; is the selling point.&lt;/p&gt;

&lt;p&gt;That is the bar I would use for any quiz workflow.&lt;/p&gt;

&lt;p&gt;If you build or use classroom quizzes, I’d love to know what matters most in practice:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;speed?&lt;/li&gt;
&lt;li&gt;question quality?&lt;/li&gt;
&lt;li&gt;editability?&lt;/li&gt;
&lt;li&gt;alignment with lesson goals?&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>education</category>
      <category>productivity</category>
      <category>ai</category>
      <category>teaching</category>
    </item>
    <item>
      <title>How to make ChatGPT text sound more human without rewriting from scratch</title>
      <dc:creator>Terry Shine</dc:creator>
      <pubDate>Mon, 11 May 2026 13:17:59 +0000</pubDate>
      <link>https://dev.to/terryshine/how-to-make-chatgpt-text-sound-more-human-without-rewriting-from-scratch-3n6d</link>
      <guid>https://dev.to/terryshine/how-to-make-chatgpt-text-sound-more-human-without-rewriting-from-scratch-3n6d</guid>
      <description>&lt;p&gt;Most AI writing does not fail because the ideas are bad.&lt;/p&gt;

&lt;p&gt;It fails because the tone feels slightly off.&lt;/p&gt;

&lt;p&gt;You can usually spot the pattern fast:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;too polished&lt;/li&gt;
&lt;li&gt;too uniform&lt;/li&gt;
&lt;li&gt;too many generic transitions&lt;/li&gt;
&lt;li&gt;not enough sentence rhythm variation&lt;/li&gt;
&lt;li&gt;meaning is technically right, but it still doesn't sound like a person would send it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is the part people mean when they say &lt;strong&gt;"this sounds AI-written"&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I change first
&lt;/h2&gt;

&lt;p&gt;When I try to make ChatGPT text sound more human, I do not start by rewriting everything.&lt;/p&gt;

&lt;p&gt;I start with four smaller fixes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Flatten obvious filler&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Phrases like “delve into,” “in today’s fast-paced world,” or “it is important to note” make text feel synthetic fast.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Restore sentence variety&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
AI often produces paragraphs where every sentence has the same length and cadence. Real writing usually has more rhythm.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Keep the original intent&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
The goal is not “sound random.” The goal is “keep the meaning, lose the robotic layer.”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Make transitions less formal&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
A lot of AI writing reads like it is trying too hard to sound complete. Human writing often sounds more direct.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Where this matters most
&lt;/h2&gt;

&lt;p&gt;I see this show up most often in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;personal statements&lt;/li&gt;
&lt;li&gt;cover letters&lt;/li&gt;
&lt;li&gt;emails&lt;/li&gt;
&lt;li&gt;essays&lt;/li&gt;
&lt;li&gt;landing page copy&lt;/li&gt;
&lt;li&gt;first drafts of blog posts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In all of those cases, the issue usually is not &lt;em&gt;content generation&lt;/em&gt;.&lt;br&gt;
It is &lt;em&gt;tone correction&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  A simpler workflow than full rewrites
&lt;/h2&gt;

&lt;p&gt;The workflow I prefer is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;generate the first draft&lt;/li&gt;
&lt;li&gt;identify the lines that feel robotic&lt;/li&gt;
&lt;li&gt;preserve the core meaning&lt;/li&gt;
&lt;li&gt;rewrite only the places where tone breaks trust&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That gets you closer to writing that still says what you want, but sounds less machine-shaped.&lt;/p&gt;

&lt;h2&gt;
  
  
  One useful tool I tested for this
&lt;/h2&gt;

&lt;p&gt;If you want a fast starting point, I’ve been using this page for the humanize step:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://ai-to-human.com/ai-humanizer/humanize-ai-text?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=a2h_batch1&amp;amp;utm_content=humanize_ai_text" rel="noopener noreferrer"&gt;Humanize AI text&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The reason I like this angle is simple: it is less about “magic detection bypass” claims and more about practical editing — preserving ideas while reducing robotic phrasing.&lt;/p&gt;

&lt;h2&gt;
  
  
  The real question
&lt;/h2&gt;

&lt;p&gt;The useful question is not:&lt;br&gt;
&lt;strong&gt;“Can this beat a detector?”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The useful question is:&lt;br&gt;
&lt;strong&gt;“Would I actually feel okay sending this under my own name?”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That is a much better editing standard.&lt;/p&gt;

&lt;p&gt;If you work with AI drafts a lot, I’m curious what you usually fix first:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;tone?&lt;/li&gt;
&lt;li&gt;repetition?&lt;/li&gt;
&lt;li&gt;sentence rhythm?&lt;/li&gt;
&lt;li&gt;word choice?&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>writing</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How we compare OpenClaw skills without collapsing everything into one fake score</title>
      <dc:creator>Terry Shine</dc:creator>
      <pubDate>Mon, 11 May 2026 13:10:42 +0000</pubDate>
      <link>https://dev.to/terryshine/how-we-compare-openclaw-skills-without-collapsing-everything-into-one-fake-score-276l</link>
      <guid>https://dev.to/terryshine/how-we-compare-openclaw-skills-without-collapsing-everything-into-one-fake-score-276l</guid>
      <description>&lt;p&gt;If you're trying to decide which OpenClaw skills deserve attention first, a giant list doesn't help much.&lt;/p&gt;

&lt;p&gt;The harder question is this:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do you compare two promising skills without collapsing everything into one fake score?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's the problem we're trying to solve at SkillsReview.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why a single score usually fails
&lt;/h2&gt;

&lt;p&gt;Users don't actually evaluate skills on just one dimension. In practice, people care about a mix of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;task fit&lt;/li&gt;
&lt;li&gt;security posture&lt;/li&gt;
&lt;li&gt;install friction&lt;/li&gt;
&lt;li&gt;update activity&lt;/li&gt;
&lt;li&gt;real usefulness in repeated workflows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The moment you mash those into one mysterious number, you lose the part that helps people make a decision.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a better compare flow looks like
&lt;/h2&gt;

&lt;p&gt;A useful compare flow should help users do three things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Shortlist faster&lt;/strong&gt; — remove obvious mismatches early&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inspect tradeoffs&lt;/strong&gt; — see where one skill is stronger than another&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stay grounded&lt;/strong&gt; — understand &lt;em&gt;why&lt;/em&gt; something ranks the way it does&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That is why we’ve been pushing SkillsReview toward a free-first discovery path instead of a “trust us, here’s the winner” model.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 3 pages we think matter most right now
&lt;/h2&gt;

&lt;p&gt;We recently added three cluster guides that support that workflow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://skills-review.com/blog/best-openclaw-skills-by-security-score" rel="noopener noreferrer"&gt;Best OpenClaw skills by security score&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://skills-review.com/blog/how-we-compare-openclaw-skills" rel="noopener noreferrer"&gt;How we compare OpenClaw skills&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://skills-review.com/blog/track-skill-updates-for-free" rel="noopener noreferrer"&gt;Track OpenClaw skill updates for free&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Together, they cover:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;how to get from discovery to shortlist&lt;/li&gt;
&lt;li&gt;how to compare candidates without flattening nuance&lt;/li&gt;
&lt;li&gt;how to keep watching the ecosystem without another paid dashboard&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The real positioning shift
&lt;/h2&gt;

&lt;p&gt;The point of a directory is to answer &lt;strong&gt;what exists&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The point of a ranking is to answer &lt;strong&gt;what should I try first&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The point of a compare page is to answer &lt;strong&gt;which tradeoffs actually matter for my use case&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Those are different jobs. When one page tries to do all three badly, users bounce.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where we’re going with SkillsReview
&lt;/h2&gt;

&lt;p&gt;The direction we're betting on is simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;free discovery first&lt;/li&gt;
&lt;li&gt;deeper evaluation second&lt;/li&gt;
&lt;li&gt;real install intent after that&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're building around OpenClaw, I'd love to know what matters most in your own evaluation flow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;security?&lt;/li&gt;
&lt;li&gt;speed to install?&lt;/li&gt;
&lt;li&gt;reputation?&lt;/li&gt;
&lt;li&gt;repeatable task value?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want to dig into the current approach, start here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://skills-review.com/blog/how-we-compare-openclaw-skills" rel="noopener noreferrer"&gt;How we compare OpenClaw skills&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://skills-review.com/openclaw-skills-ranking" rel="noopener noreferrer"&gt;OpenClaw skills ranking&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://skills-review.com/openclaw-skills-list" rel="noopener noreferrer"&gt;OpenClaw skills list&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>openclaw</category>
      <category>productivity</category>
      <category>devtools</category>
      <category>ai</category>
    </item>
    <item>
      <title>Best OpenClaw Skills 2026: Tested &amp; Ranked</title>
      <dc:creator>Terry Shine</dc:creator>
      <pubDate>Mon, 20 Apr 2026 14:32:38 +0000</pubDate>
      <link>https://dev.to/terryshine/best-openclaw-skills-2026-tested-ranked-4i00</link>
      <guid>https://dev.to/terryshine/best-openclaw-skills-2026-tested-ranked-4i00</guid>
      <description>&lt;p&gt;If you're trying to get real value out of OpenClaw quickly, browsing a giant directory isn't going to cut it.&lt;/p&gt;

&lt;p&gt;The question most users actually have is much simpler:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which skills are worth installing first?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's the gap we've been trying to close — replacing "here are more skills" with "here's what to try first."&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem with raw discovery
&lt;/h2&gt;

&lt;p&gt;Most ecosystems run into the same discovery overload problem:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;too many options&lt;/li&gt;
&lt;li&gt;weak prioritization&lt;/li&gt;
&lt;li&gt;no obvious first-install path&lt;/li&gt;
&lt;li&gt;editorial picks and real user feedback blurred together&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A list answers &lt;em&gt;"what exists?"&lt;/em&gt;&lt;br&gt;
A ranking answers &lt;em&gt;"what should I try first?"&lt;/em&gt;&lt;br&gt;
A best-of page answers &lt;em&gt;"what's the fastest useful starting point?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Those are three different jobs, and treating them the same is why users bounce.&lt;/p&gt;

&lt;h2&gt;
  
  
  What actually makes a skill useful
&lt;/h2&gt;

&lt;p&gt;The skills that keep earning their spot usually do well on four things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Real task value&lt;/strong&gt; — does it help with recurring work?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clarity&lt;/strong&gt; — can you tell what it's for in about 10 seconds?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ease of adoption&lt;/strong&gt; — is setup reasonable?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reusability&lt;/strong&gt; — does it survive past the first experiment?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The strongest skills are rarely the flashiest. They're the ones that quietly keep showing up in real workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the current top layer looks like
&lt;/h2&gt;

&lt;p&gt;Pulling from live SkillsReview production ranking data, the top cluster right now includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;clawhub&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;feishu-doc&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;coding-agent&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;obsidian&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;weather&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;feishu-wiki&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;coding-agent-common&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;feishu multi-agent messaging&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What's interesting about this mix is that it's not just coding. The ecosystem is clearly pulling in three directions at once:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;docs and knowledge flow&lt;/li&gt;
&lt;li&gt;communication and coordination&lt;/li&gt;
&lt;li&gt;repeatable workflow leverage&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A better first-install strategy
&lt;/h2&gt;

&lt;p&gt;If someone asked me for the shortest useful OpenClaw starter stack, I wouldn't tell them to install 15 skills.&lt;/p&gt;

&lt;p&gt;I'd go with three:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1 core ecosystem skill&lt;/li&gt;
&lt;li&gt;1 workflow-aligned skill (coding / research / docs)&lt;/li&gt;
&lt;li&gt;1 automation, communication, or utility skill&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Three skills give you real signal without burying you.&lt;/p&gt;

&lt;h2&gt;
  
  
  One trust rule that matters
&lt;/h2&gt;

&lt;p&gt;This one's especially important for any review or ranking product:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Editorial recommendation ≠ real user reviews&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Both have value. But if you mash them into a single fake "everyone agrees" score, people stop trusting the page. A ranking page has to be clear about where its logic is coming from.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters now
&lt;/h2&gt;

&lt;p&gt;SkillsReview sits in an interesting spot — there's already real search traction in a niche where discovery intent is still forming.&lt;/p&gt;

&lt;p&gt;Which means the next problem isn't "get attention." It's:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;turning impressions into deeper browsing&lt;/li&gt;
&lt;li&gt;turning curiosity into a first useful install&lt;/li&gt;
&lt;li&gt;making best-of, list, and ranking pages each do their own job well&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Useful entry points
&lt;/h2&gt;

&lt;p&gt;If you want the practical shortlist:&lt;br&gt;
👉 &lt;a href="https://skills-review.com/best-openclaw-skills-2026" rel="noopener noreferrer"&gt;https://skills-review.com/best-openclaw-skills-2026&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you want the broader browse path:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://skills-review.com/openclaw-skills-list" rel="noopener noreferrer"&gt;Full skills list&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://skills-review.com/openclaw-skills-ranking" rel="noopener noreferrer"&gt;Full skills ranking&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;What's in your own OpenClaw starter stack? Curious which three skills you'd keep if you had to cut the rest.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>openclaw</category>
      <category>productivity</category>
      <category>devtools</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
