SShortSingh.
Back to feed

Developer fixes AI content penalty by detecting structural duplicates with n-gram math

0
·4 views

A developer running multiple B2B websites noticed that AI-generated comparison articles were indexed normally but ranked poorly, averaging position 76 across five domains despite generating around 50,000 impressions over three months. On closer inspection, hundreds of articles shared identical sentence-level patterns, passing plagiarism checkers as unique while remaining structurally near-identical. Using n-gram analysis and Jaccard similarity scoring, the developer built a detector that measured overlap between sliding word-window sets across article pairs, revealing several hundred paragraph pairs with a perfect similarity score of 1.00. The investigation found that long recurring text blocks dominated each article's structural fingerprint, and simple variant rotation only created a fixed number of distinct skeletons repeated across the entire content batch. The developer subsequently rebuilt the content generation pipeline to ensure every article pair scored measurably distinct under the same mathematical test.

Read the full story at DEV Community

This is an AI-generated summary. ShortSingh links to the original source for the complete article.

Discussion (0)

Log in to join the discussion and vote.

Log in

Related stories

0
ProgrammingDEV Community ·

Developer builds Astro integration that writes visual edits directly to source files

A developer has released @sudodevstudio/astro-ai, an open-source development-only integration for the Astro web framework that allows visual editing without a separate CMS or authoring system. The tool lets users click any element on a rendered page and writes the resulting change directly to the original .astro, .jsx, or .tsx source file, keeping visual and manual edits in the same codebase. Simple changes like text edits and node reordering are handled deterministically without calling an AI model, while complex requests such as making a section responsive are routed to Codex or Claude CLIs. The integration uses @astrojs/compiler-rs and Babel to parse source files and instruments supported elements with data attributes linking DOM nodes to their source locations and ranges. It is available via npm and aims to eliminate the reconciliation conflicts that arise when a visual editor maintains a second representation of the same content.

0
ProgrammingDEV Community ·

Freelancer Lost $1,300 After Building 3-Month Dashboard Without a Contract

A freelance web developer spent three months building a full internal dashboard for an agency client, agreeing on a total fee of $1,500 but receiving only $200 upfront before starting work. When the project was completed — covering client management, blog management, SEO tools, and other workflows — the remaining $1,300 was never paid. The developer acknowledges that no contract was signed, no formal payment schedule was established, and payment was never made a condition for continuing work. Writing about the experience a year later, the developer says the loss was less about the client's conduct and more about approaching freelancing as a developer rather than a business owner. The key takeaway is that technical excellence alone does not make a freelance engagement successful — clear expectations, milestone-based payments, and written agreements are equally essential.

0
ProgrammingDEV Community ·

How libuv Powers Node.js Async Performance Behind the Scenes

Node.js is widely described as single-threaded and non-blocking, but the JavaScript engine V8 alone cannot handle file systems, network sockets, or OS-level events. The gap is bridged by libuv, a high-performance C library originally built specifically for Node.js, which manages the event loop and interfaces with the operating system. Libuv uses a hybrid strategy: network I/O is handled via kernel-level polling mechanisms like Linux's epoll or macOS's kqueue, while blocking operations such as file I/O, DNS lookups, and cryptographic tasks are offloaded to a default pool of four worker threads. When an async operation completes, libuv feeds the resulting callback back to V8's main thread call stack for execution. This architecture is what allows a Node.js server to sustain tens of thousands of concurrent connections without stalling on slow I/O operations.

0
ProgrammingDEV Community ·

Developer Builds Sayto, a Voice-Enabled Translation App with Personalisation Features

A developer has created Sayto, a web application that goes beyond basic translation by incorporating voice input, translation history, favourites, and personalised suggestions. The app is built using HTML, CSS, JavaScript, Node.js, and Express, with translation powered by a self-hosted LibreTranslate instance running in Docker. Browser speech recognition has been integrated to enable voice-based input for users. The developer views LibreTranslate as a temporary foundation, with a long-term goal of building and integrating a custom translation model. Feedback is being sought from developers, language-learning experts, and those working in educational technology to help shape the app's future direction.