<Devsly/>
NotebookLM Watermark Remover
Remove the NotebookLM watermark from PDF slide exports — free, unlimited, and 100% in your browser.
View
NotebookLM Video Watermark Remover
Remove the NotebookLM watermark from every frame of your MP4 and auto-trim the end card — free and unlimited.
View
Gemini Watermark Remover
Remove the Gemini (Veo) sparkle watermark from every frame of your AI-generated MP4 — free and unlimited.
View
MCP https://devsly.io/mcp MCP Tools Best Skills API Docs

Keyboard Shortcuts

Navigation

Quick Search
⌘ / Ctrl + K
Toggle Dark Mode
⌘ / Ctrl + D
Close Dialogs
Esc

Tool Actions

Execute / Process
⌘ / Ctrl + Enter
Clear Input
⌘ / Ctrl + Shift + C
Copy Output
⌘ / Ctrl + Shift + X

Editor

Select All
⌘ / Ctrl + A
Undo
⌘ / Ctrl + Z
Redo
⌘ / Ctrl + Shift + Z
Questions or ideas? Reach us on LinkedIn — we reply. Connect

www.sleepingpal.co — llms.txt & GEO score

Re-scan this site
38 /100 E · 38 of 100 points

Links without directions

www.sleepingpal.co publishes an llms.txt, but it lists no links at all — so there is a title and little else for a model to follow.

The clearest gap is a workable number of links. Right now: No links at all. Closing it is worth 4 points.

Barely usable as an index. Start from the top recommendation below. Scanned 12 November 2026 against 34 checks — 17 passed, 2 partial, 15 missing.

www.sleepingpal.co GEO score card: 38 out of 100, with the score broken down across content, structure, discovery, search-engine basics and depth.
www.sleepingpal.co scored 38/100 on 12 November 2026. Source file: https://www.sleepingpal.co/llms.txt.
38/100geo score
0links
2sections
599 Bsize

What it does well

  • AI crawlers are not blocked No AI user-agent is disallowed at the root

What is missing

  • A workable number of links +4 No links at all
  • Grouped into balanced sections +4 2 H2 sections
  • List items are markdown links +4 6 of 6 list items are plain text, not links
  • Skippable links marked Optional +3 Nothing is marked as skippable

Among the 24 sites measured here so far, www.sleepingpal.co ranks 21st, against a median of 71. That comparison moves as new sites are scanned — it is a snapshot of this list, not of the web.

What www.sleepingpal.co tells an assistant

SleepingPal

Content & links

Can a model pick the right page, first time?

0/52

Nothing in this group is in place yet.

  • Every link carries a description No links in the file, so there is nothing to describe
    0/10
  • Descriptions say something concrete No links to measure
    0/7
  • Descriptions add to the title No descriptions to compare against their titles
    0/4
  • Points at clean markdown copies No links to point anywhere
    0/10
  • Link titles are descriptive No link titles to judge
    0/4
  • A workable number of links No links at all
    0/4
  • Skippable links marked Optional Nothing is marked as skippable
    0/3
  • No duplicate links No URLs to compare
    0/2
  • List items are markdown links 6 of 6 list items are plain text, not links
    0/4
  • Enough written detail per link No links to measure against
    0/3
  • Links are absolute URLs No links to check
    0/1

Structure

Does it follow the llms.txt shape?

15/20

5 of 7 checks pass. What is left: summary directly under the title and grouped into balanced sections.

  • Exactly one H1 project title “SleepingPal”
    3/3
  • Summary directly under the title An opening paragraph is there, but not as a "> " blockquote — clients that look for the quoted summary will miss it
    2/3
  • Summary is a usable length 87 characters (from the opening paragraph)
    3/3
  • Concrete language, not marketing filler No marketing filler detected
    3/3
  • Grouped into balanced sections 2 H2 sections
    0/4
  • Conforms to the published grammar Markdown only, headings used as the spec defines them
    2/2
  • Section names say what is inside All 2 headings are descriptive
    2/2

Discovery & access

Can an assistant reach it, and is it allowed to?

11/11

All 5 checks pass in this group.

  • At the root of the domain you typed Found at the standard /llms.txt path
    2/2
  • Sent as plain text Content-Type: text/markdown; charset=utf-8
    1/1
  • robots.txt exists 3.6 KB of crawler rules
    1/1
  • AI crawlers are not blocked No AI user-agent is disallowed at the root
    6/6
  • robots.txt points at a sitemap A Sitemap: line is declared
    1/1

Search-engine basics

What a crawler reads from your homepage today

7/8

5 of 6 checks pass. What is left: homepage has a meta description.

  • Homepage title is the right length 69 characters, from title — will be cut off
    2/2
  • Title is not padded or repetitive No repeated terms
    1/1
  • Homepage has a meta description 216 characters, from meta description — Google will truncate it
    1/2
  • Canonical URL declared https://www.sleepingpal.co/
    1/1
  • Language declared lang="en"
    1/1
  • Social card image og:image is set
    1/1

Depth & upkeep

Is there more than the index, and is it current?

5/9

2 of 5 checks pass. What is left: the index points at the full file, server reports when it last changed and the index is kept current.

  • Publishes llms-full.txt Companion full-text file found
    3/3
  • The index points at the full file Not linked from llms.txt
    0/1
  • Index is a sensible size 599 B
    2/2
  • Server reports when it last changed No Last-Modified header — clients cannot tell when this changed
    0/1
  • The index is kept current Cannot be confirmed — the server sends no Last-Modified header
    0/2

What www.sleepingpal.co should fix next

Ordered by what each one is worth. Open a row for the steps.

