Menü

Video-Links Link-Seiten Präsentationen KI-Assistent Preise Doku English
Anmelden

Konten gibt es zurzeit nur auf Einladung, solange ich das Onboarding fertigstelle — schreiben Sie an email.

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#

  1. Pages & decks → Link page, Adresse (ihrname) wählen und anlegen.
  2. Im Editor ausfüllen: Name, Überschrift, Ort, E-Mail, Foto-URL, Theme, Kurzprofil, Links und Infoblöcke.
  3. 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.

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
        }
      }
    }
  }
}