Transkript nicht nur im Player, sondern auch auf der Webseite: Warum ist das sinnvoll?

Manche liefern das Transkript ihrer Podcastfolgen nicht nur im Player aus, sondern lagern ihn auch auf die Episodenseite direkt aus. Warum reicht das Transkript im Player nicht? Geht‘s da um Auffindbarkeit oder warum macht man das?

Du meinst, dass das Transkript im Blogbeitrag der Episode ausgeschrieben auftaucht oder dass es nochmal extra verlinkt wurde?

Genau, dass es extra im Blogbeitrag aufgeschrieben erscheint, statt nur im Player.

Es ist dadurch lesbar.
Wenn Du beispielsweise gehörlos bist, willst Du nicht das Transkript in Echtzeit auf nem Player angezeigt bekommen. Du willst es einfach in dem Speed lesen können, in dem Du normalerweise liest.

Auch kann ich mir vorstellen, dass Google und Konsorten das besser indizieren in den Suchergebnissen.

Ein dritter Punkt ist die VGWort, bei der die Verwertungsrechte für geschriebene Texte verwaltet werden. Die bieten an einen Zählpixel auf Seiten mit eigenem Text(Blogpost, Transkripte, etc) einzubetten, der es der VGWort ermöglicht die Zugriffszahlen zu zählen und so Deine Vergütung zu berechnen.

Es gibt bestimmt noch weitere Gründe.

2 „Gefällt mir“

Das wäre die Frage: Ist das so? Kann das jemand bestätigen, dass das besser ist?
Die anderen Punkte finde ich völlig nachvollziehbar.

Müsste man mal wen bei Google fragen… :woman_shrugging:t2:

@schaarsen hat in seinem Blog-Eintrag zum Transkript auch geschrieben, dass die Einbettung die Durchsuchbarkeit erhöhen kann.

1 „Gefällt mir“

Woher soll eine Suchmaschine wissen was im Player passiert? Der Player ist für so eine Suchmaschine total uninteressantt. also muss man alles in die meta daten der seite packen oder auf der seite.

1 „Gefällt mir“

Raumwelle hat völlig recht: Google interessiert sich mit sehr hoher Wahrscheinlichkeit nicht für das Transkript im Player. Da ist der Vorteil nur, dass die Textpassage markiert wird, die im Moment des Abspielens gerade zu hören ist - man weiß also beim Lesen „wo“ im Podcast man ist. Wenn das Transkript auch im Blog angezeigt wird, hat Google zumindest die Chance, das Manuskript zu indizieren. Es hilft aber zumindest der Suchfunktion im eigenen Blog. Den Punkt mit der VG Wort finde ich ebenfalls relevant, weil es dort eine Zeichenuntergrenze gibt: Man kann also den Text der Podcastepisode dazu nutzen, Zusazeinnahmen zu generieren. Allerdings werden nur dann Einnahmen ausgeschüttet, wenn der Text eine bestimmte Zahl von Aufrufen erreicht. Das ist sicher nicht bei allen Podcast-Blogs der Fall.

Mein Tutorial dazu wird demnächst ein Update bekommen, weil mit dem neuesten Update des Publishers das Einbetten offenbar anders funktioniert.

3 „Gefällt mir“

meine grade fertig gestelte option ist:

