Verifiziertes AgentReady.md-Zertifikat
Ausgestellt am sig: 86c3c5b656e454ae Verifizieren →

Analysierte URL

https://www.spendstream.app

Weitere URL analysieren

KI-Ready Score

75 / B

Gut

von 100

Token-Einsparung

HTML-Tokens 18.888
Markdown-Tokens 503
Einsparung 97%

Score-Aufschlüsselung

Semantisches HTML 89/100
Inhaltseffizienz 70/100
KI-Auffindbarkeit 37/100
Strukturierte Daten 100/100
Zugänglichkeit 100/100

Emerging Protocols

0 von 3 erkannt

Well-known-Endpunkte, nach denen KI-Agenten suchen. Erkannt bedeutet, dass ein Agent Ihren Dienst automatisch finden und verbinden kann.

  • OAuth Discovery RFC 8414
    /.well-known/oauth-authorization-server
  • MCP Server Card Anthropic
    /.well-known/mcp.json
  • A2A Agent Card Google
    /.well-known/agent.json

Ihre Website hat keine llms.txt-Datei. Dies ist der aufkommende Standard, um KI-Agenten beim Verständnis Ihrer Website-Struktur zu helfen.

So implementieren Sie es

Erstellen Sie eine /llms.txt-Datei gemäß der llmstxt.org-Spezifikation. Fügen Sie eine Beschreibung Ihrer Website und Links zu Ihren wichtigsten Seiten hinzu.

Ihre Seite hat ein niedriges Verhältnis von tatsächlichem Inhalt zum gesamten HTML. Ein Großteil des Seitengewichts besteht aus Markup, Skripten oder Styles statt Inhalt.

So implementieren Sie es

Verlagern Sie CSS in externe Stylesheets, entfernen Sie Inline-Styles, minimieren Sie JavaScript und stellen Sie sicher, dass sich das HTML auf die Inhaltsstruktur konzentriert.

Ihre Website unterstützt kein Markdown for Agents. Dieser Cloudflare-Standard ermöglicht KI-Agenten, Inhalte im Markdown-Format anzufordern und reduziert den Token-Verbrauch um ~80%.

So implementieren Sie es

Implementieren Sie eines oder mehrere: (1) Auf Accept: text/markdown mit Markdown-Inhalt antworten. (2) .md-URLs bereitstellen (z.B. /seite.md). (3) <link rel="alternate" type="text/markdown">-Tags hinzufügen. (4) Link-HTTP-Header für Markdown-Erkennung hinzufügen.

{\n res.setHeader('Vary', 'Accept');\n res.setHeader('Link', '; rel=\"alternate\"; type=\"text/markdown\"');\n if ((req.headers.accept || '').includes('text/markdown')) {\n res.type('text/markdown; charset=utf-8');\n return res.send(renderMarkdown('page'));\n }\n res.render('page');\n});"},{"id":"fastify","label":"Fastify","language":"javascript","filename":"server.js","code":"// Mechanisms 1 + 4: content negotiation + Link header\nfastify.get('/page', async (req, reply) => {\n reply.header('Vary', 'Accept');\n reply.header('Link', '; rel=\"alternate\"; type=\"text/markdown\"');\n if ((req.headers.accept || '').includes('text/markdown')) {\n return reply.type('text/markdown; charset=utf-8').send(renderMarkdown('page'));\n }\n return reply.view('/page.ejs');\n});"},{"id":"nextjs","label":"Next.js","language":"typescript","filename":"app/page/route.ts","code":"// Next.js App Router — Route Handler returning Markdown\nimport { NextRequest } from 'next/server';\nimport { renderMarkdown } from '@/lib/md';\nexport async function GET(req: NextRequest) {\n const accept = req.headers.get('accept') || '';\n if (accept.includes('text/markdown')) {\n return new Response(await renderMarkdown('page'), {\n headers: {\n 'Content-Type': 'text/markdown; charset=utf-8',\n 'Vary': 'Accept',\n },\n });\n }\n // Fall through to the page component\n return new Response(null, { status: 404 });\n}"},{"id":"wordpress","label":"WordPress","language":"php","filename":"functions.php","code":"post_content));\n exit;\n});"},{"id":"static","label":"Hugo / Jekyll / Astro","language":"txt","filename":"static/page.md","code":"# Mechanism 2: serve .md alongside .html\n# Hugo: place page.md in /static/ — built unchanged\n# Jekyll: drop page.md in /assets/ — copied as-is\n# Astro: src/pages/page.md.ts that exports a GET returning markdown\n\n# Then advertise with mechanism 3 in :\n# "}] }'>

Ihre robots.txt blockiert einige KI-Bots (GPTBot, ClaudeBot, PerplexityBot). Das verhindert, dass KI-Agenten Ihre Inhalte indexieren.

