Overlabels Help

Chat Checkin

Viewers type !checkin Rotterdam, NL and land on your globe. One command, one pin per viewer, city-level only.

Connect Chat Checkin at Settings - Integrations - Chat Checkin (the Overlabels bot must be enabled in your channel) and viewers get one chat command:

!checkin Rotterdam, NL
!checkin Barcelona
!checkin Tokyo

The place resolves against a local city index - about 235,000 cities worldwide, matched by name with typo tolerance ("amsterdamm" still lands) and ranked by population when a name is ambiguous (bare "Paris" is Paris, France; "Paris, US" is Paris, Texas). A place that will not resolve gets a friendly reply and nothing else. Each viewer has ONE pin: checking in again moves it.

Everything is city-level by design. The index contains nothing finer than a city, so nobody can pin a street address onto your stream - not even on purpose. Coordinates on a pin are the coordinates of the resolved city.

The globe

Drop the globe into any static overlay with one tag:

[[[checkin_globe]]]

It renders a slowly rotating dotted globe - the continents are drawn from the city index itself - with a pin and a name label for every checkin. Size it like any element and style it with CSS custom properties on .ol-checkin-globe:

.ol-checkin-globe {
  width: 720px;
  height: 720px;
  --globe-dot-color: #c9a227; /* land dots */
  --globe-dot-size: 2.4; /* px */
  --globe-pin-color: #bfe3e0; /* pin heads and stalks */
  --globe-rotation-seconds: 45; /* one revolution; 0 = still */
  --globe-tilt-degrees: 18;
}
.ol-globe-label {
  color: #dfe8e8;
  font-size: 13px;
}

The labels are ordinary HTML with the class ol-globe-label (plus is-hidden while a pin is on the far side), so your template's CSS owns them completely. The 3D library only downloads on overlays that actually contain the tag.

Every globe ships with one permanent resident: Overlabels itself, checked in at Avarua, Cook Islands. It is the maker's mark - it lives only on the globe drawing and never counts toward your checkin numbers, the pin feed, or alerts. Style its label via .ol-globe-label[data-login="overlabels"] if you want to give it a look of its own.

Pin lifetime

On the settings page you choose what a pin's life looks like:

  • Per stream - the globe starts fresh at go-live and chat checks in again. That ritual is half the fun of the command.
  • Persistent - pins accumulate across streams into a world map of your community.

Controls

Connecting provisions these, usable anywhere as [[[c:checkin:...]]] and in Expression Controls:

  • checkins_this_stream, unique_countries_this_stream, farthest_checkin_km_this_stream - per-stream, reset at go-live
  • checkins_total - all time
  • latest_checkin_name, latest_checkin_place, latest_checkin_country, latest_checkin_lat, latest_checkin_lng, latest_checkin_distance_km - the most recent pin, persists across streams

Distances need a home location (your own city, set on the settings page). Set it and every checkin gets its haversine distance from home - farthest_checkin_km_this_stream makes a great "who came furthest" callout.

The raw pin feed

Prefer to build your own visualization? The pins are a foreach iterable, newest first:

[[[foreach:checkins as pin]]]
  <div>[[[pin.name]]] - [[[pin.place]]] ([[[pin.distance_km]]] km)</div>
[[[endforeach]]]

Fields: name, login, place, country, country_code, lat, lng, at (Unix seconds), distance_km (empty without a home location). [[[checkins.count]]] is the total in the current window. The number of pins kept is a foreach cap on Settings - Account, default 50.

Alerts

"Chat Checkin" is a trigger like any other: bind an alert template to it and every checkin can fire an alert, TTS or chat message using the all-chat-checkin-events event tags - "[[[event.user_name]]] joined from [[[event.place]]]!".

Place data by GeoNames (CC BY 4.0).

Reading this as a machine? The same page as plain markdown: /help/checkin.md