shipshapecode / shipshapecode/starpod

PodcastSeries JSON-LD is missing sameAs/logo, and Organization sub-nodes have no contactPoint/address

Open
#70 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
TypeScript
Stars
89
Forks
30
Avg merge
7h 41m
Merged PRs (30d)
14

Description

Context

An is-agentic.com scan of whiskey.fm flagged incomplete structured data:

JSON-LD Organization with name + description - add url and sameAs/logo/address for full score

Organization schema found but missing: contactPoint, address
Add Organization JSON-LD that includes both contactPoint (with email/phone and contactType) and address (PostalAddress). This lets AI verify your business legitimacy and answer contact queries.

Current state

packages/starpod/src/layouts/Layout.astro already emits a solid PodcastSeries node (name, about, description, url, webFeed, image, nested author/publisher Organization objects) — good baseline. What's missing:

{
  '@context': 'https://schema.org',
  '@type': 'PodcastSeries',
  // ...
  author: { '@type': 'Organization', name: show.title, url: canonicalURL.origin },
  publisher: { '@type': 'Organization', name: show.title, url: canonicalURL.origin }
  // no sameAs, no logo on the PodcastSeries node
  // no contactPoint/address on the Organization nodes
}
  • No sameAs array on the PodcastSeries node — starpodConfig.platforms already has apple/spotify/youtube/overcast/pocketCasts URLs, which are exactly what sameAs wants (canonical profile links proving the entity is the same across the web). This looks like a straightforward win since the data already exists in config.
  • No logo on the Organization sub-nodes (only the top-level PodcastSeries.image is set).
  • No contactPoint (email + contactType) or address on the Organization nodes — reasonable, since StarpodConfig has no field for either today. address may not even make sense for every show (a podcast isn't always a registered local business) — could be optional/skippable, but contactPoint seems like a reasonable ask once contact-page work (#69) lands, since that's the same email/contact info.

Proposed fix

  • Populate sameAs on the PodcastSeries node from Object.values(starpodConfig.platforms).filter(Boolean).
  • Add an optional logo field to StarpodConfig (or reuse an existing show-image asset) and wire it onto the Organization nodes.
  • Add an optional contactPoint (built from a config-level contact email, see #69) once there's a canonical place to source it from. Treat address as optional/skippable — not every show has one worth publishing.

🤖 Filed with Claude Code

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in packages/starpod/src/layouts/Layout.astro and inspect how the PodcastSeries and nested Organization nodes are assembled. Then read StarpodConfig and its platforms data, plus issue #69 for the proposed contact source. Done means sameAs is populated from available platform URLs, Organization logos are supported, and the contactPoint/address scope is settled and reflected in the structured data.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
web-dev
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.