So implementieren Sie es

Aktualisieren Sie Ihre robots.txt, um KI-Bots zu erlauben. Fügen Sie explizite Allow-Regeln für GPTBot, ClaudeBot und PerplexityBot hinzu.

Ihre Seite stützt sich stark auf <div>-Elemente. Semantische Elemente wie <section>, <nav>, <header>, <footer> und <aside> bieten eine sinnvolle Struktur für KI-Agenten.

So implementieren Sie es

Ersetzen Sie generische <div>-Container durch passende semantische Elemente. Verwenden Sie <section> für thematische Gruppen, <nav> für Navigation, <header>/<footer> für Seiten-/Abschnittskopf und -fußzeilen.

Markdown-Tokens: 503
## The Xero workflow that wastes hours every month

It takes eight clicks to assign a transaction as a billable expense:

-   Open a transaction
-   Edit a transaction
-   Click assign expenses
-   Select the expense lines you need
-   Search for the client
-   Click assign
-   Accept the changes
-   Save the transaction

Even with bank rules, Xero still doesn't assign billable expenses to customers automatically. Hours disappear while you repeat these steps again and again.

## Use SpendStream to automate client expense assignment for Xero

Spend less time clicking, more time growing. Our tool plugs directly into your Xero organisation and:

-   Automatically assigns transactions to your clients based on your Xero rules.
-   Works with bank rules so expenses land in Xero ready with the reconciliation process.
-   Keeps your reports clean, accurate, and immediately invoicable.
-   Remove at least eight clicks per billable transaction from your end of month process.

## SpendStream will shave hours off your bookkeeping

Whether you’re managing multiple clients or running your own business:

-   Your bookkeeping workflows become predictable and fast.
-   Your profitability and project reporting becomes clear and reliable.
-   Your team has time back to focus on high-value work.

## Finally leave all the finicky admin behind

SpendStream will make all the end-of-month monotony go away. No more:

-   Clicking into every transaction
-   Building bank rules that only match accounts but don’t assign clients
-   Manual project tagging at month-end
-   Reconciling and then re-working expense assignments
-   Losing revenue because billable costs weren’t captured

## Frequently Asked Questions

## Pricing that pays for itself in your first week

### Free

$0/mo

Small businesses with simple needs

-   Up to 5 transactions/month

-   Unlimited assignment rules

-   Priority support

