Ai Podcast Pipeline
Analysis
The podcast workflow is mostly purpose-aligned, but it should be reviewed because it can process loosely bounded local sources and its thumbnail step runs another local skill while handing it the Gemini API environment.
Findings (4)
Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.
Checks for instructions or behavior that redirect the agent, misuse tools, execute unexpected code, cascade across systems, exploit user trust, or continue outside the intended task.
if src.startswith('https://'):
u = urlparse(src)
slug = unquote(u.path).strip('/')
p = QUARTZ_ROOT / f"{slug}.md"
...
p = Path(src)
if p.exists():
return pThe source resolver accepts any HTTPS URL path and any existing local path without normalizing or verifying that it stays under the intended QuickView/Quartz directory.
NANO_SCRIPT = WORKSPACE_DIR / 'skills/nano-banana-pro/scripts/generate_image.py' ... cmd = ['uv', 'run', str(NANO_SCRIPT), '--prompt', prompt, '--filename', str(out_path), '--resolution', resolution] subprocess.run(cmd, check=True, env=env, timeout=600)
Default thumbnail generation executes a sibling skill script through uv; that helper is not part of this package's manifest and is not declared in the install metadata.
Checks whether tool use, credentials, dependencies, identity, account access, or inter-agent boundaries are broader than the stated purpose.
api_key = os.environ.get('GEMINI_API_KEY') or os.environ.get('NANO_BANANA_KEY')
...
env = os.environ.copy()
env['GEMINI_API_KEY'] = api_key
...
subprocess.run(cmd, check=True, env=env, timeout=600)The asset builder forwards the Gemini API key, along with the rest of the inherited environment, to the external nano-banana-pro helper.
Checks for exposed credentials, poisoned memory or context, unclear communication boundaries, or sensitive data that could leave the user's control.
url = f"https://generativelanguage.googleapis.com/v1beta/models/{model}:generateContent"
...
"contents": [{"parts": [{"text": prompt}]}]
...
"x-goog-api-key": keyDialogue text is sent to Google Gemini to generate audio, which is expected for the advertised TTS workflow but means source-derived content leaves the local machine.
