Link-Seiten
Erstellen Sie eine Link-Seite unter ihrname.cvinfo.me per Formular oder JSON – Themes, Links, Infoblöcke und Statistiken.
Eine Link-Seite liegt unter https://ihrname.cvinfo.me/ und kostet einmalig 2 Credits. Bearbeiten und erneutes Veröffentlichen sind kostenlos.
Erstellen#
- Pages & decks → Link page, Adresse (
ihrname) wählen und anlegen. - Im Editor ausfüllen: Name, Überschrift, Ort, E-Mail, Foto-URL, Theme, Kurzprofil, Links und Infoblöcke.
- Die Live-Vorschau prüfen und Save & publish.
Die Adresse lässt sich später nicht ändern, alles andere schon.
Felder#
| Feld | Hinweise |
|---|---|
| Name | Pflichtfeld, die Überschrift der Seite |
| Überschrift | Eine Zeile, z. B. „Senior Data Engineer“ |
| Foto-URL | Muss mit https:// beginnen |
| Kurzprofil | Markdown |
| Links | Im Editor eine pro Zeile: Bezeichnung | https://…. Icons werden anhand der URL gewählt |
| Infoblöcke | Markdown; jede Zeile ## Titel beginnt einen neuen Block |
| Theme | cvinfo, midnight, light oder sunset |
In Suchmaschinen anzeigen#
Neue Seiten sind für Google unsichtbar (noindex). Aktivieren Sie im Editor Show in search engines, wenn die Seite gefunden werden soll. Links auf Ihrer Seite tragen rel="ugc nofollow".
Versionen und Zurücksetzen#
Jede Veröffentlichung erzeugt eine Version. Unter Pages & decks können Sie auf eine der letzten fünf zurückspringen.
Getrackte Links#
Legen Sie pro Bewerbung einen getrackten Link an (1 Credit), um zu sehen, welches Unternehmen Ihre Seite geöffnet hat.
JSON-Spezifikation#
Hinter dem Editor (und dem KI-Assistenten) steckt bei jeder Seite dieses JSON:
{
"name": "Jane Doe",
"headline": "Senior data engineer · Python, Spark, dbt",
"location": "Berlin",
"email": "jane@example.com",
"avatar_url": "https://example.com/jane.jpg",
"bio": "I build **reliable data platforms**. Currently open to new roles.",
"theme": "cvinfo",
"links": [
{
"label": "LinkedIn",
"url": "https://linkedin.com/in/janedoe",
"icon": "linkedin"
},
{
"label": "GitHub",
"url": "https://github.com/janedoe",
"icon": "github"
},
{
"label": "Download my CV",
"url": "https://example.com/cv.pdf",
"icon": "cv"
}
],
"sections": [
{
"title": "Experience",
"markdown": "- **Acme** — Lead data engineer (2021–)\n- **Initech** — Data engineer (2018–2021)"
}
],
"video": {
"source": "video:0b6e1e8a-6f0e-4a3c-9d2d-2f9c8a1b4d77",
"caption": "60 seconds on why this role"
},
"deck": {
"slug": "jane-talk",
"label": "My fraud-scoring project"
},
"references": [
{
"name": "Ada Fischer",
"role": "CTO",
"company": "Acme GmbH",
"contact": "ada@acme.example",
"quote": "Jane turned our data swamp into a platform."
}
],
"gate": {
"enabled": true,
"title": "Enter your work email to unlock"
}
}
Vollständiges JSON-Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "cvinfo structured page",
"type": "object",
"additionalProperties": false,
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"description": "Display name, the page heading."
},
"headline": {
"type": "string",
"maxLength": 140,
"description": "One line under the name, e.g. 'Senior data engineer'."
},
"location": {
"type": "string",
"maxLength": 80
},
"email": {
"type": "string",
"maxLength": 254,
"format": "email",
"description": "Shown as a mailto button."
},
"avatar_url": {
"type": "string",
"maxLength": 500,
"pattern": "^https://\\S+$",
"description": "https URL of a square photo."
},
"avatar_file": {
"type": "string",
"maxLength": 40,
"pattern": "^avatar-[0-9a-f]{8}\\.jpg$",
"description": "Read-only: a photo uploaded in the editor, served from the page's own host. Set by the app, not by API clients."
},
"bio": {
"type": "string",
"maxLength": 3000,
"description": "Markdown."
},
"theme": {
"enum": [
"midnight",
"light",
"cvinfo",
"sunset"
],
"default": "cvinfo"
},
"links": {
"type": "array",
"maxItems": 30,
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"label",
"url"
],
"properties": {
"label": {
"type": "string",
"minLength": 1,
"maxLength": 60
},
"url": {
"type": "string",
"maxLength": 500,
"pattern": "^(https?://|mailto:)\\S+$"
},
"icon": {
"enum": [
"link",
"linkedin",
"github",
"gitlab",
"x",
"mastodon",
"bluesky",
"youtube",
"instagram",
"website",
"email",
"cv",
"calendar",
"phone",
"portfolio",
"blog"
]
}
}
}
},
"sections": {
"type": "array",
"maxItems": 12,
"description": "Info blocks under the links (experience, skills, projects\u2026).",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"title",
"markdown"
],
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"markdown": {
"type": "string",
"maxLength": 6000
}
}
}
},
"video": {
"type": "object",
"additionalProperties": false,
"required": [
"source"
],
"description": "An intro video at the top of the page: 'video:<id>' picks one from your video library. Upload and review happen in the app (cvinfo.me/videos/), which is also where each video's id is shown. The page streams it from cvinfo.me through an expiring URL, and only while it is approved. 'profile' and 'link:<uuid>' are still understood \u2014 they are what specs said before videos became reusable.",
"properties": {
"source": {
"type": "string",
"maxLength": 80,
"pattern": "^(profile|link:[0-9a-f-]{36}|video:[0-9a-f-]{36})$"
},
"caption": {
"type": "string",
"maxLength": 140
}
}
},
"deck": {
"type": "object",
"additionalProperties": false,
"required": [
"slug"
],
"description": "One of your own presentations, shown as a card that opens it.",
"properties": {
"slug": {
"type": "string",
"maxLength": 63,
"pattern": "^[a-z0-9-]+$"
},
"label": {
"type": "string",
"maxLength": 80
}
}
},
"references": {
"type": "array",
"maxItems": 8,
"description": "People who vouch for you. Hidden behind the e-mail gate when it is on.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"role": {
"type": "string",
"maxLength": 120
},
"company": {
"type": "string",
"maxLength": 80
},
"contact": {
"type": "string",
"maxLength": 254
},
"quote": {
"type": "string",
"maxLength": 400
}
}
}
},
"css": {
"type": "string",
"maxLength": 50000,
"description": "Custom CSS theme, applied after the built-in theme. Sanitised: no @import, no external url() \u2014 only uploaded images as url(upload:<id>)."
},
"gate": {
"type": "object",
"additionalProperties": false,
"description": "Ask visitors for a work e-mail before the references are shown.",
"properties": {
"enabled": {
"type": "boolean",
"default": false
},
"title": {
"type": "string",
"maxLength": 120
}
}
}
}
}