[Get started](https://dash.spendstream.app/)

### Efficiency

$19/mo

Organizations with more complex billing workflows

-   Unlimited expenses

-   Unlimited assignment rules

-   Dedicated support

[Get started](https://dash.spendstream.app/)

## Ready to shrink hours of boring bookkeeping into minutes?

Get started today and watch your Xero expenses auto-assign to clients and projects like it should have all along.

Accurate books. Faster invoicing. Less manual work.
Auto-assign billable expenses in Xero with SpendStream

# Automatically assign billable expenses to customers in Xero.

Remove hours of repetitive admin. Set rules once and let automation handle the rest. Never miss a billable expense again.

[Get started](https://dash.spendstream.app/)[See how it works](https://www.spendstream.app/how-it-works)

![SpendStream Expense Assignments page showing bank transactions automatically assigned to clients and projects.](https://www.spendstream.app/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fhome-screenshot.e8cfcf71.png&w=3840&q=75)

## The Xero workflow that wastes hours every month

It takes eight clicks to assign a transaction as a billable expense:

-   Open a transaction
-   Edit a transaction
-   Click assign expenses
-   Select the expense lines you need
-   Search for the client
-   Click assign
-   Accept the changes
-   Save the transaction

Even with bank rules, Xero still doesn't assign billable expenses to customers automatically. Hours disappear while you repeat these steps again and again.

## Use SpendStream to automate client expense assignment for Xero

Spend less time clicking, more time growing. Our tool plugs directly into your Xero organisation and:

-   Automatically assigns transactions to your clients based on your Xero rules.
-   Works with bank rules so expenses land in Xero ready with the reconciliation process.
-   Keeps your reports clean, accurate, and immediately invoicable.
-   Remove at least eight clicks per billable transaction from your end of month process.

## SpendStream will shave hours off your bookkeeping

Whether you’re managing multiple clients or running your own business:

-   Your bookkeeping workflows become predictable and fast.
-   Your profitability and project reporting becomes clear and reliable.
-   Your team has time back to focus on high-value work.

## Finally leave all the finicky admin behind

SpendStream will make all the end-of-month monotony go away. No more:

-   Clicking into every transaction
-   Building bank rules that only match accounts but don’t assign clients
-   Manual project tagging at month-end
-   Reconciling and then re-working expense assignments
-   Losing revenue because billable costs weren’t captured

## Frequently Asked Questions

How does SpendStream integrate with Xero?

Can I customize the assignment rules?

Is there a limit to how many rules I can create?

## Pricing that pays for itself in your first week

### Free

$0/mo

Small businesses with simple needs

-   Up to 5 transactions/month

-   Unlimited assignment rules

-   Priority support

[Get started](https://dash.spendstream.app/)

### Efficiency

$19/mo

Organizations with more complex billing workflows

-   Unlimited expenses

-   Unlimited assignment rules

-   Dedicated support

[Get started](https://dash.spendstream.app/)

## Ready to shrink hours of boring bookkeeping into minutes?

Get started today and watch your Xero expenses auto-assign to clients and projects like it should have all along.

Accurate books. Faster invoicing. Less manual work.

[Get started](https://dash.spendstream.app/)

Laden Sie diese Datei als /index.md auf Ihren Server hoch, damit KI-Agenten auf eine saubere Version Ihrer Seite zugreifen können. Sie können auch die Accept: text/markdown-Inhaltsverhandlung konfigurieren, um sie automatisch auszuliefern.

Generierte llms.txt für diese einzelne Seite

llms.txt herunterladen
# SpendStream

> Automatically assign billable expenses to customers in Xero. Set rules once, and let SpendStream handle the rest.

## Documentation
- [Docs](https://www.spendstream.app/docs)

## Main
- [Auto-assign billable expenses in Xero with SpendStream](https://www.spendstream.app): Automatically assign billable expenses to customers in Xero. Set rules once, and let SpendStream handle the rest.
- [Pricing](https://www.spendstream.app/pricing)
- [Docs](https://www.spendstream.app/docs)
- [SpendStream](https://www.spendstream.app/)
- [How it works](https://www.spendstream.app/how-it-works)
- [Security](https://www.spendstream.app/security)

## Legal
- [Privacy](https://www.spendstream.app/privacy)
- [Terms](https://www.spendstream.app/terms)

Vollständige llms.txt erfordert eine domainweite Analyse (kommt bald)

Laden Sie diese Datei als https://www.spendstream.app/llms.txt im Stammverzeichnis Ihrer Domain hoch. KI-Agenten wie ChatGPT, Claude und Perplexity prüfen diese Datei, um Ihre Website-Struktur zu verstehen.

Semantisches HTML

Verwendet article- oder main-Element (100/100)

Has <main>

Korrekte Überschriftenhierarchie (100/100)

Clean heading hierarchy

Verwendet semantische HTML-Elemente (47/100)

13 semantic elements, 79 divs (ratio: 14%)

Aussagekräftige Bild-Alt-Texte (100/100)

1/1 images with meaningful alt text

Geringe div-Verschachtelungstiefe (100/100)

Avg div depth: 2.8, max: 7

Inhaltseffizienz

Gutes Token-Reduktionsverhältnis (100/100)

97% token reduction (HTML→Markdown)

Gutes Inhalt-zu-Rausch-Verhältnis (0/100)

Content ratio: 3.5% (2101 content chars / 60599 HTML bytes)

Minimale Inline-Styles (100/100)

1/294 elements with inline styles (0.3%)

Angemessenes Seitengewicht (100/100)

HTML size: 59KB

KI-Auffindbarkeit

Hat llms.txt-Datei (0/100)

No llms.txt found

Hat robots.txt-Datei (100/100)

robots.txt exists

robots.txt erlaubt KI-Bots (34/100)

2/3 AI bots blocked: ClaudeBot, GPTBot

Hat sitemap.xml (100/100)

Sitemap found

Markdown for Agents Unterstützung (0/100)
&#10007; Accept: text/markdown &#10007; .md URL &#10007; <link> tag &#10007; Link header
Hat Content-Signal (robots.txt oder HTTP-Header) (60/100)
&#10003; robots.txt &#10007; HTTP header &#10003; Policy

Strukturierte Daten

Hat Schema.org / JSON-LD (100/100)

JSON-LD found: FAQPage, SoftwareApplication, Organization

Hat Open-Graph-Tags (100/100)

All OG tags present

Hat Meta-Beschreibung (100/100)

Meta description: 113 chars

Hat kanonische URL (100/100)

Canonical URL present

Hat lang-Attribut (100/100)

lang="en"

Zugänglichkeit

Inhalt ohne JavaScript verfügbar (100/100)

Content available without JavaScript

Angemessene Seitengröße (100/100)

Page size: 59KB

Inhalt erscheint früh im HTML (100/100)

Main content starts at 9% of HTML

{
  "url": "https://www.spendstream.app",
  "timestamp": 1778794433898,
  "fetch": {
    "mode": "simple",
    "timeMs": 358,
    "htmlSizeBytes": 60599,
    "supportsMarkdown": false,
    "markdownAgents": {
      "contentNegotiation": false,
      "mdUrl": {
        "found": false,
        "url": null
      },
      "linkTag": {
        "found": false,
        "url": null
      },
      "linkHeader": {
        "found": false,
        "url": null
      },
      "responseHeaders": {
        "contentSignal": null,
        "xMarkdownTokens": null,
        "vary": null
      },
      "frontmatter": {
        "present": false,
        "fields": [],
        "level": "none"
      },
      "level": "none"
    },
    "statusCode": 200
  },
  "extraction": {
    "title": "Auto-assign billable expenses in Xero with SpendStream",
    "excerpt": "Automatically assign billable expenses to customers in Xero. Set rules once, and let SpendStream handle the rest.",
    "byline": null,
    "siteName": "SpendStream",
    "lang": "en",
    "contentLength": 2101,
    "metadata": {
      "description": "Automatically assign billable expenses to customers in Xero. Set rules once, and let SpendStream handle the rest.",
      "ogTitle": "Auto-assign billable expenses in Xero with SpendStream",
      "ogDescription": "Automatically assign billable expenses to customers in Xero. Set rules once, and let SpendStream handle the rest.",
      "ogImage": "https://www.spendstream.app/og.png",
      "ogType": "website",
      "canonical": "https://www.spendstream.app",
      "lang": "en",
      "schemas": [
        {
          "@context": "https://schema.org",
          "@type": "FAQPage",
          "mainEntity": [
            {
              "@type": "Question",
              "name": "How does SpendStream integrate with Xero?",
              "acceptedAnswer": {
                "@type": "Answer",
                "text": "SpendStream connects directly to your Xero organization. Once connected, it can read your expense data and automatically apply assignment rules in real-time. Read more about how to connect to Xero here."
              }
            },
            {
              "@type": "Question",
              "name": "Can I customize the assignment rules?",
              "acceptedAnswer": {
                "@type": "Answer",
                "text": "Absolutely! You can create SpendStream rules using division or a custom tag applied through your Xero reconcilation rules."
              }
            },
            {
              "@type": "Question",
              "name": "Is there a limit to how many rules I can create?",
              "acceptedAnswer": {
                "@type": "Answer",
                "text": "No, you can create unlimited assignment rules."
              }
            }
          ]
        },
        {
          "@context": "https://schema.org",
          "@type": "SoftwareApplication",
          "name": "SpendStream",
          "url": "https://www.spendstream.app",
          "applicationCategory": "BusinessApplication",
          "operatingSystem": "Web",
          "description": "Automatically assign billable expenses to customers in Xero. Set rules once, and let SpendStream handle the rest.",
          "offers": [
            {
              "@type": "Offer",
              "name": "Free",
              "price": "0",
              "priceCurrency": "USD",
              "category": "Small businesses with simple needs"
            },
            {
              "@type": "Offer",
              "name": "Efficiency",
              "price": "19",
              "priceCurrency": "USD",
              "category": "Organizations with more complex billing workflows"
            }
          ]
        },
        {
          "@context": "https://schema.org",
          "@type": "Organization",
          "name": "SpendStream",
          "url": "https://www.spendstream.app",
          "logo": "https://www.spendstream.app/logo.png",
          "sameAs": [
            "https://www.linkedin.com/company/spendstreamapp"
          ]
        }
      ],
      "robotsMeta": null,
      "author": null,
      "generator": null,
      "markdownAlternateHref": null
    }
  },
  "markdown": "## The Xero workflow that wastes hours every month\n\nIt takes eight clicks to assign a transaction as a billable expense:\n\n-   Open a transaction\n-   Edit a transaction\n-   Click assign expenses\n-   Select the expense lines you need\n-   Search for the client\n-   Click assign\n-   Accept the changes\n-   Save the transaction\n\nEven with bank rules, Xero still doesn't assign billable expenses to customers automatically. Hours disappear while you repeat these steps again and again.\n\n## Use SpendStream to automate client expense assignment for Xero\n\nSpend less time clicking, more time growing. Our tool plugs directly into your Xero organisation and:\n\n-   Automatically assigns transactions to your clients based on your Xero rules.\n-   Works with bank rules so expenses land in Xero ready with the reconciliation process.\n-   Keeps your reports clean, accurate, and immediately invoicable.\n-   Remove at least eight clicks per billable transaction from your end of month process.\n\n## SpendStream will shave hours off your bookkeeping\n\nWhether you’re managing multiple clients or running your own business:\n\n-   Your bookkeeping workflows become predictable and fast.\n-   Your profitability and project reporting becomes clear and reliable.\n-   Your team has time back to focus on high-value work.\n\n## Finally leave all the finicky admin behind\n\nSpendStream will make all the end-of-month monotony go away. No more:\n\n-   Clicking into every transaction\n-   Building bank rules that only match accounts but don’t assign clients\n-   Manual project tagging at month-end\n-   Reconciling and then re-working expense assignments\n-   Losing revenue because billable costs weren’t captured\n\n## Frequently Asked Questions\n\n## Pricing that pays for itself in your first week\n\n### Free\n\n$0/mo\n\nSmall businesses with simple needs\n\n-   Up to 5 transactions/month\n\n-   Unlimited assignment rules\n\n-   Priority support\n\n[Get started](https://dash.spendstream.app/)\n\n### Efficiency\n\n$19/mo\n\nOrganizations with more complex billing workflows\n\n-   Unlimited expenses\n\n-   Unlimited assignment rules\n\n-   Dedicated support\n\n[Get started](https://dash.spendstream.app/)\n\n## Ready to shrink hours of boring bookkeeping into minutes?\n\nGet started today and watch your Xero expenses auto-assign to clients and projects like it should have all along.\n\nAccurate books. Faster invoicing. Less manual work.\n",
  "fullPageMarkdown": "Auto-assign billable expenses in Xero with SpendStream\n\n# Automatically assign billable expenses to customers in Xero.\n\nRemove hours of repetitive admin. Set rules once and let automation handle the rest. Never miss a billable expense again.\n\n[Get started](https://dash.spendstream.app/)[See how it works](https://www.spendstream.app/how-it-works)\n\n![SpendStream Expense Assignments page showing bank transactions automatically assigned to clients and projects.](https://www.spendstream.app/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fhome-screenshot.e8cfcf71.png&w=3840&q=75)\n\n## The Xero workflow that wastes hours every month\n\nIt takes eight clicks to assign a transaction as a billable expense:\n\n-   Open a transaction\n-   Edit a transaction\n-   Click assign expenses\n-   Select the expense lines you need\n-   Search for the client\n-   Click assign\n-   Accept the changes\n-   Save the transaction\n\nEven with bank rules, Xero still doesn't assign billable expenses to customers automatically. Hours disappear while you repeat these steps again and again.\n\n## Use SpendStream to automate client expense assignment for Xero\n\nSpend less time clicking, more time growing. Our tool plugs directly into your Xero organisation and:\n\n-   Automatically assigns transactions to your clients based on your Xero rules.\n-   Works with bank rules so expenses land in Xero ready with the reconciliation process.\n-   Keeps your reports clean, accurate, and immediately invoicable.\n-   Remove at least eight clicks per billable transaction from your end of month process.\n\n## SpendStream will shave hours off your bookkeeping\n\nWhether you’re managing multiple clients or running your own business:\n\n-   Your bookkeeping workflows become predictable and fast.\n-   Your profitability and project reporting becomes clear and reliable.\n-   Your team has time back to focus on high-value work.\n\n## Finally leave all the finicky admin behind\n\nSpendStream will make all the end-of-month monotony go away. No more:\n\n-   Clicking into every transaction\n-   Building bank rules that only match accounts but don’t assign clients\n-   Manual project tagging at month-end\n-   Reconciling and then re-working expense assignments\n-   Losing revenue because billable costs weren’t captured\n\n## Frequently Asked Questions\n\nHow does SpendStream integrate with Xero?\n\nCan I customize the assignment rules?\n\nIs there a limit to how many rules I can create?\n\n## Pricing that pays for itself in your first week\n\n### Free\n\n$0/mo\n\nSmall businesses with simple needs\n\n-   Up to 5 transactions/month\n\n-   Unlimited assignment rules\n\n-   Priority support\n\n[Get started](https://dash.spendstream.app/)\n\n### Efficiency\n\n$19/mo\n\nOrganizations with more complex billing workflows\n\n-   Unlimited expenses\n\n-   Unlimited assignment rules\n\n-   Dedicated support\n\n[Get started](https://dash.spendstream.app/)\n\n## Ready to shrink hours of boring bookkeeping into minutes?\n\nGet started today and watch your Xero expenses auto-assign to clients and projects like it should have all along.\n\nAccurate books. Faster invoicing. Less manual work.\n\n[Get started](https://dash.spendstream.app/)\n",
  "markdownStats": {
    "images": 0,
    "links": 2,
    "tables": 0,
    "codeBlocks": 0,
    "headings": 9
  },
  "tokens": {
    "htmlTokens": 18888,
    "markdownTokens": 503,
    "reduction": 18385,
    "reductionPercent": 97
  },
  "score": {
    "score": 75,
    "grade": "B",
    "dimensions": {
      "semanticHtml": {
        "score": 89,
        "weight": 20,
        "grade": "B",
        "checks": {
          "uses_article_or_main": {
            "score": 100,
            "weight": 20,
            "details": "Has <main>"
          },
          "proper_heading_hierarchy": {
            "score": 100,
            "weight": 25,
            "details": "Clean heading hierarchy"
          },
          "semantic_elements": {
            "score": 47,
            "weight": 20,
            "details": "13 semantic elements, 79 divs (ratio: 14%)"
          },
          "meaningful_alt_texts": {
            "score": 100,
            "weight": 15,
            "details": "1/1 images with meaningful alt text"
          },
          "low_div_nesting": {
            "score": 100,
            "weight": 20,
            "details": "Avg div depth: 2.8, max: 7"
          }
        }
      },
      "contentEfficiency": {
        "score": 70,
        "weight": 25,
        "grade": "C",
        "checks": {
          "token_reduction_ratio": {
            "score": 100,
            "weight": 40,
            "details": "97% token reduction (HTML→Markdown)"
          },
          "content_to_noise_ratio": {
            "score": 0,
            "weight": 30,
            "details": "Content ratio: 3.5% (2101 content chars / 60599 HTML bytes)"
          },
          "minimal_inline_styles": {
            "score": 100,
            "weight": 15,
            "details": "1/294 elements with inline styles (0.3%)"
          },
          "reasonable_page_weight": {
            "score": 100,
            "weight": 15,
            "details": "HTML size: 59KB"
          }
        }
      },
      "aiDiscoverability": {
        "score": 37,
        "weight": 25,
        "grade": "F",
        "checks": {
          "has_llms_txt": {
            "score": 0,
            "weight": 20,
            "details": "No llms.txt found"
          },
          "has_robots_txt": {
            "score": 100,
            "weight": 10,
            "details": "robots.txt exists"
          },
          "robots_allows_ai_bots": {
            "score": 34,
            "weight": 15,
            "details": "2/3 AI bots blocked: ClaudeBot, GPTBot"
          },
          "has_sitemap": {
            "score": 100,
            "weight": 10,
            "details": "Sitemap found"
          },
          "supports_markdown_negotiation": {
            "score": 0,
            "weight": 25,
            "details": "No Markdown for Agents support detected"
          },
          "has_content_signals": {
            "score": 60,
            "weight": 20,
            "details": "robots.txt: search=yes, ai-train=no | Policy included"
          }
        }
      },
      "structuredData": {
        "score": 100,
        "weight": 15,
        "grade": "A",
        "checks": {
          "has_schema_org": {
            "score": 100,
            "weight": 30,
            "details": "JSON-LD found: FAQPage, SoftwareApplication, Organization"
          },
          "has_open_graph": {
            "score": 100,
            "weight": 25,
            "details": "All OG tags present"
          },
          "has_meta_description": {
            "score": 100,
            "weight": 20,
            "details": "Meta description: 113 chars"
          },
          "has_canonical_url": {
            "score": 100,
            "weight": 15,
            "details": "Canonical URL present"
          },
          "has_lang_attribute": {
            "score": 100,
            "weight": 10,
            "details": "lang=\"en\""
          }
        }
      },
      "accessibility": {
        "score": 100,
        "weight": 15,
        "grade": "A",
        "checks": {
          "content_without_js": {
            "score": 100,
            "weight": 40,
            "details": "Content available without JavaScript"
          },
          "reasonable_page_size": {
            "score": 100,
            "weight": 30,
            "details": "Page size: 59KB"
          },
          "fast_content_position": {
            "score": 100,
            "weight": 30,
            "details": "Main content starts at 9% of HTML"
          }
        }
      }
    }
  },
  "recommendations": [
    {
      "id": "add_llms_txt",
      "priority": "critical",
      "category": "aiDiscoverability",
      "titleKey": "rec.add_llms_txt.title",
      "descriptionKey": "rec.add_llms_txt.description",
      "howToKey": "rec.add_llms_txt.howto",
      "effort": "quick-win",
      "estimatedImpact": 10,
      "checkScore": 0,
      "checkDetails": "No llms.txt found"
    },
    {
      "id": "improve_content_ratio",
      "priority": "critical",
      "category": "contentEfficiency",
      "titleKey": "rec.improve_content_ratio.title",
      "descriptionKey": "rec.improve_content_ratio.description",
      "howToKey": "rec.improve_content_ratio.howto",
      "effort": "moderate",
      "estimatedImpact": 6,
      "checkScore": 0,
      "checkDetails": "Content ratio: 3.5% (2101 content chars / 60599 HTML bytes)"
    },
    {
      "id": "add_markdown_negotiation",
      "priority": "critical",
      "category": "aiDiscoverability",
      "titleKey": "rec.add_markdown_negotiation.title",
      "descriptionKey": "rec.add_markdown_negotiation.description",
      "howToKey": "rec.add_markdown_negotiation.howto",
      "effort": "significant",
      "estimatedImpact": 6,
      "checkScore": 0,
      "checkDetails": "No Markdown for Agents support detected"
    },
    {
      "id": "allow_ai_bots",
      "priority": "high",
      "category": "aiDiscoverability",
      "titleKey": "rec.allow_ai_bots.title",
      "descriptionKey": "rec.allow_ai_bots.description",
      "howToKey": "rec.allow_ai_bots.howto",
      "effort": "quick-win",
      "estimatedImpact": 7,
      "checkScore": 34,
      "checkDetails": "2/3 AI bots blocked: ClaudeBot, GPTBot"
    },
    {
      "id": "add_semantic_elements",
      "priority": "high",
      "category": "semanticHtml",
      "titleKey": "rec.add_semantic_elements.title",
      "descriptionKey": "rec.add_semantic_elements.description",
      "howToKey": "rec.add_semantic_elements.howto",
      "effort": "moderate",
      "estimatedImpact": 5,
      "checkScore": 47,
      "checkDetails": "13 semantic elements, 79 divs (ratio: 14%)"
    }
  ],
  "llmsTxtPreview": "# SpendStream\n\n> Automatically assign billable expenses to customers in Xero. Set rules once, and let SpendStream handle the rest.\n\n## Documentation\n- [Docs](https://www.spendstream.app/docs)\n\n## Main\n- [Auto-assign billable expenses in Xero with SpendStream](https://www.spendstream.app): Automatically assign billable expenses to customers in Xero. Set rules once, and let SpendStream handle the rest.\n- [Pricing](https://www.spendstream.app/pricing)\n- [Docs](https://www.spendstream.app/docs)\n- [SpendStream](https://www.spendstream.app/)\n- [How it works](https://www.spendstream.app/how-it-works)\n- [Security](https://www.spendstream.app/security)\n\n## Legal\n- [Privacy](https://www.spendstream.app/privacy)\n- [Terms](https://www.spendstream.app/terms)\n\n",
  "llmsTxtExisting": null,
  "emergingProtocols": {
    "oauthDiscovery": {
      "exists": false,
      "url": "https://www.spendstream.app/.well-known/oauth-authorization-server"
    },
    "mcpServerCard": {
      "exists": false,
      "url": "https://www.spendstream.app/.well-known/mcp.json"
    },
    "a2aAgentCard": {
      "exists": false,
      "url": "https://www.spendstream.app/.well-known/agent.json"
    },
    "count": 0
  },
  "snippets": [
    {
      "id": "add_llms_txt",
      "title": "Create /llms.txt",
      "description": "Upload this file to your web root. It tells AI agents what your site is about and which pages matter.",
      "language": "markdown",
      "code": "# SpendStream\n\n> Automatically assign billable expenses to customers in Xero. Set rules once, and let SpendStream handle the rest.\n\n## Documentation\n- [Docs](https://www.spendstream.app/docs)\n\n## Main\n- [Auto-assign billable expenses in Xero with SpendStream](https://www.spendstream.app): Automatically assign billable expenses to customers in Xero. Set rules once, and let SpendStream handle the rest.\n- [Pricing](https://www.spendstream.app/pricing)\n- [Docs](https://www.spendstream.app/docs)\n- [SpendStream](https://www.spendstream.app/)\n- [How it works](https://www.spendstream.app/how-it-works)\n- [Security](https://www.spendstream.app/security)\n\n## Legal\n- [Privacy](https://www.spendstream.app/privacy)\n- [Terms](https://www.spendstream.app/terms)\n\n",
      "filename": "/llms.txt"
    },
    {
      "id": "allow_ai_bots",
      "title": "Allow AI bots in robots.txt",
      "description": "Some AI bots are blocked in your robots.txt. Remove or modify these Disallow rules to let AI agents index your content.",
      "language": "txt",
      "code": "# Add to your robots.txt — explicitly allow AI bots:\nUser-agent: GPTBot\nAllow: /\n\nUser-agent: ClaudeBot\nAllow: /\n\nUser-agent: PerplexityBot\nAllow: /",
      "filename": "/robots.txt"
    },
    {
      "id": "add_markdown_negotiation",
      "title": "Support Markdown for Agents",
      "description": "Let AI agents request a clean Markdown version of any page via content negotiation, .md alternate URLs, link tags or Link headers.",
      "language": "html",
      "code": "<!-- Mechanism 3: link tag advertising the .md alternate -->\n<link rel=\"alternate\" type=\"text/markdown\" href=\"/page.md\">",
      "filename": "<head>",
      "stacks": [
        {
          "id": "html",
          "label": "HTML <head>",
          "language": "html",
          "filename": "<head>",
          "code": "<!-- Mechanism 3: link tag advertising the .md alternate -->\n<link rel=\"alternate\" type=\"text/markdown\" href=\"/page.md\">"
        },
        {
          "id": "express",
          "label": "Express",
          "language": "javascript",
          "filename": "server.js",
          "code": "// Mechanisms 1 + 4: content negotiation + Link header\napp.get('/page', (req, res) => {\n  res.setHeader('Vary', 'Accept');\n  res.setHeader('Link', '</page.md>; rel=\"alternate\"; type=\"text/markdown\"');\n  if ((req.headers.accept || '').includes('text/markdown')) {\n    res.type('text/markdown; charset=utf-8');\n    return res.send(renderMarkdown('page'));\n  }\n  res.render('page');\n});"
        },
        {
          "id": "fastify",
          "label": "Fastify",
          "language": "javascript",
          "filename": "server.js",
          "code": "// Mechanisms 1 + 4: content negotiation + Link header\nfastify.get('/page', async (req, reply) => {\n  reply.header('Vary', 'Accept');\n  reply.header('Link', '</page.md>; rel=\"alternate\"; type=\"text/markdown\"');\n  if ((req.headers.accept || '').includes('text/markdown')) {\n    return reply.type('text/markdown; charset=utf-8').send(renderMarkdown('page'));\n  }\n  return reply.view('/page.ejs');\n});"
        },
        {
          "id": "nextjs",
          "label": "Next.js",
          "language": "typescript",
          "filename": "app/page/route.ts",
          "code": "// Next.js App Router — Route Handler returning Markdown\nimport { NextRequest } from 'next/server';\nimport { renderMarkdown } from '@/lib/md';\nexport async function GET(req: NextRequest) {\n  const accept = req.headers.get('accept') || '';\n  if (accept.includes('text/markdown')) {\n    return new Response(await renderMarkdown('page'), {\n      headers: {\n        'Content-Type': 'text/markdown; charset=utf-8',\n        'Vary': 'Accept',\n      },\n    });\n  }\n  // Fall through to the page component\n  return new Response(null, { status: 404 });\n}"
        },
        {
          "id": "wordpress",
          "label": "WordPress",
          "language": "php",
          "filename": "functions.php",
          "code": "<?php\n// Mechanism 1: respond to Accept: text/markdown on the same URL\nadd_action('template_redirect', function () {\n    if (!is_singular()) return;\n    $accept = $_SERVER['HTTP_ACCEPT'] ?? '';\n    if (strpos($accept, 'text/markdown') === false) return;\n    header('Content-Type: text/markdown; charset=utf-8');\n    header('Vary: Accept');\n    $post = get_queried_object();\n    echo \"# \" . get_the_title($post) . \"\\n\\n\";\n    echo wp_strip_all_tags(apply_filters('the_content', $post->post_content));\n    exit;\n});"
        },
        {
          "id": "static",
          "label": "Hugo / Jekyll / Astro",
          "language": "txt",
          "filename": "static/page.md",
          "code": "# Mechanism 2: serve .md alongside .html\n# Hugo: place page.md in /static/ — built unchanged\n# Jekyll: drop page.md in /assets/ — copied as-is\n# Astro: src/pages/page.md.ts that exports a GET returning markdown\n\n# Then advertise with mechanism 3 in <head>:\n#   <link rel=\"alternate\" type=\"text/markdown\" href=\"/page.md\">"
        }
      ]
    }
  ]
}

Nutzen Sie unsere API, um dies programmatisch abzurufen (kommt bald)

Dieses JSON ist für den internen Gebrauch bestimmt — im Gegensatz zu den Markdown- und llms.txt-Dateien soll es nicht auf Ihre Website hochgeladen werden. Speichern Sie es als Ausgangswert, um Ihren Score im Zeitverlauf zu verfolgen, teilen Sie es mit Ihrem Entwicklerteam oder integrieren Sie es in Ihre CI/CD-Pipeline.

Teilen Sie Ihre Ergebnisse

Twitter LinkedIn

Badge einbetten

Fügen Sie dieses Badge zu Ihrer Website hinzu. Es aktualisiert sich automatisch, wenn sich Ihr KI-Bereitschafts-Score ändert.

AgentReady.md score for www.spendstream.app
Script Empfohlen
<script src="https://agentready.md/badge.js" data-id="b4bc9209-7b9d-48d3-81c4-72accd86e6b7" data-domain="www.spendstream.app"></script>
Markdown
[![AgentReady.md score for www.spendstream.app](https://agentready.md/badge/www.spendstream.app.svg)](https://agentready.md/de/r/b4bc9209-7b9d-48d3-81c4-72accd86e6b7)

Demnächst: Vollständige Domain-Analyse

Crawlen Sie Ihre gesamte Domain, generieren Sie llms.txt und überwachen Sie Ihren KI-Bereitschaftswert im Zeitverlauf. Tragen Sie sich in die Warteliste ein.

Sie stehen auf der Liste! Wir benachrichtigen Sie, sobald es verfügbar ist.