AdLandYour ad on adland-1

Monetize your building spaces collectively & transparently

One RPC call fetches all the onchain data, rendered by very lightweight packages, like the examples below.

Host it and get paid in USDC.

1Add the embed
<!-- Styling: see https://adland.space/llms.txt for the
     --adland-* custom properties and ::part() hooks -->
<script src="https://cdn.jsdelivr.net/npm/@adland/embed@0.5.0/dist/adland.js" async></script>
<adland-slot slot-key="adland-1"></adland-slot>

One script tag and one element. A single RPC call fetches the ad.

2Serve /.well-known/adland.json
{
  "version": 1,
  "domain": "yoursite.com",
  "payTo": "0xYourWallet…",
  "nonce": "k9x2m4p7",
  "issuedAt": "2026-08-27T10:00:00.000Z",
  "signature": "0x…"
}

Signed once with the wallet you want paying. Hosting it proves the domain is yours; the signature proves the address is.

embedadland.jsonearn USDC

Four ways to put it on a page, all live.

Paste it

no styling at all

adland-1
<script src="https://cdn.jsdelivr.net/npm/@adland/embed@0.5.0/dist/adland.js" async></script>

<adland-slot slot-key="adland-1"></adland-slot>

Theme it

24 CSS custom properties, hover it

adland-1
<!-- same script as above -->
<adland-slot
  slot-key="adland-1"
  style="--adland-bleed: 10px;
         --adland-bg: #FFE500;
         --adland-fg: #000;
         --adland-border: #000;
         --adland-border-width: 2px;
         --adland-radius: 0;
         --adland-shadow: 6px 6px 0 #000;
         --adland-shadow-hover: 2px 2px 0 #000;
         --adland-transform-hover: translate(4px, 4px)"
></adland-slot>

Style it with your own classes

render-mode=light, Tailwind reaches the card

adland-1
<!-- same script as above -->
<adland-slot
  slot-key="adland-1"
  render-mode="light"
  class="[&_.adland-card]:flex [&_.adland-card]:gap-3
         [&_.adland-card]:rounded-xl [&_.adland-card]:border
         [&_.adland-media]:size-12 [&_.adland-title]:font-medium"
></adland-slot>

Or build the card

React, the markup is yours

adland-1
npm i @adland/react

import { Ad, AdImage, AdTitle } from "@adland/react";

<Ad slotKey="adland-1">
  <AdImage className="aspect-video w-full" />
  <AdTitle className="font-medium" />
</Ad>

All four are live and read the same slot on Base. One eth_call each, since the name and the creative come back together. They run with consent="denied" so this page does not count as impressions against the ad. Leave it off and yours are tracked normally.