+21 pts
  • Right now: No links at all

    Either curate to roughly 10–40 links, or go the other way and map everything to .md copies. The costly middle is a long list of HTML links with no descriptions.

    Where: The link lists in llms.txt

    1. Aim for roughly 10–40 curated links.
    2. Above about fifty, a model has to read the whole file before it can choose, and every entry gets diluted.
    3. If you generated the file from a sitemap, delete most of it: curation is the entire value of the format.
    4. Below ten, add the pages you would send a new customer to first.
  • Right now: 2 H2 sections

    Group links under headings a reader would look for, and spread them — one group holding most of the file is the same as no grouping.

    Where: The "## " headings in llms.txt

    1. Split the link list into at least five "## " groups by what a reader would be looking for.
    2. Typical split: Docs, API, Guides, Product, Company, Optional.
    3. Grouping is what lets a model skip nine tenths of the file and still find the right page.
    Instead of
    ## Links
    
    - [A](...)
    - [B](...)
    - [C](...)
    Do this
    ## Docs
    
    - [A](...)
    
    ## API
    
    - [B](...)
    
    ## Optional
    
    - [C](...)
  • Right now: 6 of 6 list items are plain text, not links

    A file list needs `- [Title](url): description`. A plain line gives a model something to read but nowhere to go — it cannot follow it, quote it, or check it.

    Where: Every "- " line in llms.txt

    1. Turn each plain line into a markdown link: "- [Title](https://your-site/page.md): description".
    2. A line without a URL gives a model something to read but nowhere to go — it cannot follow, quote or verify it.
    3. If a fact has no page behind it (an address, a phone number), put it in the free-text body above the sections, not in a file list.
    4. Note that "#" is a heading in markdown, not a comment — lines starting with # become H1/H2 headings.

    In your file

    line 7
    - https://sleepingpal.co/ | Homepage, main product showcase
    - [https]({https://your-site/path}.md): {what this page covers}
    line 8
    - https://sleepingpal.co/pages/about-us | Brand story & safety commitment
    - [https]({https://your-site/path}.md): {what this page covers}
    line 9
    - https://sleepingpal.co/pages/faq | Safety, usage, shipping FAQs
    - [https]({https://your-site/path}.md): {what this page covers}

    Placeholders in { } are yours to write — we do not invent text about your pages.

  • Right now: Nothing is marked as skippable

    Move the nice-to-haves under ## Optional so a model on a tight budget knows what to drop first.

    Where: A new "## Optional" section at the end of llms.txt

    1. Move the nice-to-have links — history, press, careers — under "## Optional".
    2. By convention a client may skip that whole section when context is tight.
    3. This is you deciding what gets dropped first, instead of the model guessing.
    Do this
    ## Optional
    
    - [Company history](https://acme.example/about.md): Background, not needed to answer product questions
  • Right now: Cannot be confirmed — the server sends no Last-Modified header

    Regenerate llms.txt when the docs change. A year-old index quietly points models at pages that have moved.

    Where: Your build pipeline

    1. Regenerate llms.txt in the same step that publishes content, so it cannot go stale silently.
    2. Treat it as a build artifact, not a hand-edited file — hand-edited indexes drift within a quarter.
    3. An llms.txt with discontinued products is worse than none: a model will repeat the wrong facts confidently.
  • Right now: 216 characters, from meta description — Google will truncate it

    Add a 70–160 character meta description. It is the snippet under your result, and assistants reuse it verbatim.

    Where: The <meta name="description"> tag on your homepage

    1. Target 70–160 characters; beyond that Google truncates it mid-sentence.
    2. Write it as the sentence you would want quoted, because assistants reuse it verbatim.
    Instead of
    <meta name="description" content="Welcome to our website.">
    Do this
    <meta name="description" content="Industrial spare parts for food processing lines, shipped across Europe with same-week dispatch and two-year warranty.">
  • Right now: No Last-Modified header — clients cannot tell when this changed

    Let the server send Last-Modified on llms.txt. Without it a client has to re-download the whole file to notice a change.

    Where: Your web server configuration

    1. Serve llms.txt as a real file on disk so the server can derive Last-Modified from its mtime.
    2. If it is generated by an application route, set the header yourself from the generation time.
    3. Without it a client has to re-download the whole file to notice a change, and cannot answer "is this current?".
    Instead of
    HTTP/1.1 200 OK\nContent-Type: text/plain
    Do this
    HTTP/1.1 200 OK\nContent-Type: text/plain\nLast-Modified: Wed, 10 Sep 2026 08:14:00 GMT
  • Right now: An opening paragraph is there, but not as a "> " blockquote — clients that look for the quoted summary will miss it

    Put the opening line in a > blockquote. The spec calls it optional, but it is the first thing a model reads and often the only thing it quotes back.

    Where: The line directly under the H1

    1. Add a single line starting with "> ".
    2. Answer three things in it: what you do, for whom, and what makes it specific.
    3. This is the sentence a model is most likely to quote back, so write it last, after the rest of the file.
    Instead of
    > We are an innovative company delivering world-class solutions.
    Do this
    > Industrial spare parts for food processing lines, shipped across Europe with same-week dispatch.
  • Right now: Not linked from llms.txt

    Mention llms-full.txt inside llms.txt. Guessing the filename works often enough to be tempting and not often enough to rely on.

    Where: Inside llms.txt

    1. Mention the full file in llms.txt itself, as a link or a line of context.
    2. Guessing the filename works often enough to be tempting and not often enough to rely on.
    Do this
    Full inlined text: https://acme.example/llms-full.txt

This score is Devsly’s own heuristic, not an official standard — llms.txt has no scoring body. It measures how well a file serves an AI assistant, and it does not predict whether any assistant will cite the site. The reading is a snapshot from 12 November 2026; run it again for the current state, or check a different site.