E:LAB
← All cases
쇼핑·브랜드Mattress / bedding brand

Mattress brand — making blog posts and boards visible in search

By Yang Kyoungchan ·

Reorganized a design-first site's board structure so its content could finally reach search.

Project

A homepage built quickly with a design-first approach. The content was there, but search engines almost never surfaced it.

This site was a brand homepage for a mattress company. The design was clean, and the informational posts about mattress types, materials, and care were well written. But the client's frustration was that none of it was showing up in search.

The cause became clear the moment I looked at the structure. To ship the design quickly, body content had been dropped into meaningless div blocks as textboxes. Search engines parse body content through semantic structure, so when everything is rendered as flat divs, there's no way to tell what's a heading and what's body text. To a human reader the posts looked well organised; to a search engine they looked nearly blank.

The board itself had a structural problem too. The board index was rendered dynamically by JavaScript, so the first-response HTML didn't contain the post list for the search engine to see. Going into the individual post detail pages, the title tag was the site-wide title ("Mattress Brand — Official Homepage"). In other words, all 100 posts were exposed to search with the same title, making it impossible to tell which post was about what in the SERP.

One more issue — OG meta and meta descriptions weren't being auto-generated per post, so when a post was shared on social media the preview only showed the generic site-wide image. Even with good content, the sharing layer wasn't working, which kills organic traffic from social.

We set the work priorities this way. First, get titles and meta auto-generated per post. Second, fix the body markup with semantic HTML (h1/h2/article/section). Third, make the board index visible to search engines via SSR or a static fallback. Fourth, auto-include post URLs in the sitemap.

We started with per-post meta auto-generation. The post title flowed straight into the page title ('{post title} | Mattress Brand'), and the meta description was extracted automatically from the first 150 characters of the body. OG meta was switched to prefer the post's first image. That single change alone made each post individually identifiable in search results.

The semantic HTML rewrite took longer. We restructured the existing div-based content into article > h1 > h2 > p, and added Article JSON-LD separately to carry the metadata (publish date, author, category). With this in place, the search engine can clearly recognise the body as "article" content, and date metadata transmits accurately.

The board index page had its JavaScript dependency reduced so the post list ships in the first-response HTML. Search engine bots have execution constraints around JavaScript, and they tend to be especially slow to index new posts via JS-rendered listings, so cleaning this up mattered.

Finally, sitemap.xml was switched to a dynamic generation handler so every newly published post is included automatically. The client doesn't have to submit a separate index request for each new post — it flows naturally.

By the time we wrapped, the directly verifiable changes were unambiguous. Around 100 post pages each had unique titles, meta descriptions, and OG images. The board index was exposing the post list in first-response HTML. The sitemap was auto-including post URLs. We'd also fixed some things outside the original scope, which is why the client's review used the phrase "beyond what I expected."

Outcomes

Outcome points

  • 01
    Board and post pages now eligible for search visibility
  • 02
    Better body content recognition
  • 03
    Meta information unified
  • 04
    Adjacent improvements handled at the same time
Problems

Problems found

  • Design-first build meant search engines couldn't read the body content properly
  • Board posts almost never showed up in search results
  • Meta information was missing or inconsistent across pages
  • Content existed but wasn't converting to traffic
Work items

Work performed

  • Audited and cleaned up the board and post pages' meta structure
  • Improved markup so body content reaches search engines
  • Unified per-page titles and meta descriptions
  • Reviewed sitemap and robots, requested indexing
  • Handled adjacent improvements outside the original scope
Edit log

Specific edits

  • Post page head
    Auto-generate title, meta description, and OG meta per post
    Structurally fixes the problem of 100+ posts sharing the same meta. New posts inherit it automatically.
  • Post body
    Rewrote div-based markup into article > h1 > h2 > p
    So search engines can parse the body semantically. Visual design stays the same, only the semantics improve.
  • Post head
    Inserted Article JSON-LD (datePublished, author, articleSection)
    Date, author, and category are passed explicitly to search engines, classifying the content as informational.
  • Board index
    Reduced JS rendering reliance — post list now in the initial HTML response
    Search engine bots find the post list without needing to execute JS, improving indexing speed for new posts.
  • sitemap.xml
    Static file -> dynamic handler, posts auto-included
    No more manual sitemap updates on each new post.
  • robots.txt
    Added Sitemap: with absolute URL
    Lets Search Console and other search engines discover the sitemap automatically.
  • Main and About pages (outside original scope)
    Cleaned up meta and OG, inserted Organization JSON-LD
    Handling them together reduced effort leakage. Unified the basic SEO foundation.
Before / After

Before / After

ItemBeforeAfter
Post page titlesAll 100 posts shared the site-wide titleAuto-generated from the post title ('{post title} | {brand}')
Post meta descriptionsSite-wide default or missingAuto-extracted from the first 150 characters of the post body
Body HTML semantic structureAll div-based, no h1/h2/articleRestructured to article > h1 > h2 > p semantic HTML
Board index SSRJS-rendered — initial HTML was emptyPost list included in the initial HTML response
Article JSON-LDNot appliedApplied site-wide with datePublished, author, articleSection
Posts in sitemapManually maintained, many missingDynamically generated, new posts included automatically
OG imagesAll posts used the site-wide default imageAuto-uses the post's first image
Timeline

Timeline

  1. 01
    Week 0 - Diagnosis
    • Audited board and post HTML source (semantic structure / meta / SSR)
    • Identified the cause: design-first build with no SEO recognition structure
    • Agreed on 4 priority areas (meta automation / semantic / SSR / sitemap)
  2. 02
    Week 1 - Post meta automation
    • Post page title auto-generated as '{post title} | {brand}'
    • Meta description auto-extracted from the first 150 characters
    • OG image auto-uses the post's first image

    All ~100 posts are now individually identifiable in search results

  3. 03
    Week 2 - Semantic HTML + Article schema
    • Restructured div-based body into article/h1/h2/p
    • Added Article JSON-LD (datePublished, author, articleSection)
    • Confirmed via structured data validator

    Search engines now recognize the body as 'article' content

  4. 04
    Week 3 - Index SSR + dynamic sitemap
    • Updated the board index so the post list appears in the initial HTML response
    • Introduced a dynamic sitemap.xml handler (auto-includes posts)
    • Added a sitemap line to robots.txt
    • Registered and verified Search Console, requested indexing

    New posts automatically join the indexing flow without manual work

  5. 05
    Additional work (outside the original scope)
    • Cleaned up main page meta and OG
    • Added Organization JSON-LD
    • Documented internal linking improvement recommendations

    Tidied up the site's broader SEO basics in one pass

Summary

Summary

  • Content can now reach search engines
  • Meta information unified
  • Adjacent fixes stabilized site-wide SEO
Review

Client review

Rating5.0 / 5

Our homepage was built in a rush, design-first, so the content on it wasn't showing up in search at all. I had zero SEO knowledge and had been burned a few times by careless agencies on Kmong, so honestly I had very low expectations. The result was way beyond what I expected. Everything was done in 1-2 days, and they handled extra work I didn't even ask for. It's almost hard to believe an agency works this earnestly. Highly recommended.

  • Quality of work5.0
  • Helpful consultation5.0
  • Quick responses5.0

If you need similar work, start with the free audit or get in touch directly.