shipshapecode / shipshapecode/starpod
PodcastSeries JSON-LD is missing sameAs/logo, and Organization sub-nodes have no contactPoint/address
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
sameAsarray on thePodcastSeriesnode —starpodConfig.platformsalready hasapple/spotify/youtube/overcast/pocketCastsURLs, which are exactly whatsameAswants (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
logoon theOrganizationsub-nodes (only the top-levelPodcastSeries.imageis set). - No
contactPoint(email + contactType) oraddresson theOrganizationnodes — reasonable, sinceStarpodConfighas no field for either today.addressmay not even make sense for every show (a podcast isn't always a registered local business) — could be optional/skippable, butcontactPointseems like a reasonable ask once contact-page work (#69) lands, since that's the same email/contact info.
Proposed fix
- Populate
sameAson thePodcastSeriesnode fromObject.values(starpodConfig.platforms).filter(Boolean). - Add an optional
logofield toStarpodConfig(or reuse an existing show-image asset) and wire it onto theOrganizationnodes. - Add an optional
contactPoint(built from a config-level contact email, see #69) once there's a canonical place to source it from. Treataddressas optional/skippable — not every show has one worth publishing.
🤖 Filed with Claude Code
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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