Mert Özen Further With Every Line

Blog

Mert Özen's blog posts on software development, backend, frontend, and DevOps.

Series
38 posts found
Testing and Monitoring Structured Data: Rich Results Test, Schema Markup Validator, Search Console and Automated CI Checks
SEO & GEO PART 05

Testing and Monitoring Structured Data: Rich Results Test, Schema Markup Validator, Search Console and Automated CI Checks

The Rich Results Test checks eligibility for Google's rich results and the Schema Markup Validator checks schema.org validity, but only tests that run on every build catch regressions. We cover URL Inspection and Search Console reports, JSON-LD tests with xUnit and WebApplicationFactory, Playwright checks for Angular SSR and post-deploy smoke tests, with real passing and failing output.

14 Nov 2026 13 min 14
Other Types and Retired Rich Results: VideoObject, SoftwareApplication, Speakable and the Story of FAQ and HowTo
SEO & GEO PART 04

Other Types and Retired Rich Results: VideoObject, SoftwareApplication, Speakable and the Story of FAQ and HowTo

VideoObject is a candidate for video features only on a watch page focused on a single video, SoftwareApplication produces no rich result without a rating or review, and speakable is still an English, news-focused beta. We take the dates of the rich results retired between 2023 and 2026, from HowTo to FAQ, from Google's changelog, and discuss whether retired markup has to be deleted and what it means for mertozen.com, with .NET 10 examples.

14 Nov 2026 10 min 10
BlogPosting, BreadcrumbList and the Author Entity: Building an Entity Graph with Person, ProfilePage, Organization and WebSite
SEO & GEO PART 03

BlogPosting, BreadcrumbList and the Author Entity: Building an Entity Graph with Person, ProfilePage, Organization and WebSite

A tech blog's structured data is a BlogPosting linked to a Person, Organization and WebSite that each have a single @id on the site, plus a BreadcrumbList with the right URLs for each language. We show Google's Article, Breadcrumb and ProfilePage recommendations, honest use of dateModified and how the graph resolves in the Schema Markup Validator with .NET 10, and audit mertozen.com's live output.

14 Nov 2026 11 min 12
JSON-LD Syntax and Safe Generation: @context, @type, @id, @graph in ASP.NET Core and Angular SSR
SEO & GEO PART 02

JSON-LD Syntax and Safe Generation: @context, @type, @id, @graph in ASP.NET Core and Angular SSR

The rule for generating JSON-LD safely is to write text with JSON's own \u003C escape and put it on the page as a single @graph; UnsafeRelaxedJsonEscaping plus Html.Raw lets a </script> in a headline split the page and open the door to XSS. We look at @context, @type, @id and @graph, typed records in ASP.NET Core 10, the ScriptTagHelper detail that arrived with .NET 9, and duplicate scripts and silent data corruption in Angular 22 SSR, all with real output.

14 Nov 2026 15 min 13
What Is Structured Data? Schema.org, JSON-LD and What Google Actually Does with It
SEO & GEO PART 01

What Is Structured Data? Schema.org, JSON-LD and What Google Actually Does with It

Structured data means telling machines explicitly what a page is about, using the schema.org vocabulary and a syntax such as JSON-LD; Google uses it to understand pages and for rich result eligibility, but markup neither guarantees rich results nor is presented as a ranking factor. We write the same data in Microdata, RDFa and JSON-LD, dump the entity graph of a Bookstore page with .NET 10 and look at consumers beyond Google.

14 Nov 2026 12 min 13
Content Maintenance: Content Decay, the Update–Merge–Delete Decision and Keeping Version-Dependent Posts Alive
SEO & GEO PART 07

Content Maintenance: Content Decay, the Update–Merge–Delete Decision and Keeping Version-Dependent Posts Alive

Content decay is the decline of a page's search traffic over months, and the fix is not updating the date but separating the cause and deciding to update, rewrite, merge or remove. We cover detecting decay with year-over-year comparisons in Search Console, extracting signals with .NET 10, keeping version-dependent posts alive as .NET 11 ships, using dateModified honestly, spam policy boundaries and measuring with annotations.

14 Nov 2026 12 min 3
Writing Pages That Answer: Heading Structure, the First Paragraph, Code Samples, Images and Bilingual Content
SEO & GEO PART 06

Writing Pages That Answer: Heading Structure, the First Paragraph, Code Samples, Images and Bilingual Content

A page that answers gives the answer to its title's question in the first paragraph, has a single clear h1, and shows code as text with its real output; heading order is not a ranking factor for Google but matters for readers and accessibility. We cover heading structure, the first paragraph, versions and output in technical content, alt text and file names for images, TR/EN localisation and AI-assisted writing, and build a page checker with .NET 10 and AngleSharp.

14 Nov 2026 11 min 2
Internal Linking: Anchor Text, Orphan Pages, Link Depth and Building Your Own Link Graph in C#
SEO & GEO PART 05

Internal Linking: Anchor Text, Orphan Pages, Link Depth and Building Your Own Link Graph in C#

Internal links let Google discover new pages and, through anchor text, tell it what they are about; every important page should get a real <a href> link from at least one other page on the site. We cover crawlable link rules, anchor text, orphan pages and link depth, then write a crawler with .NET 10 and AngleSharp that starts from the sitemap and reports orphans, deep pages, redirect chains and nofollow.

14 Nov 2026 11 min 2
Content Architecture: Topic Clusters, Series and Category Structure, and Keyword Cannibalization
SEO & GEO PART 04

Content Architecture: Topic Clusters, Series and Category Structure, and Keyword Cannibalization

A good content architecture gives every query intent a single owner on the site and makes hub pages actually explain a topic; two pages that target the same intent weaken each other through keyword cannibalization. We cover mertozen.com's category, series and post structure, tag inflation, finding cannibalization candidates from Search Console data with .NET 10, and the merge, differentiate and canonical options.

14 Nov 2026 10 min 3
Search Intent: Reading the Intent Behind a Query and Choosing the Right Content Format
SEO & GEO PART 03

Search Intent: Reading the Intent Behind a Query and Choosing the Right Content Format

Search intent is the purpose behind a query, and it decides the right content format: a guide for a definition query, the fix on the first screen for an error message, a table for a comparison. We cover Broder's classification, the Know/Do/Website intents in the rater guidelines, developer-specific intents, reading the SERP, the effect of AI Overviews on clicks and classifying queries by intent with .NET 10.

14 Nov 2026 10 min 2
Keyword Research: Finding Topics and Queries for a Technical Blog, from Search Console to Keyword Planner
SEO & GEO PART 02

Keyword Research: Finding Topics and Queries for a Technical Blog, from Search Console to Keyword Planner

For a technical blog the most reliable keyword source is your own Search Console data; autocomplete, Google Trends and Keyword Planner give phrasings, comparisons and estimates, not real volume. We cover each source's limits, how Turkish developers search with English jargon and error messages, and building a TR/EN keyword map from bulk export data with .NET 10.

14 Nov 2026 13 min 4
What Is Content SEO? People-First Content, the "Who, How, Why" Questions and Search Engine-First Warning Signs
SEO & GEO PART 01

What Is Content SEO? People-First Content, the "Who, How, Why" Questions and Search Engine-First Warning Signs

Content SEO is the content work that makes a findable page get chosen as the answer to a query: writing the right topic for the right intent and genuinely giving readers something. We explain Google's people-first content guide in our own words, apply the "Who, How, Why" questions to a real mertozen.com post, and show the search engine-first warning signs and the scaled content abuse line for bulk AI production.

14 Nov 2026 11 min 2
Blog Map