{% if episode.transcript is not empty %}
  {# Button zum Öffnen des Transkripts #}
  <button id="toggle-transcript" onclick="toggleTranscript()" style="padding: 10px 20px; font-size: 1em; cursor: pointer; border: none; background-color: #cccccc; color: #333; border-radius: 20px; margin-top: 10px;">
    Für das Transkript hier klicken
  </button>

  <div id="transcript-container" style="display: none; margin-top: 15px;">
    {# CSS-Styles für die Transkript-Tabelle #}
    <style type="text/css">
      .ts-table-container {
        max-height: 600px; /* Höhe der Tabelle, damit ca. 40 Zeilen sichtbar sind */
        overflow-y: auto; /* Ermöglicht vertikales Scrollen */
        overflow-x: hidden; /* Verhindert horizontales Scrollen */
        border: 1px solid #ddd;
        border-radius: 5px;
        margin-top: 10px;
      }
      .ts-table {
        width: 100%;
        border-collapse: collapse;
      }
      .ts-table th, .ts-table td {
        padding: 8px;
        border: 1px solid #ddd;
        vertical-align: middle;
        text-align: left;
      }
      .ts-table th {
        background-color: #e0e0e0; /* Abgesetzter Bereich für die Überschriften */
        font-weight: bold;
      }
      .ts-table .ts-speaker-column {
        width: 25%; /* 1/4 der Zeilenbreite für den Sprecher */
        text-align: center; /* Zentrierung des Inhalts */
      }
      .ts-table .ts-transcript-column {
        width: 75%; /* 3/4 der Zeilenbreite für den Inhalt */
      }
      .ts-table tr:nth-of-type(even) {
        background-color: #f0f0f0; /* Heller Grauton für jede zweite Zeile */
      }
      .ts-table tr:hover {
        background-color: #e0e0e0; /* Dunklerer Grauton beim Hover über jede Zeile */
      }
      .ts-speaker {
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        font-size: 1em;
        text-align: center;
      }
      .ts-speaker img {
        width: 50px;
        height: 50px;
        border-radius: 50%; /* Runde Bilder für die Sprecher */
        margin-bottom: 5px;
      }
      .ts-time {
        font-size: 0.9em;
        color: #666;
        display: block;
        margin-bottom: 5px;
      }
      .ts-content {
        font-size: 1em;
        line-height: 1.4;
      }
    </style>

    <div class="ts-table-container">
      <table class="ts-table">
        <thead>
          <tr>
            {% if episode.transcript|first.contributor is not null %}
              <th class="ts-speaker-column">Sprecher</th>
              <th class="ts-transcript-column">Transkript</th>
            {% else %}
              <th colspan="2">Transkript</th>
            {% endif %}
          </tr>
        </thead>
        <tbody>
          {# Schleife für jede Transkriptgruppe #}
          {% for group in episode.transcript %}
            {# Überprüfen, ob ein Mitwirkender definiert ist #}
            {% if group.contributor is not null %}
              {# Sprechername und Zeilen für diese Gruppe #}
              {% for line in group.items %}
                <tr>
                  <td class="ts-speaker">
                    {# Überprüfen, ob der Mitwirkende ein Bild hat #}
                    {% if group.contributor.avatar is not null %}
                      {{ group.contributor.avatar.html({width: 50, height: 50, alt: group.contributor.name}) }}
                    {% endif %}
                    <strong>{{ group.contributor.name }}</strong>
                  </td>
                  <td>
                    <span class="ts-time">{{ line.start }} &ndash; {{ line.end }}</span>
                    <div class="ts-content">{{ line.content }}</div>
                  </td>
                </tr>
              {% endfor %}
            {% else %}
              {# Falls kein Mitwirkender definiert ist, nur den Inhalt anzeigen, ohne Sprecherzelle #}
              {% for line in group.items %}
                <tr>
                  <td colspan="2">
                    <span class="ts-time">{{ line.start }} &ndash; {{ line.end }}</span>
                    <div class="ts-content">{{ line.content }}</div>
                  </td>
                </tr>
              {% endfor %}
            {% endif %}
          {% endfor %}
        </tbody>
      </table>
    </div>
  </div>

  <script type="text/javascript">
    function toggleTranscript() {
      const container = document.getElementById("transcript-container");
      const button = document.getElementById("toggle-transcript");
      if (container.style.display === "none") {
        container.style.display = "block";
        button.textContent = "Transkript ausblenden";
      } else {
        container.style.display = "none";
        button.textContent = "Für das Transkript hier klicken";
      }
    }
  </script>
{% else %}
  <p>Es ist kein Transkript für diese Episode verfügbar.</p>
{% endif %}

1 „Gefällt mir“

Cool, hast du das schon irgendwo im Einsatz?

Edith hat etwas gefunden: https://lautfunk.uber.space/podcast/gernzwertig-017-die-ethik-der-ki-zwischen-verantwortung-und-vertrauen/