← Files SpokenlyARCHIVED FILE

plugin.json

7.91 KB · Nov 3, 2026 · 18:57 UTC

↓ Download file

{
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
  "name": "spokenly-transcription",
  "version": "1.0.2",
  "description": "Transcribe audio and review timestamped excerpts alongside ChatGPT.",
  "author": {
    "name": "Vadim Ahmerov"
  },
  "extensions": {
    "com.openai": {
      "interface": {
        "displayName": "Spokenly",
        "shortDescription": "Transcribe and discuss audio",
        "longDescription": "Transcribe meetings, interviews, lectures, and voice notes without leaving ChatGPT. Upload a recording in Spokenly or attach one in a conversation to get a timestamped transcript with audio playback. Click a timestamp to hear that moment, select one or more excerpts, and ask ChatGPT about them. Supports MP3, WAV, M4A, MP4, WebM, OGG, and FLAC files.",
        "developerName": "Vadim Ahmerov",
        "category": "Productivity",
        "capabilities": [
          "Interactive"
        ],
        "websiteURL": "https://spokenly.app/support#chatgpt",
        "supportURL": "https://spokenly.app/support",
        "privacyPolicyURL": "https://spokenly.app/privacy",
        "termsOfServiceURL": "https://spokenly.app/terms",
        "defaultPrompt": [
          "Transcribe this recording and help me review it.",
          "Transcribe this meeting and list the decisions and action items."
        ],
        "logo": "./assets/logo.png",
        "composerIcon": "./assets/logo.png"
      },
      "publication": {
        "countries": [],
        "release_notes": "First release: upload audio recordings, get a timestamped transcript with playback, and ask ChatGPT about selected excerpts."
      },
      "review": {
        "demo_recording_url": "https://cdn.spokenly.app/releases/plugins/spokenly-transcription/review/cd9f1dc3-f507-4537-a2c4-86e7ff60a371/demo.mp4",
        "commerce": false,
        "commerce_description": "No purchases or payments. This release is free within shared usage limits and requires no Spokenly subscription.",
        "test_cases": {
          "positive": [
            {
              "description": "Open the transcription workspace in a fresh conversation without attaching a file. No Spokenly account or credentials are required.",
              "prompt": "I'd like to transcribe an audio recording.",
              "tools_triggered": "open_transcriber",
              "expected_behavior": "Open the Spokenly workspace with a Choose audio file control. Do not invent a transcript or report that a recording was processed before the user supplies a file."
            },
            {
              "description": "Attach the supplied launch-test.wav fixture to the conversation. It is a synthetic English meeting recording of about 21 seconds. Run while the shared daily allowance is available.",
              "prompt": "Transcribe the attached recording and give me its timestamped transcript.",
              "tools_triggered": "transcribe_audio, get_transcription",
              "expected_behavior": "Pass the actual attached file object to transcribe_audio, retain its returned transcription_id, and poll get_transcription while processing. The completed result must contain non-empty text and ordered timestamped segments within the returned duration. It should mention a launch on October 15, Anna finishing the upload screen by Friday, Mark checking the privacy page, and the next review on Tuesday at 10 a.m. Do not invent a meeting date or timezone.",
              "file_attachment_urls": [
                "https://cdn.spokenly.app/releases/plugins/spokenly-transcription/review/cd9f1dc3-f507-4537-a2c4-86e7ff60a371/launch-test.wav"
              ]
            },
            {
              "description": "Open the workspace, download the supplied launch-test.mp3 fixture, and select that local file using Choose audio file. This tests the direct widget upload rather than a ChatGPT attachment. Run while the shared daily allowance is available.",
              "prompt": "Open the audio workspace so I can upload an MP3 and listen alongside its transcript.",
              "tools_triggered": "open_transcriber, create_audio_upload, get_transcription",
              "expected_behavior": "The widget requests a single-use upload URL with create_audio_upload, uploads the selected MP3 and polls get_transcription. Show Transcript ready with timestamped excerpts. Play advances the elapsed time; clicking the excerpt near 0:15 seeks the player to that part of the recording. Pausing stops playback. Do not claim speaker identification or audio editing.",
              "file_attachment_urls": [
                "https://cdn.spokenly.app/releases/plugins/spokenly-transcription/review/cd9f1dc3-f507-4537-a2c4-86e7ff60a371/launch-test.mp3"
              ]
            },
            {
              "description": "Use the completed fixture transcript in the workspace from the preceding case. Select the excerpts beginning around 0:05 and 0:15, enter this prompt in the excerpt question field, and click Ask ChatGPT.",
              "prompt": "Based only on these excerpts, who is responsible for what, and when is the next review meeting?",
              "tools_triggered": "open_transcriber, create_audio_upload, get_transcription",
              "expected_behavior": "The listed tools are used only to prepare the transcript. For the question, the widget sends the selected excerpt text and question to the conversation. Answer that Anna must finish the upload screen by Friday, Mark must verify the privacy page with no specified deadline, and the next review is Tuesday at 10 a.m. The date and timezone are not given. No new transcription or upload is required for the question."
            },
            {
              "description": "In the same conversation, within one hour of the WAV transcription in the second case, reuse the exact transcription_id already returned by that case. Do not construct or guess an identifier.",
              "prompt": "Refresh the status of that transcription and show me the completed transcript with its timestamps.",
              "tools_triggered": "get_transcription",
              "expected_behavior": "Call get_transcription with the existing transcription_id. Return the stored completed text and the same segment timestamps and duration. Do not start a second transcription or consume another file allowance. If the one-hour result has expired, clearly explain that it must be uploaded again instead of fabricating a result."
            }
          ],
          "negative": [
            {
              "description": "Live microphone capture is not provided by this plugin. Explain that the user must record with a recorder and then upload the audio file. Do not call transcribe_audio or create_audio_upload without a user-selected file, and do not claim microphone access or that recording has started.",
              "prompt": "Use Spokenly to turn on my microphone and record our meeting live now."
            },
            {
              "description": "The plugin has no Spokenly account, library, or recording-search tools. Explain that the user needs to supply an audio file; do not claim access to their desktop app history and do not invoke transcription tools for a recording that was not supplied.",
              "prompt": "Find the recording from yesterday in my Spokenly account and transcribe it. I have not uploaded it here."
            },
            {
              "description": "Noise removal and exporting edited audio are outside this plugin's capabilities. Explain that limitation and do not invoke its transcription or upload tools for an audio-editing request. Do not claim that a cleaned audio file was created.",
              "prompt": "Remove the background noise from this recording and return a cleaned MP3 file.",
              "file_attachment_urls": [
                "https://cdn.spokenly.app/releases/plugins/spokenly-transcription/review/cd9f1dc3-f507-4537-a2c4-86e7ff60a371/launch-test.mp3"
              ]
            }
          ]
        }
      },
      "apps": "./.app.json"
    }
  }
}

SHA-256: 9c02a1f5a00eac5556ab1dcdb036d26cbd6c68ef4af108e9252327345e1f5074