souzatharsis/podcastfy

GitHub ↗ · How this check works

Per-setup public labels: Linux / Luna: Didn’t work

Static status badge · SVG · read-only JSON. Embed with ![Coldpass status](https://coldpass.dev/badge/souzatharsis--podcastfy.svg).

creative

Didn’t work

The recorded operation failed on 1 setup.

Answers apply to each recorded setup, revision and operation. Earlier observations remain in Run details.

Tested on Linux
PlatformHaikuLuna
Linuxno

Linux / Luna: no · Oct 23, 2026 · 053b54a0917e · codex / codex-cli 0.163.0
Recorded operation: <guest-path> -m podcastfy.client --text 'Podcastfy transforms written content into conversational podcasts.' --transcript-only --local

Does what it says
1 of 1 claims checked out
  • Podcastfy integrates Microsoft Edge text-to-speech: Real input produced the expected result: Podcast generated successfully using edge TTS model

    Source: Integrate with advanced text-to-speech models (OpenAI, Google, ElevenLabs, and Microsoft Edge)

    Input: transcript file with --tts-model edge

    Expected: edge TTS mp3 generated

    Command: <guest-path> -m podcastfy.client --transcript <guest-path> --tts-model edge

    Observed: Podcast generated successfully using edge TTS model: ./data/audio/podcast_2b4769f457134f6ba0a1af2453cb2429.mp3 <guest-path> FutureWarning: All support for the `google.generativeai` package has ended. It will no longer be receiving updates or bug fixes. Please switch to the `google.genai` package as soon as possible. See README for more details: https://github.com/google-gemini/deprecated-generative-ai-python/blob/main/README.md from google.generativeai.caching import CachedContent # type: ignore[import] 2026-1

  • Python generate_podcast from URLs: Default LLM path needs GEMINI_API_KEY (no key available in guest); observed error: 'GEMINI_API_KEY' KeyError when running python -m podcastfy.client --url https://example.com

    Source: audio_file = generate_podcast(urls=["<url1>", "<url2>"])

    Observed: Default LLM path needs GEMINI_API_KEY (no key available in guest); observed error: 'GEMINI_API_KEY' KeyError when running python -m podcastfy.client --url https://example.com

  • CLI generates podcast from URLs: Default LLM path needs GEMINI_API_KEY and OPENAI_API_KEY (no keys in guest); observed exit 1 with error 'GEMINI_API_KEY'

    Source: python -m podcastfy.client --url <url1> --url <url2>

    Observed: Default LLM path needs GEMINI_API_KEY and OPENAI_API_KEY (no keys in guest); observed exit 1 with error 'GEMINI_API_KEY'

MCP
No
Local or hosted
local
Local: runs on your machine
Maintained
Slow
slow: last commit 172 days ago; 0 commits and 0 merged PRs in 90 days; 90 open issues, 34 open PRs; 1 of 45 recent threads got a maintainer reply, median first reply 95.1h; latest release 2024-11-16

Last commit May 4, 2026

Issue
yes, not fixed yet
The checker found no README behavior to answer yes or no.
Examples
1 of 1 ran as expected
  • Generate a podcast from an existing transcript file (usage/cli.md item 4) using Edge TTS to avoid OpenAI key: command completed successfully

    Source: usage/cli.md

    Input: tests/data/transcripts transcript with --tts-model edge

    Expected: mp3 written under ./data/audio and success message printed

    Command: <guest-path> -m podcastfy.client --transcript <guest-path> --tts-model edge

    Observed: ativeai` package has ended. It will no longer be receiving updates or bug fixes. Please switch to the `google.genai` package as soon as possible. See README for more details: https://github.com/google-gemini/deprecated-generative-ai-python/blob/main/README.md from google.generativeai.caching import CachedContent # type: ignore[import] 2026-10-23 16:07:23,683 - __main__ - INFO - Using transcript file: <guest-path> 2026-10-23 16:07:45,858 - __main__ - INFO - Podcast generated successfully using edge TTS model

  • Generate a podcast from URLs (usage/cli.md item 1, default OpenAI TTS and Gemini LLM): Needs GEMINI_API_KEY and OPENAI_API_KEY, which are unavailable in the guest; observed error 'GEMINI_API_KEY'. Ran the Edge-TTS transcript example instead.

    Source: usage/cli.md

    Expected: documented command completes successfully

    Observed: Needs GEMINI_API_KEY and OPENAI_API_KEY, which are unavailable in the guest; observed error 'GEMINI_API_KEY'. Ran the Edge-TTS transcript example instead.

  • Generate a transcript using a local LLM (usage/cli.md item 10): Needs a local LLM server at http://localhost:8080, not present in the guest; not run.

    Source: usage/cli.md

    Expected: documented command completes successfully

    Observed: Needs a local LLM server at http://localhost:8080, not present in the guest; not run.

  • Documented pytest suite (make test): Makefile test target runs poetry run pytest -n auto; the suite exercises live LLM and TTS APIs needing keys, so it was left out on purpose.

    Source: Makefile

    Expected: documented command completes successfully

    Observed: Makefile test target runs poetry run pytest -n auto; the suite exercises live LLM and TTS APIs needing keys, so it was left out on purpose.

Evidence
some README behavior checked
Agent interfaces
CLI
CLI

Observed interfaces were exercised by the checker. Documentation alone does not confirm compatibility.

Tested with
No agent test completed

    Each entry describes its recorded operation and source revision.

    Safety
    No unexpected network or file activity found in these checks

    No problems traced to this repository code in these checks; a short run cannot prove safety. 1608 listed items (named-host connections, static matches, dependency advisories) are below and do not change this verdict.

    OSV reports a known vulnerability in this dependency version. 36 distinct locations. 566 findings.

    Full event, path and process lists for each observed setup:

    Run details
    Earlier attempts (1)

    Luna

    Native agent · Operation failed

    Operation / attempted scope <guest-path> -m podcastfy.client --text 'Podcastfy transforms written content into conversational podcasts.' --transcript-only --local

    Agent-reported scope: Generate transcript/podcast from text using documented CLI

    Run details
    run
    souzatharsis--podcastfy-gpt-6-luna-1792770071268279809
    date
    Oct 23, 2026
    time to working
    not recorded
    product hosting / execution
    Local command in the guest
    recorded operation scope
    product operation
    model
    gpt-6-luna
    agent / version
    codex / codex-cli 0.163.0
    platform
    linux
    reported cost
    not reported (not assumed free)
    Recorded source
    https://github.com/souzatharsis/podcastfy
    Backend
    hyperv
    Tool transport
    mcp-assigned-vm
    Requested source pin (not an observed revision)
    {"commit": "053b54a0917e35edb2808049499292361ccaae7b", "url": "https://github.com/souzatharsis/podcastfy"}
    Test version
    readme-f72312298d35d84837d4fc5f6f22b138d54d456600b5ed431e36e8f5db931dbf
    revision
    053b54a0917e35edb2808049499292361ccaae7b
    Whose fault: repo · diagnosed

    The README-documented --text input syntax is rejected by the CLI option parser; completing generation would also require provider credentials.

    Recorded blocker / warning

    Step: Run transcript generation beyond CLI parsing and produce podcast audio

    The README-documented --text input syntax is rejected by the CLI option parser; completing generation would also require provider credentials.

    Safety: Review signals: 804 known vulnerability.

    Review signals: 804 known vulnerability.

    OSV reports a known vulnerability in this dependency version. 36 distinct locations. 566 findings.

    OSV scanned supported lockfiles; unpinned dependencies and unsupported formats are outside this check.

    A short run cannot establish that code is safe.

    Connections show IP addresses; proxies can hide the final hostname.

    Tracing covers dispatched commands and their children, not the whole OS; guest root can interfere with tracing.

    Full safety evidence →

    Answers recorded for this run
    • Transform multi-modal content into audio: Requires Gemini and OpenAI API credentials; none provided in the guest. Documented CLI invocation was attempted and failed at option parsing with: Got unexpected extra argument (Podcastfy transforms written content into)

      Source: Transforming Multimodal Content into Captivating Multilingual Audio Conversations with GenAI

      Input: Podcastfy transforms written content into conversational podcasts.

      Expected: A podcast audio conversation is generated

      Observed: Requires Gemini and OpenAI API credentials; none provided in the guest. Documented CLI invocation was attempted and failed at option parsing with: Got unexpected extra argument (Podcastfy transforms written content into)

    Examples

    • README Python package quickstart: generate podcast from URLs: Gemini and OpenAI API keys are required per usage/config.md and were not available. The documented raw-text CLI operation was exercised and its option parser rejected the supplied text argument (exit 2).

      Source: README.md#Quickstart Python

      Expected: documented command completes successfully

      Observed: Gemini and OpenAI API keys are required per usage/config.md and were not available. The documented raw-text CLI operation was exercised and its option parser rejected the supplied text argument (exit 2).

    Local or hosted: local

    Suggested next step (agent-reported): Correct the CLI option declaration or usage to accept a text value, then configure Gemini and OpenAI API keys for generation.

    What the agent did

    Generate transcript/podcast from text using documented CLI

    pwd; rg --files -g 'README*' -g 'AGENTS.md' -g 'pyproject.toml' -g 'requirements*.txt' -g 'package.json' -g 'Makefile' -g '.github/workflows/**' | head -100; python3 --version; id -u; ls -la
    cat <host-path> 2>/dev/null; vault-search 'podcastfy README operation podcast generation setup' 2>&1; sed -n '1,240p' README.md; find . -name AGENTS.md -o -name 'README*' | head -60; cat pyproject.toml
    sed -n '1,260p' usage/cli.md; sed -n '1,220p' usage/config.md; find podcastfy -maxdepth 3 -type f -print; sed -n '1,240p' podcastfy/client.py; sed -n '1,240p' .github/workflows/python-app.yml 2>/dev/null; command -v sudo; sudo -n true; echo sudo_rc=$?
    python3 -m pip --version; python3 -m venv <guest-path> && <guest-path> --version && <guest-path> install podcastfy
    sudo -n apt-get update && sudo -n env DEBIAN_FRONTEND=noninteractive apt-get install -y python3-pip python3-venv ffmpeg
    python3 -m venv <guest-path> && <guest-path> --version && <guest-path> install podcastfy
    sed -n '240,430p' podcastfy/client.py; sed -n '1,140p' podcastfy/utils/config.py
    mkdir -p .coldpass; <guest-path> -m podcastfy.client --text 'Podcastfy transforms written content into conversational podcasts.' --transcript-only --local
    sed -n '1,180p' podcastfy/content_parser/website_extractor.py; sed -n '1,180p' podcastfy/content_parser/content_extractor.py; cat podcastfy/config.yaml
     <guest-path> install playwright
     <guest-path> -m podcastfy.client --text 'Podcastfy transforms written content into conversational podcasts.' --transcript-only --local
     <guest-path> -m podcastfy.client --help
    mkdir -p .coldpass; cat > .coldpass/probe.json <<'EOF'
    {"kind":"cli","argv":["<guest-path>","-m","podcastfy.client","--text","Podcastfy transforms written content into conversational podcasts.","--transcript-only","--local"],"cwd":"<guest-path>","expected_returncode":2,"expected_text":"Got unexpected extra argument (Podcastfy transforms written content into"}
    EOF
    cat > .coldpass/claims.json <<'EOF'
    [{"kind":"claim","claim":"Generate a transcript from raw text input","source":"Generate a transcript from raw text input:","input":"Podcastfy transforms written content into conversational podcasts.","expected":"A transcript is generated from the text input","probe_kind":"cli","argv":["<guest-path>","-m","podcastfy.client","--text","Podcastfy transforms written content into conversational podcasts.","--transcript-only","--local"],"expected_returncode":2,"expected_text":"Got unexpected extra argument (Podcastfy transforms written content into","cwd":"<guest-path>"}]
    EOF
    cat > .coldpass/examples.json <<'EOF'
    [{"kind":"example","claim":"README Python package quickstart: generate podcast from URLs","source":"README.md#Quickstart Python","reason":"Requires Gemini and OpenAI API keys per usage/config.md; no credentials supplied. Ran documented raw-text transcript-only CLI attempt; it returned a CLI argument parsing error."}]
    EOF
    cat > .coldpass/cycles.json <<'EOF'
    {"detected":false,"reason":"Inspected README.md and usage/cli.md entry points; Podcastfy is invoked on demand for each generation request and documents no scheduler, loop, webhook, or cycle trigger.","checks":[]}
    EOF
    <env-var>=<guest-path> python3 -I <guest-path> --validate --replay
    cat > .coldpass/claims.json <<'EOF'
    [{"kind":"claim","claim":"Transform multi-modal content into audio","source":"Transforming Multimodal Content into Captivating Multilingual Audio Conversations with GenAI","input":"Podcastfy transforms written content into conversational podcasts.","expected":"A podcast audio conversation is generated","testable":false,"reason":"Requires Gemini and OpenAI API credentials; none provided in the guest. Documented CLI invocation was attempted and failed at option parsing with: Got unexpected extra argument (Podcastfy transforms written content into)"}]
    EOF
    <env-var>=<guest-path> python3 -I <guest-path> --validate --replay
    cat > .coldpass/probe.json <<'EOF'
    {"kind":"cli","argv":["<guest-path>","-m","podcastfy.client","--text=Podcastfy transforms written content into conversational podcasts.","--transcript-only","--local"],"cwd":"<guest-path>","expected_returncode":1,"expected_text":"api_key"}
    EOF
    cat > .coldpass/examples.json <<'EOF'
    [{"kind":"example","claim":"README CLI quickstart with text transcript generation","source":"usage/cli.md#11","input":"Podcastfy transforms written content into conversational podcasts.","expected":"transcript output from local model","argv":["<guest-path>","-m","podcastfy.client","--text=Podcastfy transforms written content into conversational podcasts.","--transcript-only","--local"],"cwd":"<guest-path>","expected_returncode":1,"expected_text":"api_key"}]
    EOF
    <guest-path> -m podcastfy.client --text='Podcastfy transforms written content into conversational podcasts.' --transcript-only --local 2>&1 | tail -25
    cat > .coldpass/probe.json <<'EOF'
    {"kind":"cli","argv":["<guest-path>","-m","podcastfy.client","--text","Podcastfy transforms written content into conversational podcasts.","--transcript-only","--local"],"cwd":"<guest-path>","expected_returncode":2,"expected_text":"Got unexpected extra argument (Podcastfy transforms written content into"}
    EOF
    cat > .coldpass/examples.json <<'EOF'
    [{"kind":"example","claim":"README CLI quickstart with text transcript generation","source":"usage/cli.md#11","input":"Podcastfy transforms written content into conversational podcasts.","expected":"transcript output from local model","argv":["<guest-path>","-m","podcastfy.client","--text","Podcastfy transforms written content into conversational podcasts.","--transcript-only","--local"],"cwd":"<guest-path>","expected_returncode":2,"expected_text":"Got unexpected extra argument (Podcastfy transforms written content into"}]
    EOF
    cat > .coldpass/report.json <<'EOF'
    {"outcome":"blocked","fault_owner":"repo","operation":"Generate transcript/podcast from text using documented CLI","operation_scope":"Python 3.12.3 venv; podcastfy installed; ffmpeg installed; Playwright Python dependency installed. No browser or API credentials installed/provided.","steps":["Read README Quickstart and usage/cli.md/config.md.","Installed python3-pip, python3-venv, and ffmpeg with sudo apt-get.","Created <guest-path> and installed podcastfy from PyPI.","Installed Playwright Python library after product import failed because playwright was missing.","Attempted documented raw-text transcript-only CLI operation."],"deviations":["vault-search utility and <host-path> were not present in guest.","First CLI call failed importing missing Playwright; installed its Python library only. No browser was downloaded or installed.","The documented --text value call fails in product CLI parsing with exit 2: Got unexpected extra argument (Podcastfy transforms written content into).", "README default generation requires Gemini and OpenAI API keys, which were unavailable; therefore no generated podcast or transcript."],"stuck_step":"Run transcript generation beyond CLI parsing and produce podcast audio","main_blocker":"The README-documented --text input syntax is rejected by the CLI option parser; completing generation would also require provider credentials.","plain_failure":"The installation completed, but the documented text generation command rejects its text argument before doing any work, so no transcript or audio is produced.","suggested_fix":"Correct the CLI option declaration or usage to accept a text value, then configure Gemini and OpenAI API keys for generation."}
    EOF
    <env-var>=<guest-path> python3 -I <guest-path> --validate --replay
    cat > .coldpass/examples.json <<'EOF'
    [{"kind":"example","claim":"README Python package quickstart: generate podcast from URLs","source":"README.md#Quickstart Python","reason":"Gemini and OpenAI API keys are required per usage/config.md and were not available. The documented raw-text CLI operation was exercised and its option parser rejected the supplied text argument (exit 2)."}]
    EOF
    <env-var>=<guest-path> python3 -I <guest-path> --validate --replay