From 277c0bbb6f3f31ca0b2d10f94d3041b8f62c14f2 Mon Sep 17 00:00:00 2001 From: Benjamin Bellamy Date: Fri, 5 Mar 2021 23:10:46 +0100 Subject: [PATCH 01/64] Create license.md --- license/license.md | 52 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 license/license.md diff --git a/license/license.md b/license/license.md new file mode 100644 index 0000000..25dbcfb --- /dev/null +++ b/license/license.md @@ -0,0 +1,52 @@ +# The "podcast:license" Specification + +Version 1.0 by Benjamin Bellamy - 2021.03.05 + +
+ +## Purpose + +Podcasting is an open ecosystem where information travel freely from platform to platform, but that does not mean that podcast are free. +The fact that podcast files are available for anyone to download does not mean that anyone is allowed to do anything with them. +But how can one know what is permitted? It is often difficult - or even impossible - to know, even more if you want to manage that automatically. +This situation creates akward conflicts where everyone acts in good faith, everyone share the same goal (growing audiences for podcasts) but everyone disagree one what is acceptable. + +- Can the podcast be locally copied? Then can the copy be shared? Should it be fetched from the original location only? +- Can the podcast be shared for free? +- Can the podcast be shared for a fixed fee? For a subscription fee? +- Can the podcast be used to display ads on it? +- Can it be used for audio insertion? Pre-roll, mid-roll, post-roll? +- Can it be trimmed, cut, edited? Translated? Dubbed? +- Can the shownotes be trimmed, cut, edited? Converted from HTML to plain text? + +We have seen in the past Podcasters asking to have their podcast removed from a platform because they felt they were being stolen, even if that would mean less audience for them. +If we can provide a way to make what is allowed and what is forbiden crystal clear, we will avoid such conflicts. + +Please note that this document is about what can be done after the podcast is published, not before. +(For instance, using copyrighted music on copyrighted material in a podcast is not the subject here.) +You may read [PODCASTING LEGAL GUIDE: RULES FOR THE REVOLUTION](https://wiki.creativecommons.org/wiki/Podcasting_Legal_Guide) for more information. + +This matter is very complex so this specification only intends to scratch its surface in its current version. + +## Specification + +- **\** + + Channel (optional | single) + + Item (optional | single) + + This element allows a podcaster to specify a license for a podcast or an episode. + + - `label` (required): The license label + - `url` (required): This is the url to the license file. + + Examples: + - `` + - `` + - `` + + + + + From f884fa9612d40c4f52c38797b8227964b45f4afb Mon Sep 17 00:00:00 2001 From: Benjamin Bellamy Date: Fri, 5 Mar 2021 23:14:04 +0100 Subject: [PATCH 02/64] Update license.md --- license/license.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/license/license.md b/license/license.md index 25dbcfb..1066e60 100644 --- a/license/license.md +++ b/license/license.md @@ -9,7 +9,7 @@ Podcasting is an open ecosystem where information travel freely from platform to platform, but that does not mean that podcast are free. The fact that podcast files are available for anyone to download does not mean that anyone is allowed to do anything with them. But how can one know what is permitted? It is often difficult - or even impossible - to know, even more if you want to manage that automatically. -This situation creates akward conflicts where everyone acts in good faith, everyone share the same goal (growing audiences for podcasts) but everyone disagree one what is acceptable. +This situation creates akward conflicts where everyone acts in good faith, everyone share the same goal (growing audiences for podcasts) but everyone disagree on what is acceptable. - Can the podcast be locally copied? Then can the copy be shared? Should it be fetched from the original location only? - Can the podcast be shared for free? From aab4273c48d5b59f087ee87702a5960fac752fa9 Mon Sep 17 00:00:00 2001 From: Benjamin Bellamy Date: Fri, 5 Mar 2021 23:14:42 +0100 Subject: [PATCH 03/64] Update license.md --- license/license.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/license/license.md b/license/license.md index 1066e60..e5a3d51 100644 --- a/license/license.md +++ b/license/license.md @@ -12,8 +12,8 @@ But how can one know what is permitted? It is often difficult - or even impossib This situation creates akward conflicts where everyone acts in good faith, everyone share the same goal (growing audiences for podcasts) but everyone disagree on what is acceptable. - Can the podcast be locally copied? Then can the copy be shared? Should it be fetched from the original location only? -- Can the podcast be shared for free? -- Can the podcast be shared for a fixed fee? For a subscription fee? +- Can the podcast be shared/played for free? +- Can the podcast be shared/played for a fixed fee? For a subscription fee? - Can the podcast be used to display ads on it? - Can it be used for audio insertion? Pre-roll, mid-roll, post-roll? - Can it be trimmed, cut, edited? Translated? Dubbed? From 6a8501392173d9b61c57ca56defd4fbf1b722d9e Mon Sep 17 00:00:00 2001 From: Benjamin Bellamy Date: Fri, 5 Mar 2021 23:15:22 +0100 Subject: [PATCH 04/64] Update license.md --- license/license.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/license/license.md b/license/license.md index e5a3d51..d799e74 100644 --- a/license/license.md +++ b/license/license.md @@ -19,7 +19,7 @@ This situation creates akward conflicts where everyone acts in good faith, every - Can it be trimmed, cut, edited? Translated? Dubbed? - Can the shownotes be trimmed, cut, edited? Converted from HTML to plain text? -We have seen in the past Podcasters asking to have their podcast removed from a platform because they felt they were being stolen, even if that would mean less audience for them. +We have seen in the past Podcasters demanding to have their podcast removed from a platform because they felt they were being stolen, even if that would mean less audience for them. If we can provide a way to make what is allowed and what is forbiden crystal clear, we will avoid such conflicts. Please note that this document is about what can be done after the podcast is published, not before. From 7877be4f76042c4707ebf3d9cb7afac01ea74a1b Mon Sep 17 00:00:00 2001 From: Benjamin Bellamy Date: Fri, 5 Mar 2021 23:16:13 +0100 Subject: [PATCH 05/64] Update license.md --- license/license.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/license/license.md b/license/license.md index d799e74..895615c 100644 --- a/license/license.md +++ b/license/license.md @@ -23,7 +23,7 @@ We have seen in the past Podcasters demanding to have their podcast removed from If we can provide a way to make what is allowed and what is forbiden crystal clear, we will avoid such conflicts. Please note that this document is about what can be done after the podcast is published, not before. -(For instance, using copyrighted music on copyrighted material in a podcast is not the subject here.) +(For instance, using copyrighted music or copyrighted material in a podcast is not the subject here.) You may read [PODCASTING LEGAL GUIDE: RULES FOR THE REVOLUTION](https://wiki.creativecommons.org/wiki/Podcasting_Legal_Guide) for more information. This matter is very complex so this specification only intends to scratch its surface in its current version. From ab9ac8cde3f2bb2bec3867a51f7b1ff712745367 Mon Sep 17 00:00:00 2001 From: Benjamin Bellamy Date: Fri, 5 Mar 2021 23:16:55 +0100 Subject: [PATCH 06/64] Update license.md --- license/license.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/license/license.md b/license/license.md index 895615c..5089345 100644 --- a/license/license.md +++ b/license/license.md @@ -30,7 +30,7 @@ This matter is very complex so this specification only intends to scratch its su ## Specification -- **\** +- **\** Channel (optional | single) From ca4e0a62269ee295d2c7ce2b6fb8844397455041 Mon Sep 17 00:00:00 2001 From: Benjamin Bellamy Date: Sat, 6 Mar 2021 12:15:30 +0100 Subject: [PATCH 07/64] Update license.md --- license/license.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/license/license.md b/license/license.md index 5089345..bf08f8c 100644 --- a/license/license.md +++ b/license/license.md @@ -30,7 +30,7 @@ This matter is very complex so this specification only intends to scratch its su ## Specification -- **\** +- **\[License Label]** Channel (optional | single) @@ -38,13 +38,12 @@ This matter is very complex so this specification only intends to scratch its su This element allows a podcaster to specify a license for a podcast or an episode. - - `label` (required): The license label - `url` (required): This is the url to the license file. Examples: - - `` - - `` - - `` + - `(CC BY-ND 4.0)` + - `(CC BY-NC-ND 4.0)` + - `© My Company 2021 - All Rights Reserved` From b78d43a38f95bd461b1818098954d8a60c57a174 Mon Sep 17 00:00:00 2001 From: Benjamin Bellamy Date: Sat, 6 Mar 2021 14:24:28 +0100 Subject: [PATCH 08/64] Update license.md --- license/license.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/license/license.md b/license/license.md index bf08f8c..aaa5a97 100644 --- a/license/license.md +++ b/license/license.md @@ -46,6 +46,6 @@ This matter is very complex so this specification only intends to scratch its su - `© My Company 2021 - All Rights Reserved` - + Discussion here: https://github.com/Podcastindex-org/podcast-namespace/issues/177 From 909f4cd54653dd9011de36b190ff273563c875cc Mon Sep 17 00:00:00 2001 From: Benjamin Bellamy Date: Sat, 6 Mar 2021 14:26:35 +0100 Subject: [PATCH 09/64] Update license.md --- license/license.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/license/license.md b/license/license.md index aaa5a97..1909a47 100644 --- a/license/license.md +++ b/license/license.md @@ -46,6 +46,7 @@ This matter is very complex so this specification only intends to scratch its su - `© My Company 2021 - All Rights Reserved` - Discussion here: https://github.com/Podcastindex-org/podcast-namespace/issues/177 - + Discussion here: + - https://github.com/Podcastindex-org/podcast-namespace/issues/177 + - https://podcastindex.social/web/statuses/105839486748529374 From 7218edc5a5a2754bdde03b9ddd5f0b1865531b0d Mon Sep 17 00:00:00 2001 From: Dave Jones Date: Tue, 9 Mar 2021 15:05:26 -0600 Subject: [PATCH 10/64] Podcasting 2.0 - Explainer --- podcasting2.0.md | 61 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 podcasting2.0.md diff --git a/podcasting2.0.md b/podcasting2.0.md new file mode 100644 index 0000000..31ac120 --- /dev/null +++ b/podcasting2.0.md @@ -0,0 +1,61 @@ +# Podcasting 2.0 + + +## What is it? + +Podcasting 2.0 is a combination of ideas, and the technologies to support those ideas. It's a vision for what the podcast user experience can and should +be. That experience has stagnated for over a decade, with almost all of the improvements coming in isolated sections of the ecosystem. One app may figure +out a way to improve upon a single idea. Then, perhaps a hosting company makes a deal with a certain app to make headway with another challenge. In this +way we've ended up with fragments of innovation across the podcasting landscape with no central driving goal in mind. Podcasting 2.0 is the expression of +that goal. + +Stated eloquently, the goal is this: + + > "I think our focus should be 100% on improving the podcasting experience in an open-standard way that allows every player to innovate faster + > and better than any one company could do on their own. This is our best bet at avoiding one company emerging as the monopoly of podcasting." + > + > --Tom Rossi [Tom Rossi](https://podcastindex.social/@tomrossi7/105839063781381384) + + +Closed ecosystems can not innovate any better or faster than open systems. We should know this by now. The open world of RSS based podcasting can not only +keep pace with closed systems, it can exceed them easily. Podcasting 2.0 is simply the technological expression of this idea. We can make a better podcasting +experience for users than they can get behind any walls - no matter how high or expensive those walls are. + +There are three parts to Podcasting 2.0: + +1. The "podcast" namespace +2. Web app friendliness +3. Value for Value + + +## Step 1. Declare the "podcast" namespace in your feed + +To be a Podcasting 2.0 compliant podcast you need to first declare the "podcast" +[namespace](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md) in your feed if you self-host your podcast. If you +use a hosting company for your podcast, check [here](https://podcastindex.org/apps) for a list of hosts that now support the new namespace. + +The namespace gives you (and your listeners) access to many new features: + + - Transcripts: You can deliver a text transcript along with your episode to make your content more accessible to those with hearing challenges, or for those + learning your language. + - Funding: This points listeners back to a donation or membership page that they can click on to join or donate money to your show. + - Chapters: MP3 files have had the ability to embed chapters for many years. But, now you can create a "chapters file" that gets delivered along with your + episode to allow rich content like images, embedded web pages, titles and silent markers. This chapters file lives on the web, so it can be + changed later after publishing without uploading a new audio file or changing your episode. + - Soundbites: Specify short bits of your episode to serve as an intro or a teaser for your show. + - Persons: You can give multiple bio's in each episode that have short "about" descriptions of the people on that episode (like hosts, guests, etc.). Did you + interview someone cool? Point to their head shot image and link to their Wikipedia page or their blog. It makes searching for people within podcasts + easy and enjoyable. + - Location: Is your podcast about a specific place? Tag it's location right in the episode or podcast feed to let people know. It makes your show more + discoverable on the web. + - Named Seasons: Seasons have been around for a while, but now you can name them. This way you can avoid the hassle of trying to cram everything in your show title. + + +## Step 2. Make sure you're web app friendly + +Next, you need to confirm that your feed does not use "mixed content". That means that all of the parts of your podcast (the feed, images, audio files) + + +## Step 3. Value for Value + +The final step is monetizing your content with cryptocurrency. \ No newline at end of file From 2755517e3ada9850a3ebf4c2d89c95dd336eff4e Mon Sep 17 00:00:00 2001 From: Dave Jones Date: Tue, 9 Mar 2021 15:11:36 -0600 Subject: [PATCH 11/64] Podcasting 2.0 - Explainer --- podcasting2.0.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/podcasting2.0.md b/podcasting2.0.md index 31ac120..90ffb89 100644 --- a/podcasting2.0.md +++ b/podcasting2.0.md @@ -3,13 +3,12 @@ ## What is it? -Podcasting 2.0 is a combination of ideas, and the technologies to support those ideas. It's a vision for what the podcast user experience can and should -be. That experience has stagnated for over a decade, with almost all of the improvements coming in isolated sections of the ecosystem. One app may figure -out a way to improve upon a single idea. Then, perhaps a hosting company makes a deal with a certain app to make headway with another challenge. In this -way we've ended up with fragments of innovation across the podcasting landscape with no central driving goal in mind. Podcasting 2.0 is the expression of -that goal. +Podcasting 2.0 is a set of forward looking ideas combined with the technology to realize them. It's a vision for what the podcast listener experience can and should +be. That experience has stagnated for over a decade, with almost all of the improvements coming in isolated sections of the ecosystem. There hasn't been a single, +unified vision from the podcasting community acting together with one voice. So, we've ended up with fragments of innovation across the podcasting landscape with no +central driving goal in mind. Podcasting 2.0 is the expression of that goal. -Stated eloquently, the goal is this: +Stated eloquently, the aim of Podcasting 2.0 is this: > "I think our focus should be 100% on improving the podcasting experience in an open-standard way that allows every player to innovate faster > and better than any one company could do on their own. This is our best bet at avoiding one company emerging as the monopoly of podcasting." From 13a590b79d0de4941662f3cc98b88fb2d57be9b4 Mon Sep 17 00:00:00 2001 From: Dave Jones Date: Tue, 9 Mar 2021 15:13:09 -0600 Subject: [PATCH 12/64] Podcasting 2.0 - Explainer --- podcasting2.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/podcasting2.0.md b/podcasting2.0.md index 90ffb89..2c8006a 100644 --- a/podcasting2.0.md +++ b/podcasting2.0.md @@ -6,7 +6,7 @@ Podcasting 2.0 is a set of forward looking ideas combined with the technology to realize them. It's a vision for what the podcast listener experience can and should be. That experience has stagnated for over a decade, with almost all of the improvements coming in isolated sections of the ecosystem. There hasn't been a single, unified vision from the podcasting community acting together with one voice. So, we've ended up with fragments of innovation across the podcasting landscape with no -central driving goal in mind. Podcasting 2.0 is the expression of that goal. +central driving goal in mind. Podcasting 2.0 is the expression of what that goal could be. Stated eloquently, the aim of Podcasting 2.0 is this: From d13cc70cb891887dba544675f9fe2a00fd575cf7 Mon Sep 17 00:00:00 2001 From: Dave Jones Date: Tue, 9 Mar 2021 15:17:07 -0600 Subject: [PATCH 13/64] Podcasting 2.0 - Explainer --- podcasting2.0.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/podcasting2.0.md b/podcasting2.0.md index 2c8006a..8355bdb 100644 --- a/podcasting2.0.md +++ b/podcasting2.0.md @@ -1,8 +1,6 @@ # Podcasting 2.0 -## What is it? - Podcasting 2.0 is a set of forward looking ideas combined with the technology to realize them. It's a vision for what the podcast listener experience can and should be. That experience has stagnated for over a decade, with almost all of the improvements coming in isolated sections of the ecosystem. There hasn't been a single, unified vision from the podcasting community acting together with one voice. So, we've ended up with fragments of innovation across the podcasting landscape with no @@ -18,7 +16,7 @@ Stated eloquently, the aim of Podcasting 2.0 is this: Closed ecosystems can not innovate any better or faster than open systems. We should know this by now. The open world of RSS based podcasting can not only keep pace with closed systems, it can exceed them easily. Podcasting 2.0 is simply the technological expression of this idea. We can make a better podcasting -experience for users than they can get behind any walls - no matter how high or expensive those walls are. +experience for listeners than they can get behind any walled garden - no matter how high or expensive those walls are. There are three parts to Podcasting 2.0: @@ -27,7 +25,7 @@ There are three parts to Podcasting 2.0: 3. Value for Value -## Step 1. Declare the "podcast" namespace in your feed +## Step 1. Adopt the "podcast" Namespace To be a Podcasting 2.0 compliant podcast you need to first declare the "podcast" [namespace](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md) in your feed if you self-host your podcast. If you @@ -50,7 +48,7 @@ The namespace gives you (and your listeners) access to many new features: - Named Seasons: Seasons have been around for a while, but now you can name them. This way you can avoid the hassle of trying to cram everything in your show title. -## Step 2. Make sure you're web app friendly +## Step 2. Be Web App Friendly Next, you need to confirm that your feed does not use "mixed content". That means that all of the parts of your podcast (the feed, images, audio files) From c23ba13817ebcc9d321f8fab2a5b88d64980937f Mon Sep 17 00:00:00 2001 From: Dave Jones Date: Tue, 9 Mar 2021 15:17:58 -0600 Subject: [PATCH 14/64] Podcasting 2.0 - Explainer --- podcasting2.0.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/podcasting2.0.md b/podcasting2.0.md index 8355bdb..2f43fa8 100644 --- a/podcasting2.0.md +++ b/podcasting2.0.md @@ -24,6 +24,7 @@ There are three parts to Podcasting 2.0: 2. Web app friendliness 3. Value for Value +

## Step 1. Adopt the "podcast" Namespace @@ -47,11 +48,13 @@ The namespace gives you (and your listeners) access to many new features: discoverable on the web. - Named Seasons: Seasons have been around for a while, but now you can name them. This way you can avoid the hassle of trying to cram everything in your show title. +

## Step 2. Be Web App Friendly Next, you need to confirm that your feed does not use "mixed content". That means that all of the parts of your podcast (the feed, images, audio files) +

## Step 3. Value for Value From e4cdaad40d0e695350b515714a85406ee5769a83 Mon Sep 17 00:00:00 2001 From: Dave Jones Date: Tue, 9 Mar 2021 15:30:16 -0600 Subject: [PATCH 15/64] Podcasting 2.0 - Explainer --- podcasting2.0.md | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/podcasting2.0.md b/podcasting2.0.md index 2f43fa8..a005ea0 100644 --- a/podcasting2.0.md +++ b/podcasting2.0.md @@ -52,7 +52,25 @@ The namespace gives you (and your listeners) access to many new features: ## Step 2. Be Web App Friendly -Next, you need to confirm that your feed does not use "mixed content". That means that all of the parts of your podcast (the feed, images, audio files) +Next, you need to confirm that your feed does not have "mixed content", and that it supports CORS where necessary. Again, if you use a hosting company for your podcast +just [make sure](https://podcastindex.org/apps) they are supporting Podcasting 2.0 features. If your host isn't on that list, send them a message and let them know you +want these new features. + +If you self-host your podcast, take note of these two things... + +#### Mixed Content + +"Mixed content" is what happens when part of your podcast (like your feed) is served securely and other parts of it (like the images or the audio) are not. When this +happens, web-based podcast players cannot play your content or see your images. Modern web browsers are very strict about security and "mixed content" is blocked by +most of them. Make sure your entire podcast is served over HTTPS with a valid certificate. + +#### CORS + +Another problem that can hamper your content under certain circumstances (like embedded pages in chapters) is CORS. If you serve content along with your podcast that +requires cross-origin access, please be sure to enable the correct CORS policies on the domain the content is served from. You can find details +[here](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS). + +Web-based podcast apps, PWA's (Progressive Web Apps) and Browser Extension based apps are critical to Podcasting 2.0, so the above changes are very important.

From 4842ca13b49f141d3a0b141067e0ed8e31a04971 Mon Sep 17 00:00:00 2001 From: Dave Jones Date: Wed, 10 Mar 2021 21:49:54 -0600 Subject: [PATCH 16/64] Update podcasting2.0.md --- podcasting2.0.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/podcasting2.0.md b/podcasting2.0.md index a005ea0..db9e689 100644 --- a/podcasting2.0.md +++ b/podcasting2.0.md @@ -76,4 +76,10 @@ Web-based podcast apps, PWA's (Progressive Web Apps) and Browser Extension based ## Step 3. Value for Value -The final step is monetizing your content with cryptocurrency. \ No newline at end of file +The final step is monetizing your content with cryptocurrency. This allows your content to be truly free from the pressures of advertising. Advertising serves a necessary role in any free market, but it does come with a cost. That cost is censorship - whether it's direct censorship by the advertisers themselves or self-censorship as you restrict your speech as to not offend the advertisers. + +Because of this, there is now a way to get cryptocurrency payments directly from your listeners to you using the new `` tag in your feed. It is not currently supported by any podcast hosting companies, but you can start using it in your feed today to show up on apps that support it like Sphinx.chat and podStation. + +If you can't add the `` tag to your feed manually, we also have created [a site](https://podcasterwallet.com) that can help you put a value tag directly into the Podcast Index database for your feed. Any apps that use the Podcast Index will see your value tag and be able to stream micropayments to you. + +The `` tag is still early and experimental. But, it does work today. There are more details about it in the [whitepaper]() here. From 43c62d4db96b17ea5f4e273b5503c0624634f456 Mon Sep 17 00:00:00 2001 From: Dave Jones Date: Wed, 10 Mar 2021 21:54:31 -0600 Subject: [PATCH 17/64] Update podcasting2.0.md --- podcasting2.0.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/podcasting2.0.md b/podcasting2.0.md index db9e689..cddd191 100644 --- a/podcasting2.0.md +++ b/podcasting2.0.md @@ -76,10 +76,11 @@ Web-based podcast apps, PWA's (Progressive Web Apps) and Browser Extension based ## Step 3. Value for Value -The final step is monetizing your content with cryptocurrency. This allows your content to be truly free from the pressures of advertising. Advertising serves a necessary role in any free market, but it does come with a cost. That cost is censorship - whether it's direct censorship by the advertisers themselves or self-censorship as you restrict your speech as to not offend the advertisers. +The final step is monetizing your content with cryptocurrency so your listeners can support you directly with no middle-men. This allows your content to be truly free from the pressures of advertising. Advertising serves a necessary role in any free market, but it does come with a cost. That cost is censorship - whether it's direct censorship by the advertisers themselves or self-censorship as you restrict your speech as to not offend the advertisers. -Because of this, there is now a way to get cryptocurrency payments directly from your listeners to you using the new `` tag in your feed. It is not currently supported by any podcast hosting companies, but you can start using it in your feed today to show up on apps that support it like Sphinx.chat and podStation. +Because of this, there is now a way to get cryptocurrency payments directly from your listeners to you using the new `` tag in your feed. It is not currently supported by any podcast hosting companies, but you can start using it in your feed today to show up on apps that support it like [Sphinx.chat](https://sphinx.chat) and [podStation](). If you can't add the `` tag to your feed manually, we also have created [a site](https://podcasterwallet.com) that can help you put a value tag directly into the Podcast Index database for your feed. Any apps that use the Podcast Index will see your value tag and be able to stream micropayments to you. -The `` tag is still early and experimental. But, it does work today. There are more details about it in the [whitepaper]() here. +The `` tag is still early and experimental. But, it does work today. There are more details about it in this [blog post] +(https://blog.podcastindex.org/html/AnotherWay-lJmNWj9T490hdmPmz5M4GV1Tlw6rDF.html) the [whitepaper](value/value.md). And, the Podcasting 2.0 community is always willing to lend you a hand and some advice on the [podcastindex.social](https://podcastindex.social) discussion server. From 6a85fe7be0b7b869e333fe72fb857722a937c048 Mon Sep 17 00:00:00 2001 From: Dave Jones Date: Wed, 10 Mar 2021 21:58:01 -0600 Subject: [PATCH 18/64] Update podcasting2.0.md --- podcasting2.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/podcasting2.0.md b/podcasting2.0.md index cddd191..94c6391 100644 --- a/podcasting2.0.md +++ b/podcasting2.0.md @@ -78,7 +78,7 @@ Web-based podcast apps, PWA's (Progressive Web Apps) and Browser Extension based The final step is monetizing your content with cryptocurrency so your listeners can support you directly with no middle-men. This allows your content to be truly free from the pressures of advertising. Advertising serves a necessary role in any free market, but it does come with a cost. That cost is censorship - whether it's direct censorship by the advertisers themselves or self-censorship as you restrict your speech as to not offend the advertisers. -Because of this, there is now a way to get cryptocurrency payments directly from your listeners to you using the new `` tag in your feed. It is not currently supported by any podcast hosting companies, but you can start using it in your feed today to show up on apps that support it like [Sphinx.chat](https://sphinx.chat) and [podStation](). +Because of these issues, we've created a way to receive cryptocurrency payments directly from your listeners to you using the experimental `` tag in your podcast feed. Because it is experimental, it is not currently supported by any major podcast hosting companies. But, if you are so inclined, you can start using it in your feed today so that your podcast will show up on apps that support it like [Sphinx.chat](https://sphinx.chat) and [podStation](). If you can't add the `` tag to your feed manually, we also have created [a site](https://podcasterwallet.com) that can help you put a value tag directly into the Podcast Index database for your feed. Any apps that use the Podcast Index will see your value tag and be able to stream micropayments to you. From 0222469d0b1f9f6d08f0b3510fea7bf804576660 Mon Sep 17 00:00:00 2001 From: Dave Jones Date: Wed, 10 Mar 2021 22:00:26 -0600 Subject: [PATCH 19/64] Update podcasting2.0.md --- podcasting2.0.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/podcasting2.0.md b/podcasting2.0.md index 94c6391..4a4fef5 100644 --- a/podcasting2.0.md +++ b/podcasting2.0.md @@ -82,5 +82,4 @@ Because of these issues, we've created a way to receive cryptocurrency payments If you can't add the `` tag to your feed manually, we also have created [a site](https://podcasterwallet.com) that can help you put a value tag directly into the Podcast Index database for your feed. Any apps that use the Podcast Index will see your value tag and be able to stream micropayments to you. -The `` tag is still early and experimental. But, it does work today. There are more details about it in this [blog post] -(https://blog.podcastindex.org/html/AnotherWay-lJmNWj9T490hdmPmz5M4GV1Tlw6rDF.html) the [whitepaper](value/value.md). And, the Podcasting 2.0 community is always willing to lend you a hand and some advice on the [podcastindex.social](https://podcastindex.social) discussion server. +The `` tag is still early and experimental. But, it does work today. There are more details about it in this [blog post](https://blog.podcastindex.org/html/AnotherWay-lJmNWj9T490hdmPmz5M4GV1Tlw6rDF.html), and in the official [whitepaper](value/value.md). The Podcasting 2.0 community is also always willing to lend you a hand and some advice on the [podcastindex.social](https://podcastindex.social) discussion server. From 8e25fd936ecf40479a85b0389ad1c19283d40f85 Mon Sep 17 00:00:00 2001 From: Benjamin Bellamy Date: Thu, 11 Mar 2021 19:21:53 +0100 Subject: [PATCH 20/64] Create Chapters.md --- API/Chapters.md | 91 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 API/Chapters.md diff --git a/API/Chapters.md b/API/Chapters.md new file mode 100644 index 0000000..ab69622 --- /dev/null +++ b/API/Chapters.md @@ -0,0 +1,91 @@ +# The Chapters API Specification + +Version 1.0 by Benjamin Bellamy - 2021.03.11 + +
+ +## Purpose +The PodcastIndex namespace allows all podcast platforms (hosting, index, players…) to speak the same language and interact together. +These interactions are limited to communications through the RSS feeds. +This document describes a new type of interaction between actors who use a same PodcastIndex namespace tag: [Podcast:Chapters](https://github.com/Podcastindex-org/podcast-namespace/blob/main/chapters/jsonChapters.md). +It was initiated by [David Norman](https://podcastindex.social/@hypercatcher) for [Hypercatcher](https://hypercatcher.com/) and [Benjamin Bellamy](https://podcastindex.social/@benjaminbellamy) for [Castopod](https://castopod.org/) so that HyperCatcher and Castopod are able to interact together and create a seamless experience for podcasters. + +To help making things clear, let's take an example: +A podcaster, we'll call her Eve, is hosting a podcast on Castopod. She is using HyperCatcher to manage the chapters. + +### Before using Chapter API +Whenever Eve wants to publish a new episode, she has to: +- Go to her Castopod admin panel, save the episode, then publish it so that it is visible in the RSS feed. +- Go to her HyperCatcher dashboard, click "Edit", click "Fetch Episodes" so that HyperCatcher gets this new episode. +- Click on the newly fetched episode, copy the "Url for Json". +- Go back to Castopod admin panel, edit the episode, paste the previously copied "Url for Json" into the appropriate field, hoping that no platform had fetched the RSS in the meantime, before it was pasted. + +Later, Eve will wait for users to edit chapters, she will go back to HyperCatcher dashboard, Accept (or not) the community chapters. + +### After using Chapter API +Whenever Eve wants to publish a new episode, she has to: +- Go to her Castopod admin panel, save the episode. (Castopod will automatically call the Chapter API at Hypercatcher, send the new episode and get from HyperCatcher the public "URL for Json" and the private URL to the episode in the HyperCatcher dashboard.) +- That's it. + +Later, Eve will wait for users to edit chapters, she will go back to HyperCatcher dashboard, Accept (or not) the community chapters. +Because Castopod knows the private URL to the episode in the HyperCatcher dashboard, a link from the episode edit page in Castopod to the episode in HyperCatcher will be displayed. +And we think that this is pretty cool. + +## Technical Specification + +This version is a first draft. It will be updated. + +This API uses REST. + +It involves 2 parties: +- a poscast hosting service +- a chapter provider service + +### Endpoints +This API has only one endpoint (so far), hosted at the Chapter provider. + +#### AddNewEpisode +- `POST /AddNewEpisode` +This adds a new Episode to the chapter provider. +The endpoint URL may be defined by the chapter provider. The podcast hosting service must provide a way to specify this endpoint URL as a parameter. + +Parameters: +- `rss`: RSS feed URL +- `guid`: New Episode GUID +- `enclosure_url`: New episode enclosure url + +Response: +- `status`: true or false +- `jsonUrl`: Url for Json +- `episodeUrl`: Url for episode on dashboard + +### Authentication +The chapter provider will provide a couple `apiKey` and `apiSecret` which will be displayed on the user dashboard. +Fields: +- `User-Agent`: Mandatory +Please identify the system/product you are using to make this request. +Example: Castopod/1.0 +- `X-Auth-Key`: Mandatory +Your API key string +Example: UXKCGDSYGUUEVQJSYDZH +- `X-Auth-Date`: Mandatory +The current unix epoch time as a string. 5 minute window. +This value is an integer; round down if needed. The value shall not include a decimal point. +Example: 1613713388 +- `Authorization`: Mandatory +A SHA-1 hash of the X-Auth-Key, the corresponding secret and the X-Auth-Date value concatenated as a string. The resulting hash should be encoded as a hexadecimal value, two digits per byte, using lower case letters for the hex digits "a" through "f". +Example: UXKCGDSYGUUEVQJSYDZH +The Authorization header is computed with something like this (pseudo-code): +``` +authHeader = sha1(apiKey+apiSecret+unixTime) +``` + + + + + + + + + + From 1992a2fbf2b1754ec830ee2037bff081c2daf849 Mon Sep 17 00:00:00 2001 From: Benjamin Bellamy Date: Thu, 11 Mar 2021 19:30:48 +0100 Subject: [PATCH 21/64] Update Chapters.md --- API/Chapters.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/API/Chapters.md b/API/Chapters.md index ab69622..b86d567 100644 --- a/API/Chapters.md +++ b/API/Chapters.md @@ -13,7 +13,7 @@ It was initiated by [David Norman](https://podcastindex.social/@hypercatcher) fo To help making things clear, let's take an example: A podcaster, we'll call her Eve, is hosting a podcast on Castopod. She is using HyperCatcher to manage the chapters. -### Before using Chapter API +### Without the Chapters API Whenever Eve wants to publish a new episode, she has to: - Go to her Castopod admin panel, save the episode, then publish it so that it is visible in the RSS feed. - Go to her HyperCatcher dashboard, click "Edit", click "Fetch Episodes" so that HyperCatcher gets this new episode. @@ -22,7 +22,7 @@ Whenever Eve wants to publish a new episode, she has to: Later, Eve will wait for users to edit chapters, she will go back to HyperCatcher dashboard, Accept (or not) the community chapters. -### After using Chapter API +### With the Chapters API Whenever Eve wants to publish a new episode, she has to: - Go to her Castopod admin panel, save the episode. (Castopod will automatically call the Chapter API at Hypercatcher, send the new episode and get from HyperCatcher the public "URL for Json" and the private URL to the episode in the HyperCatcher dashboard.) - That's it. From c61eadf9c22a6a1e4c1c43b2336965895ebf1869 Mon Sep 17 00:00:00 2001 From: Benjamin Bellamy Date: Thu, 11 Mar 2021 19:42:07 +0100 Subject: [PATCH 22/64] Update Chapters.md --- API/Chapters.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/API/Chapters.md b/API/Chapters.md index b86d567..6518e59 100644 --- a/API/Chapters.md +++ b/API/Chapters.md @@ -1,4 +1,4 @@ -# The Chapters API Specification +# The podcast:chapters API Specification Version 1.0 by Benjamin Bellamy - 2021.03.11 @@ -13,7 +13,7 @@ It was initiated by [David Norman](https://podcastindex.social/@hypercatcher) fo To help making things clear, let's take an example: A podcaster, we'll call her Eve, is hosting a podcast on Castopod. She is using HyperCatcher to manage the chapters. -### Without the Chapters API +### Without the podcast:chapters API Whenever Eve wants to publish a new episode, she has to: - Go to her Castopod admin panel, save the episode, then publish it so that it is visible in the RSS feed. - Go to her HyperCatcher dashboard, click "Edit", click "Fetch Episodes" so that HyperCatcher gets this new episode. @@ -22,7 +22,7 @@ Whenever Eve wants to publish a new episode, she has to: Later, Eve will wait for users to edit chapters, she will go back to HyperCatcher dashboard, Accept (or not) the community chapters. -### With the Chapters API +### With the podcast:chapters API Whenever Eve wants to publish a new episode, she has to: - Go to her Castopod admin panel, save the episode. (Castopod will automatically call the Chapter API at Hypercatcher, send the new episode and get from HyperCatcher the public "URL for Json" and the private URL to the episode in the HyperCatcher dashboard.) - That's it. From 895348eec4237b4b0549f448752b93fe7065b28b Mon Sep 17 00:00:00 2001 From: Benjamin Bellamy Date: Thu, 11 Mar 2021 19:42:52 +0100 Subject: [PATCH 23/64] Update Chapters.md --- API/Chapters.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/API/Chapters.md b/API/Chapters.md index 6518e59..9913402 100644 --- a/API/Chapters.md +++ b/API/Chapters.md @@ -33,7 +33,7 @@ And we think that this is pretty cool. ## Technical Specification -This version is a first draft. It will be updated. +This version is a first draft. It will be updated. It may move somewhere else. This API uses REST. From d08f99d1948e7840e791e6408e2281d69abc5930 Mon Sep 17 00:00:00 2001 From: Benjamin Bellamy Date: Thu, 11 Mar 2021 19:43:36 +0100 Subject: [PATCH 24/64] Update Chapters.md --- API/Chapters.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/API/Chapters.md b/API/Chapters.md index 9913402..4b50ef0 100644 --- a/API/Chapters.md +++ b/API/Chapters.md @@ -3,6 +3,7 @@ Version 1.0 by Benjamin Bellamy - 2021.03.11
+This version is a first draft. It will be updated. It may move somewhere else. ## Purpose The PodcastIndex namespace allows all podcast platforms (hosting, index, players…) to speak the same language and interact together. @@ -32,9 +33,6 @@ Because Castopod knows the private URL to the episode in the HyperCatcher dashbo And we think that this is pretty cool. ## Technical Specification - -This version is a first draft. It will be updated. It may move somewhere else. - This API uses REST. It involves 2 parties: From d3e352474dfebfb48e182b36b0e6e88bda12e694 Mon Sep 17 00:00:00 2001 From: Benjamin Bellamy Date: Thu, 11 Mar 2021 19:47:11 +0100 Subject: [PATCH 25/64] Update Chapters.md --- API/Chapters.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/API/Chapters.md b/API/Chapters.md index 4b50ef0..7fbc911 100644 --- a/API/Chapters.md +++ b/API/Chapters.md @@ -36,16 +36,16 @@ And we think that this is pretty cool. This API uses REST. It involves 2 parties: -- a poscast hosting service -- a chapter provider service +- a Poscast Hosting service. +- a Chapters Provider service. ### Endpoints -This API has only one endpoint (so far), hosted at the Chapter provider. +This API has only one endpoint (so far), hosted at the Chapters Provider. #### AddNewEpisode - `POST /AddNewEpisode` This adds a new Episode to the chapter provider. -The endpoint URL may be defined by the chapter provider. The podcast hosting service must provide a way to specify this endpoint URL as a parameter. +The endpoint URL may be defined by the chapter provider. The Podcast Hosting service must provide a way to specify this endpoint URL as a parameter. Parameters: - `rss`: RSS feed URL @@ -58,7 +58,8 @@ Response: - `episodeUrl`: Url for episode on dashboard ### Authentication -The chapter provider will provide a couple `apiKey` and `apiSecret` which will be displayed on the user dashboard. +Thir API will use the mechanism already used by the [PodcastIndex.org API](https://podcastindex-org.github.io/docs-api/#auth). +The Chapters Provider will provide a couple `apiKey` and `apiSecret` which will be displayed on the user dashboard. Fields: - `User-Agent`: Mandatory Please identify the system/product you are using to make this request. From 1c294f7ba26f8f93c50a5d4e67a02fe489d38878 Mon Sep 17 00:00:00 2001 From: Benjamin Bellamy Date: Thu, 11 Mar 2021 19:48:50 +0100 Subject: [PATCH 26/64] Update Chapters.md --- API/Chapters.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/API/Chapters.md b/API/Chapters.md index 7fbc911..cc653f5 100644 --- a/API/Chapters.md +++ b/API/Chapters.md @@ -59,7 +59,7 @@ Response: ### Authentication Thir API will use the mechanism already used by the [PodcastIndex.org API](https://podcastindex-org.github.io/docs-api/#auth). -The Chapters Provider will provide a couple `apiKey` and `apiSecret` which will be displayed on the user dashboard. +The Chapters Provider will provide a couple `apiKey` and `apiSecret` which will be displayed on the user dashboard so that the podcaster can copy them and paste them on his Podcast Hosting configuration panel. Fields: - `User-Agent`: Mandatory Please identify the system/product you are using to make this request. From 03e400b102915c15b735e6527bd14e4e6164f4ae Mon Sep 17 00:00:00 2001 From: Benjamin Bellamy Date: Thu, 11 Mar 2021 19:49:18 +0100 Subject: [PATCH 27/64] Update Chapters.md --- API/Chapters.md | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/API/Chapters.md b/API/Chapters.md index cc653f5..d18d90c 100644 --- a/API/Chapters.md +++ b/API/Chapters.md @@ -59,7 +59,7 @@ Response: ### Authentication Thir API will use the mechanism already used by the [PodcastIndex.org API](https://podcastindex-org.github.io/docs-api/#auth). -The Chapters Provider will provide a couple `apiKey` and `apiSecret` which will be displayed on the user dashboard so that the podcaster can copy them and paste them on his Podcast Hosting configuration panel. +The Chapters Provider will provide a couple `apiKey` and `apiSecret` which will be displayed on the user dashboard so that the podcaster can copy and paste them on his Podcast Hosting configuration panel. Fields: - `User-Agent`: Mandatory Please identify the system/product you are using to make this request. @@ -78,13 +78,3 @@ The Authorization header is computed with something like this (pseudo-code): ``` authHeader = sha1(apiKey+apiSecret+unixTime) ``` - - - - - - - - - - From bed6781d2be34f15a7981ac15580e5406b7e65c4 Mon Sep 17 00:00:00 2001 From: Benjamin Bellamy Date: Thu, 11 Mar 2021 19:50:37 +0100 Subject: [PATCH 28/64] Update Chapters.md --- API/Chapters.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/API/Chapters.md b/API/Chapters.md index d18d90c..b66d357 100644 --- a/API/Chapters.md +++ b/API/Chapters.md @@ -29,8 +29,7 @@ Whenever Eve wants to publish a new episode, she has to: - That's it. Later, Eve will wait for users to edit chapters, she will go back to HyperCatcher dashboard, Accept (or not) the community chapters. -Because Castopod knows the private URL to the episode in the HyperCatcher dashboard, a link from the episode edit page in Castopod to the episode in HyperCatcher will be displayed. -And we think that this is pretty cool. +Because Castopod knows the private URL to the episode in the HyperCatcher dashboard, a link from the episode edit page in Castopod to the episode in HyperCatcher will be displayed. And we think that this is pretty cool. ## Technical Specification This API uses REST. From cd62014ab1f57b80dd775891d98d231b6ea3e0b3 Mon Sep 17 00:00:00 2001 From: Benjamin Bellamy Date: Thu, 11 Mar 2021 19:59:57 +0100 Subject: [PATCH 29/64] Update Chapters.md --- API/Chapters.md | 1 + 1 file changed, 1 insertion(+) diff --git a/API/Chapters.md b/API/Chapters.md index b66d357..d3623ce 100644 --- a/API/Chapters.md +++ b/API/Chapters.md @@ -10,6 +10,7 @@ The PodcastIndex namespace allows all podcast platforms (hosting, index, players These interactions are limited to communications through the RSS feeds. This document describes a new type of interaction between actors who use a same PodcastIndex namespace tag: [Podcast:Chapters](https://github.com/Podcastindex-org/podcast-namespace/blob/main/chapters/jsonChapters.md). It was initiated by [David Norman](https://podcastindex.social/@hypercatcher) for [Hypercatcher](https://hypercatcher.com/) and [Benjamin Bellamy](https://podcastindex.social/@benjaminbellamy) for [Castopod](https://castopod.org/) so that HyperCatcher and Castopod are able to interact together and create a seamless experience for podcasters. +We hope this will open a path to more collaborations between platforms. To help making things clear, let's take an example: A podcaster, we'll call her Eve, is hosting a podcast on Castopod. She is using HyperCatcher to manage the chapters. From e26221f2d24c11fa0a0ecf28395764bab680f61c Mon Sep 17 00:00:00 2001 From: Benjamin Bellamy Date: Thu, 11 Mar 2021 20:53:02 +0100 Subject: [PATCH 30/64] Update Chapters.md --- API/Chapters.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/API/Chapters.md b/API/Chapters.md index d3623ce..4aaa272 100644 --- a/API/Chapters.md +++ b/API/Chapters.md @@ -9,9 +9,11 @@ This version is a first draft. It will be updated. It may move somewhere else. The PodcastIndex namespace allows all podcast platforms (hosting, index, players…) to speak the same language and interact together. These interactions are limited to communications through the RSS feeds. This document describes a new type of interaction between actors who use a same PodcastIndex namespace tag: [Podcast:Chapters](https://github.com/Podcastindex-org/podcast-namespace/blob/main/chapters/jsonChapters.md). -It was initiated by [David Norman](https://podcastindex.social/@hypercatcher) for [Hypercatcher](https://hypercatcher.com/) and [Benjamin Bellamy](https://podcastindex.social/@benjaminbellamy) for [Castopod](https://castopod.org/) so that HyperCatcher and Castopod are able to interact together and create a seamless experience for podcasters. -We hope this will open a path to more collaborations between platforms. +It was initiated by [David Norman](https://podcastindex.social/@hypercatcher) for [Hypercatcher](https://hypercatcher.com/) and [Benjamin Bellamy](https://podcastindex.social/@benjaminbellamy) for [Castopod](https://castopod.org/) so that HyperCatcher and Castopod are able to interact together and create a seamless experience for podcasters. +We hope this will open a path to more collaborations between platforms which use the PodcastIndex namespace. + +## Example To help making things clear, let's take an example: A podcaster, we'll call her Eve, is hosting a podcast on Castopod. She is using HyperCatcher to manage the chapters. From 25e31e88bd1c7e1a9ff240d4c977cc41c86192fb Mon Sep 17 00:00:00 2001 From: Benjamin Bellamy Date: Thu, 11 Mar 2021 21:02:12 +0100 Subject: [PATCH 31/64] Update Chapters.md --- API/Chapters.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/API/Chapters.md b/API/Chapters.md index 4aaa272..704cbfc 100644 --- a/API/Chapters.md +++ b/API/Chapters.md @@ -80,3 +80,7 @@ The Authorization header is computed with something like this (pseudo-code): ``` authHeader = sha1(apiKey+apiSecret+unixTime) ``` + +Discussion here: +- https://github.com/Podcastindex-org/podcast-namespace/issues/209 +- https://podcastindex.social/web/statuses/105872943999299482 From 2debbc049184d8a1f2016e47817e5792153482ed Mon Sep 17 00:00:00 2001 From: Benjamin Bellamy Date: Thu, 11 Mar 2021 21:10:29 +0100 Subject: [PATCH 32/64] Update Chapters.md --- API/Chapters.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/API/Chapters.md b/API/Chapters.md index 704cbfc..f92c179 100644 --- a/API/Chapters.md +++ b/API/Chapters.md @@ -22,7 +22,7 @@ Whenever Eve wants to publish a new episode, she has to: - Go to her Castopod admin panel, save the episode, then publish it so that it is visible in the RSS feed. - Go to her HyperCatcher dashboard, click "Edit", click "Fetch Episodes" so that HyperCatcher gets this new episode. - Click on the newly fetched episode, copy the "Url for Json". -- Go back to Castopod admin panel, edit the episode, paste the previously copied "Url for Json" into the appropriate field, hoping that no platform had fetched the RSS in the meantime, before it was pasted. +- Go back to Castopod admin panel, edit the episode, paste the previously copied "Url for Json" into the appropriate field, hoping that no platform had fetched the RSS in the meantime, before the chapter Url was pasted. Later, Eve will wait for users to edit chapters, she will go back to HyperCatcher dashboard, Accept (or not) the community chapters. From d10390caa8bb76109d906e57be9cef088f27b4dd Mon Sep 17 00:00:00 2001 From: Benjamin Bellamy Date: Thu, 11 Mar 2021 21:12:00 +0100 Subject: [PATCH 33/64] Update Chapters.md --- API/Chapters.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/API/Chapters.md b/API/Chapters.md index f92c179..c5da558 100644 --- a/API/Chapters.md +++ b/API/Chapters.md @@ -28,7 +28,7 @@ Later, Eve will wait for users to edit chapters, she will go back to HyperCatche ### With the podcast:chapters API Whenever Eve wants to publish a new episode, she has to: -- Go to her Castopod admin panel, save the episode. (Castopod will automatically call the Chapter API at Hypercatcher, send the new episode and get from HyperCatcher the public "URL for Json" and the private URL to the episode in the HyperCatcher dashboard.) +- Go to her Castopod admin panel, save the episode. (Castopod will automatically call the Chapter API at Hypercatcher, send the new episode and get from HyperCatcher the public "URL for Json" and insert it automatically in the RSS feed, get the private URL to the episode in the HyperCatcher dashboard and display the link on Castopod Dashboard.) - That's it. Later, Eve will wait for users to edit chapters, she will go back to HyperCatcher dashboard, Accept (or not) the community chapters. From 4fed2d1526ffc04b5f9ec3bf4c4339ebf6a6a492 Mon Sep 17 00:00:00 2001 From: Benjamin Bellamy Date: Thu, 11 Mar 2021 21:12:33 +0100 Subject: [PATCH 34/64] Update Chapters.md --- API/Chapters.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/API/Chapters.md b/API/Chapters.md index c5da558..70f90c0 100644 --- a/API/Chapters.md +++ b/API/Chapters.md @@ -28,7 +28,7 @@ Later, Eve will wait for users to edit chapters, she will go back to HyperCatche ### With the podcast:chapters API Whenever Eve wants to publish a new episode, she has to: -- Go to her Castopod admin panel, save the episode. (Castopod will automatically call the Chapter API at Hypercatcher, send the new episode and get from HyperCatcher the public "URL for Json" and insert it automatically in the RSS feed, get the private URL to the episode in the HyperCatcher dashboard and display the link on Castopod Dashboard.) +- Go to her Castopod admin panel, save the episode. (Castopod will automatically call the podcast:chapters API at Hypercatcher, send the new episode and get from HyperCatcher the public "URL for Json" and insert it automatically in the RSS feed, get the private URL to the episode in the HyperCatcher dashboard and display the link on Castopod Dashboard.) - That's it. Later, Eve will wait for users to edit chapters, she will go back to HyperCatcher dashboard, Accept (or not) the community chapters. From ba267e6f07862fa1167bba53e4ef7ce9a35c1728 Mon Sep 17 00:00:00 2001 From: Benjamin Bellamy Date: Thu, 11 Mar 2021 21:14:22 +0100 Subject: [PATCH 35/64] Update Chapters.md --- API/Chapters.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/API/Chapters.md b/API/Chapters.md index 70f90c0..ec87e81 100644 --- a/API/Chapters.md +++ b/API/Chapters.md @@ -47,7 +47,7 @@ This API has only one endpoint (so far), hosted at the Chapters Provider. #### AddNewEpisode - `POST /AddNewEpisode` This adds a new Episode to the chapter provider. -The endpoint URL may be defined by the chapter provider. The Podcast Hosting service must provide a way to specify this endpoint URL as a parameter. +The endpoint URL may be defined by the chapter provider. The Podcast Hosting service must provide a way to specify this endpoint URL on its configuration panel. Parameters: - `rss`: RSS feed URL From 4ca303772454b7546f33e8f73b096a0fcb99dff2 Mon Sep 17 00:00:00 2001 From: Benjamin Bellamy Date: Thu, 11 Mar 2021 21:17:13 +0100 Subject: [PATCH 36/64] Update Chapters.md --- API/Chapters.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/API/Chapters.md b/API/Chapters.md index ec87e81..1c953bf 100644 --- a/API/Chapters.md +++ b/API/Chapters.md @@ -11,7 +11,8 @@ These interactions are limited to communications through the RSS feeds. This document describes a new type of interaction between actors who use a same PodcastIndex namespace tag: [Podcast:Chapters](https://github.com/Podcastindex-org/podcast-namespace/blob/main/chapters/jsonChapters.md). It was initiated by [David Norman](https://podcastindex.social/@hypercatcher) for [Hypercatcher](https://hypercatcher.com/) and [Benjamin Bellamy](https://podcastindex.social/@benjaminbellamy) for [Castopod](https://castopod.org/) so that HyperCatcher and Castopod are able to interact together and create a seamless experience for podcasters. -We hope this will open a path to more collaborations between platforms which use the PodcastIndex namespace. +We hope this will open a path to more collaborations between platforms which use the PodcastIndex namespace. +(The podcast:transcript API is probably the next to specify…) ## Example To help making things clear, let's take an example: From 14c9812150af381e1290dc446e0dee7a4762aadd Mon Sep 17 00:00:00 2001 From: Benjamin Bellamy Date: Thu, 11 Mar 2021 21:32:34 +0100 Subject: [PATCH 37/64] Update Chapters.md --- API/Chapters.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/API/Chapters.md b/API/Chapters.md index 1c953bf..2b7a115 100644 --- a/API/Chapters.md +++ b/API/Chapters.md @@ -12,7 +12,7 @@ This document describes a new type of interaction between actors who use a same It was initiated by [David Norman](https://podcastindex.social/@hypercatcher) for [Hypercatcher](https://hypercatcher.com/) and [Benjamin Bellamy](https://podcastindex.social/@benjaminbellamy) for [Castopod](https://castopod.org/) so that HyperCatcher and Castopod are able to interact together and create a seamless experience for podcasters. We hope this will open a path to more collaborations between platforms which use the PodcastIndex namespace. -(The podcast:transcript API is probably the next to specify…) +(The podcast:transcript API is probably the next to be specified…) ## Example To help making things clear, let's take an example: From 8971b60854a7b73827e49765d6eb47875e9bc4ce Mon Sep 17 00:00:00 2001 From: Benjamin Bellamy Date: Fri, 12 Mar 2021 09:22:21 +0100 Subject: [PATCH 38/64] Update Chapters.md --- API/Chapters.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/API/Chapters.md b/API/Chapters.md index 2b7a115..de4d287 100644 --- a/API/Chapters.md +++ b/API/Chapters.md @@ -14,6 +14,10 @@ It was initiated by [David Norman](https://podcastindex.social/@hypercatcher) fo We hope this will open a path to more collaborations between platforms which use the PodcastIndex namespace. (The podcast:transcript API is probably the next to be specified…) +Note that the purpose of this specification is **not** to define “**how**” to manage the chapter service but “**who**” manages the chapter service, so that **any** podcaster is able to choose **any** provider among the ones able to provide the chapter service. +Then that provider is free to use IPFS, centralised https or whatever makes sense to him — and to his users. +This spec is **not** an extension of the [Podcast:Chapters](https://github.com/Podcastindex-org/podcast-namespace/blob/main/chapters/jsonChapters.md) tag, it sits next to it. + ## Example To help making things clear, let's take an example: A podcaster, we'll call her Eve, is hosting a podcast on Castopod. She is using HyperCatcher to manage the chapters. From 2533338601c51156de22cfc3d0a4aecafe6688c5 Mon Sep 17 00:00:00 2001 From: Dave Jones Date: Wed, 17 Mar 2021 15:11:29 -0500 Subject: [PATCH 39/64] fix content-type --- chapters/jsonChapters.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chapters/jsonChapters.md b/chapters/jsonChapters.md index 4711191..bc560fb 100644 --- a/chapters/jsonChapters.md +++ b/chapters/jsonChapters.md @@ -4,7 +4,7 @@ This is the initial spec for a json chapters format that can be referenced in an the "podcast" namespace. This file can reside on any publicly accessible url. See the podcast namespace documentation for details on the format of the tag. -This type of file should be served with a Content-type of 'application/audio-chapters+json'. Chapter order is assumed to be +This type of file should be served with a Content-type of 'application/json+chapters'. Chapter order is assumed to be in ascending order based on the `startTime`.
From 793c79298281fd8f96870c759d77b39c8a4c5cf5 Mon Sep 17 00:00:00 2001 From: Dave Jones Date: Wed, 17 Mar 2021 15:14:23 -0500 Subject: [PATCH 40/64] add a directory for proposals documents --- LICENSE | 121 ------------------ {API => proposal-docs/API}/Chapters.md | 0 {license => proposal-docs/license}/license.md | 0 3 files changed, 121 deletions(-) delete mode 100644 LICENSE rename {API => proposal-docs/API}/Chapters.md (100%) rename {license => proposal-docs/license}/license.md (100%) diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 0e259d4..0000000 --- a/LICENSE +++ /dev/null @@ -1,121 +0,0 @@ -Creative Commons Legal Code - -CC0 1.0 Universal - - CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE - LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN - ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS - INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES - REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS - PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM - THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED - HEREUNDER. - -Statement of Purpose - -The laws of most jurisdictions throughout the world automatically confer -exclusive Copyright and Related Rights (defined below) upon the creator -and subsequent owner(s) (each and all, an "owner") of an original work of -authorship and/or a database (each, a "Work"). - -Certain owners wish to permanently relinquish those rights to a Work for -the purpose of contributing to a commons of creative, cultural and -scientific works ("Commons") that the public can reliably and without fear -of later claims of infringement build upon, modify, incorporate in other -works, reuse and redistribute as freely as possible in any form whatsoever -and for any purposes, including without limitation commercial purposes. -These owners may contribute to the Commons to promote the ideal of a free -culture and the further production of creative, cultural and scientific -works, or to gain reputation or greater distribution for their Work in -part through the use and efforts of others. - -For these and/or other purposes and motivations, and without any -expectation of additional consideration or compensation, the person -associating CC0 with a Work (the "Affirmer"), to the extent that he or she -is an owner of Copyright and Related Rights in the Work, voluntarily -elects to apply CC0 to the Work and publicly distribute the Work under its -terms, with knowledge of his or her Copyright and Related Rights in the -Work and the meaning and intended legal effect of CC0 on those rights. - -1. Copyright and Related Rights. A Work made available under CC0 may be -protected by copyright and related or neighboring rights ("Copyright and -Related Rights"). Copyright and Related Rights include, but are not -limited to, the following: - - i. the right to reproduce, adapt, distribute, perform, display, - communicate, and translate a Work; - ii. moral rights retained by the original author(s) and/or performer(s); -iii. publicity and privacy rights pertaining to a person's image or - likeness depicted in a Work; - iv. rights protecting against unfair competition in regards to a Work, - subject to the limitations in paragraph 4(a), below; - v. rights protecting the extraction, dissemination, use and reuse of data - in a Work; - vi. database rights (such as those arising under Directive 96/9/EC of the - European Parliament and of the Council of 11 March 1996 on the legal - protection of databases, and under any national implementation - thereof, including any amended or successor version of such - directive); and -vii. other similar, equivalent or corresponding rights throughout the - world based on applicable law or treaty, and any national - implementations thereof. - -2. Waiver. To the greatest extent permitted by, but not in contravention -of, applicable law, Affirmer hereby overtly, fully, permanently, -irrevocably and unconditionally waives, abandons, and surrenders all of -Affirmer's Copyright and Related Rights and associated claims and causes -of action, whether now known or unknown (including existing as well as -future claims and causes of action), in the Work (i) in all territories -worldwide, (ii) for the maximum duration provided by applicable law or -treaty (including future time extensions), (iii) in any current or future -medium and for any number of copies, and (iv) for any purpose whatsoever, -including without limitation commercial, advertising or promotional -purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each -member of the public at large and to the detriment of Affirmer's heirs and -successors, fully intending that such Waiver shall not be subject to -revocation, rescission, cancellation, termination, or any other legal or -equitable action to disrupt the quiet enjoyment of the Work by the public -as contemplated by Affirmer's express Statement of Purpose. - -3. Public License Fallback. Should any part of the Waiver for any reason -be judged legally invalid or ineffective under applicable law, then the -Waiver shall be preserved to the maximum extent permitted taking into -account Affirmer's express Statement of Purpose. In addition, to the -extent the Waiver is so judged Affirmer hereby grants to each affected -person a royalty-free, non transferable, non sublicensable, non exclusive, -irrevocable and unconditional license to exercise Affirmer's Copyright and -Related Rights in the Work (i) in all territories worldwide, (ii) for the -maximum duration provided by applicable law or treaty (including future -time extensions), (iii) in any current or future medium and for any number -of copies, and (iv) for any purpose whatsoever, including without -limitation commercial, advertising or promotional purposes (the -"License"). The License shall be deemed effective as of the date CC0 was -applied by Affirmer to the Work. Should any part of the License for any -reason be judged legally invalid or ineffective under applicable law, such -partial invalidity or ineffectiveness shall not invalidate the remainder -of the License, and in such case Affirmer hereby affirms that he or she -will not (i) exercise any of his or her remaining Copyright and Related -Rights in the Work or (ii) assert any associated claims and causes of -action with respect to the Work, in either case contrary to Affirmer's -express Statement of Purpose. - -4. Limitations and Disclaimers. - - a. No trademark or patent rights held by Affirmer are waived, abandoned, - surrendered, licensed or otherwise affected by this document. - b. Affirmer offers the Work as-is and makes no representations or - warranties of any kind concerning the Work, express, implied, - statutory or otherwise, including without limitation warranties of - title, merchantability, fitness for a particular purpose, non - infringement, or the absence of latent or other defects, accuracy, or - the present or absence of errors, whether or not discoverable, all to - the greatest extent permissible under applicable law. - c. Affirmer disclaims responsibility for clearing rights of other persons - that may apply to the Work or any use thereof, including without - limitation any person's Copyright and Related Rights in the Work. - Further, Affirmer disclaims responsibility for obtaining any necessary - consents, permissions or other rights required for any use of the - Work. - d. Affirmer understands and acknowledges that Creative Commons is not a - party to this document and has no duty or obligation with respect to - this CC0 or use of the Work. diff --git a/API/Chapters.md b/proposal-docs/API/Chapters.md similarity index 100% rename from API/Chapters.md rename to proposal-docs/API/Chapters.md diff --git a/license/license.md b/proposal-docs/license/license.md similarity index 100% rename from license/license.md rename to proposal-docs/license/license.md From 05602f7bc3c06888421141da008a45b8cfd5250e Mon Sep 17 00:00:00 2001 From: Guilherme Dellagustin Date: Wed, 17 Mar 2021 22:24:00 +0100 Subject: [PATCH 41/64] Update podcasting2.0.md Added link to podStation's website. --- podcasting2.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/podcasting2.0.md b/podcasting2.0.md index 4a4fef5..5426ea0 100644 --- a/podcasting2.0.md +++ b/podcasting2.0.md @@ -78,7 +78,7 @@ Web-based podcast apps, PWA's (Progressive Web Apps) and Browser Extension based The final step is monetizing your content with cryptocurrency so your listeners can support you directly with no middle-men. This allows your content to be truly free from the pressures of advertising. Advertising serves a necessary role in any free market, but it does come with a cost. That cost is censorship - whether it's direct censorship by the advertisers themselves or self-censorship as you restrict your speech as to not offend the advertisers. -Because of these issues, we've created a way to receive cryptocurrency payments directly from your listeners to you using the experimental `` tag in your podcast feed. Because it is experimental, it is not currently supported by any major podcast hosting companies. But, if you are so inclined, you can start using it in your feed today so that your podcast will show up on apps that support it like [Sphinx.chat](https://sphinx.chat) and [podStation](). +Because of these issues, we've created a way to receive cryptocurrency payments directly from your listeners to you using the experimental `` tag in your podcast feed. Because it is experimental, it is not currently supported by any major podcast hosting companies. But, if you are so inclined, you can start using it in your feed today so that your podcast will show up on apps that support it like [Sphinx.chat](https://sphinx.chat) and [podStation](https://podstation.github.io). If you can't add the `` tag to your feed manually, we also have created [a site](https://podcasterwallet.com) that can help you put a value tag directly into the Podcast Index database for your feed. Any apps that use the Podcast Index will see your value tag and be able to stream micropayments to you. From 6db29c2420007dacb80be7f94ce2b24fbf1ddc79 Mon Sep 17 00:00:00 2001 From: David Norman Date: Sun, 21 Mar 2021 20:58:48 -0700 Subject: [PATCH 42/64] HC supports the funding tag Supported this for a while now, but finally adding this update to the docs to make it official :) --- docs/element-support.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/element-support.md b/docs/element-support.md index 7211e0b..19f8492 100644 --- a/docs/element-support.md +++ b/docs/element-support.md @@ -35,6 +35,7 @@ For elements that are included in the official [DTD](https://github.com/Podcasti 8. [Castopod](https://podlibre.org/publish-your-podcast-on-all-platforms/#podcastindex) 9. [LehmanCreations Podcast Namespace Wordpress Plugin](https://github.com/Lehmancreations/Podcast-Namespace-Wordpress-Plugin) 10. [PodcastGuru](https://twitter.com/podcastguru_app/status/1351911108886589448) +11. [Hypercatcher](https://hypercatcher.com) ## Chapters `` 1. [Podcast Chapters](https://chaptersapp.com/faq/jsonExport.html) From 758d1df80381ac4a2c93a49cb4504285e7016e79 Mon Sep 17 00:00:00 2001 From: Dave Jones Date: Tue, 30 Mar 2021 15:17:54 -0500 Subject: [PATCH 43/64] add WebVTT example to XMLNS file - #217 --- docs/1.0.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/1.0.md b/docs/1.0.md index 1f46628..e4a2894 100644 --- a/docs/1.0.md +++ b/docs/1.0.md @@ -42,6 +42,8 @@ Multiple `` +`` + Detailed file format information and example files are [here](../transcripts/transcripts.md).

From 93a5b9ebbff8192083a460f3b287c11217aa8702 Mon Sep 17 00:00:00 2001 From: Dave Jones Date: Tue, 30 Mar 2021 15:40:36 -0500 Subject: [PATCH 44/64] 'fee' explanation --- value/value.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/value/value.md b/value/value.md index 3d2d680..537b546 100644 --- a/value/value.md +++ b/value/value.md @@ -141,6 +141,7 @@ There is no limit on how many `valueRecipient` elements can be present in a give customKey="[optional key to pass(mixed)]" customValue="[optional value to pass(mixed)]" split="[share count(int)]" + fee=[true|false] /> ``` @@ -154,6 +155,7 @@ There is no limit on how many `valueRecipient` elements can be present in a give - `type` (required) A slug that represents the type of receiving address that will receive the payment. - `address` (required) This denotes the receiving address of the payee. - `split` (required) The number of shares of the payment this recipient will receive. + - `fee` (optional) If this attribute is not specified, it is assumed to be false.
@@ -174,6 +176,10 @@ The `split` attribute denotes an amount of "shares" of the total payment that th When a single `` is present, it should be assumed that the `split` for that recipient is 100%, and the "split" should be ignored. When multiple recipients are present, a share calculation (see below) should be made to determine how much to send to each recipient's address. +The `fee` attribute tells apps whether this split should be treated as a "fee", or a normal split. If this attribute is true, then this split should be calculated +as a fee, meaning it's percentage (as calculated from the shares) should be taken off the top of the entire transaction amount. This is the preferred way for service +providers such as apps, hosting companies, API's and third-party value add providers to add their fee to a value block. +

@@ -286,7 +292,7 @@ the `customKey` and `customValue` can be utilized as follows: This is a live, working example of a Lightning keysend value block in production. It designates four recipients for payment - two podcast hosts at 49 and 46 shares respectively, a producer working on per episode chapter creation who gets a 5 share, and -a single share (effectively 1%) donation to Podcastindex.org. +a single share (effectively 1%) fee to the Podcastindex.org API. ``` @@ -313,6 +319,7 @@ a single share (effectively 1%) donation to Podcastindex.org. type="node" address="03ae9f91a0cb8ff43840e3c322c4c61f019d8c1c3cea15a25cfc425ac605e61a4a" split="1" + fee="true" /> ``` From 4c6a8249f24cf60d302ce35327f05826124bea7b Mon Sep 17 00:00:00 2001 From: Alecks Gates Date: Tue, 30 Mar 2021 20:44:51 -0500 Subject: [PATCH 45/64] Initial WebVTT documentation --- transcripts/example.vtt | 887 +++++++++++++++++++++++++++++++++++++ transcripts/transcripts.md | 58 +++ 2 files changed, 945 insertions(+) create mode 100644 transcripts/example.vtt diff --git a/transcripts/example.vtt b/transcripts/example.vtt new file mode 100644 index 0000000..8955909 --- /dev/null +++ b/transcripts/example.vtt @@ -0,0 +1,887 @@ +WEBVTT + +00:00:00.179 --> 00:00:02.399 +Travis: When you first get +started in podcasting, it's + +00:00:02.400 --> 00:00:04.799 +almost guaranteed that you're +going to make a handful of rookie + +00:00:04.801 --> 00:00:07.980 +mistakes, but that doesn't mean +that you have to make all the + +00:00:07.980 --> 00:00:13.109 +mistakes. So in this special +bonus podcast episode, we went + +00:00:13.111 --> 00:00:16.109 +back through the archives of the +podcasting Q and a show, and five + +00:00:16.111 --> 00:00:19.500 +minute Mondays to pull together +the 10 things we wish we knew + +00:00:19.620 --> 00:00:22.289 +before starting our very first +podcast . Now, as you're + +00:00:22.291 --> 00:00:25.350 +listening to this episode, you'll +hear some sound effects pop in + +00:00:25.350 --> 00:00:27.750 +from time to time. And that's +simply because we pulled these + +00:00:27.751 --> 00:00:31.109 +clips from our YouTube channel, +where we add animations and + +00:00:31.111 --> 00:00:34.200 +different sequences to help +visually communicate the things + +00:00:34.201 --> 00:00:36.899 +we're discussing. So when those +things pop up, that's what that + +00:00:36.901 --> 00:00:40.590 +is. If you are wondering, but +they're not overly distracting. + +00:00:40.591 --> 00:00:43.320 +So you'll still be able to get +the gist of what we're talking + +00:00:43.320 --> 00:00:45.840 +about and hopefully be able to +take one of these things and + +00:00:45.841 --> 00:00:48.990 +implement it. Moving forward for +your podcast to help you reach + +00:00:48.990 --> 00:00:50.340 +your goals, that much faster + +00:00:53.030 --> 00:00:57.770 +Sarah: Creating good audio is +really key to keeping your + +00:00:57.771 --> 00:01:01.579 +podcast listeners engaged because +no matter how good the content + +00:01:01.581 --> 00:01:04.939 +is, if your audio quality isn't +good. It's unfortunately just + +00:01:04.941 --> 00:01:08.359 +going to turn them away. I know +what you're thinking is you + +00:01:08.361 --> 00:01:11.359 +probably think you have to spend +thousands of dollars on equipment + +00:01:11.361 --> 00:01:14.090 +or rent a podcasting studio just +to make sure everything sounds + +00:01:14.090 --> 00:01:17.930 +great. And I'm here to tell you +that's not true at all. I have + +00:01:17.930 --> 00:01:22.400 +created some pretty good audio +from mic's that costs less than a + +00:01:22.400 --> 00:01:25.129 +hundred dollars. And I have also +recorded in places like in my + +00:01:25.131 --> 00:01:29.239 +home office, even in the closet. +Yes, no. One's going to see you + +00:01:29.240 --> 00:01:32.599 +unless you're recording video +like this one , um , wherever you + +00:01:32.600 --> 00:01:36.170 +can just to muffle the sound is +going to be really make that + +00:01:36.171 --> 00:01:40.189 +difference between air quality +and good quality. + +00:01:42.739 --> 00:01:44.840 +Travis: Now, when you're creating +your podcast intro, there's a + +00:01:44.840 --> 00:01:47.750 +couple of things that you want to +make sure that you cover a couple + +00:01:47.751 --> 00:01:50.299 +of things that you want to make +sure that you say the first one + +00:01:50.301 --> 00:01:54.950 +is who you are specifically, +like, what is your name? So you + +00:01:54.950 --> 00:01:59.299 +can start. Your podcast is, Hey, +welcome to my podcast. My name is + +00:01:59.329 --> 00:02:02.780 +Travis, Albritton, and then your +credentials. Why should someone + +00:02:02.781 --> 00:02:06.019 +listen to you? So if you have +experience in whatever you're + +00:02:06.021 --> 00:02:09.110 +talking about, you want to make +sure that you mentioned that if + +00:02:09.110 --> 00:02:11.900 +you went to school for something, +if you have a job doing + +00:02:11.901 --> 00:02:14.569 +something, if you have clients +that you work with, you want to + +00:02:14.570 --> 00:02:19.219 +mention the things that lend +credence to your advice. This is + +00:02:19.221 --> 00:02:23.419 +a specifically important. If your +podcast is centered around you + +00:02:23.420 --> 00:02:25.849 +and your expertise, the next +thing that you want to make sure + +00:02:25.850 --> 00:02:30.229 +to include in your podcast intro +is what your podcast is about in + +00:02:30.289 --> 00:02:33.979 +this podcast. For instance, +podcasting una. At the very + +00:02:33.980 --> 00:02:37.069 +beginning, we talk about, well, +one, what is it that we're going + +00:02:37.070 --> 00:02:40.969 +to discuss? And then our opening +tagline is that we're giving you + +00:02:40.971 --> 00:02:44.659 +tips and strategies to launch, +grow and monetize your podcast. + +00:02:44.840 --> 00:02:49.520 +So if you're a podcaster that +speaks directly to you because + +00:02:49.580 --> 00:02:52.189 +you're listening to this, or +you're watching this because + +00:02:52.191 --> 00:02:54.590 +you're looking for those tips and +you want to think through, for + +00:02:54.591 --> 00:02:58.189 +your podcast in a similar way, +what is it that people are + +00:02:58.219 --> 00:03:01.389 +looking for? And then how do you +make sure that you address that + +00:03:01.390 --> 00:03:04.180 +in your intro? So they're going +to continue to listen, not just + +00:03:04.181 --> 00:03:08.139 +to the one episode, but to every +single episode, it'll actually + +00:03:08.140 --> 00:03:11.590 +turn into a subscriber that then +goes on to download everything + +00:03:11.591 --> 00:03:13.930 +that you have. And then the third +thing that you want to make sure + +00:03:13.931 --> 00:03:18.370 +you mentioned in your podcast +intro is why someone should care. + +00:03:18.490 --> 00:03:22.479 +Why should anyone care that your +podcast exists? Are they going to + +00:03:22.480 --> 00:03:25.060 +lose weight? Are they going to be +happier? Are the relationships + +00:03:25.061 --> 00:03:27.610 +going to get better? Are they +going to make money, save money? + +00:03:27.969 --> 00:03:32.289 +What is it that you were offering +to them? What is the end result + +00:03:32.290 --> 00:03:34.870 +look like for them, if they not +only listened to your podcast, + +00:03:35.110 --> 00:03:36.939 +but then also put it into +practice. + +00:03:39.360 --> 00:03:42.509 +Gilon: So is there an ideal +podcast length, short answer? + +00:03:42.689 --> 00:03:46.979 +Nope. Joe Rogan has some episodes +that are three hours long, but + +00:03:46.980 --> 00:03:49.800 +then there are other podcasts +that do just fine and are very + +00:03:49.800 --> 00:03:53.310 +successful at 10 minutes or less. +The reality is we love podcasts + +00:03:53.340 --> 00:03:56.400 +because of the content that +they're presenting. And so if it + +00:03:56.401 --> 00:04:00.000 +takes you 10 minutes to get out +great glorious content, amazing. + +00:04:00.270 --> 00:04:03.960 +If you have some podcast episodes +that are on the longer end, maybe + +00:04:03.961 --> 00:04:07.590 +up to three hours, that's okay. +Too. People come to the podcast + +00:04:07.591 --> 00:04:11.310 +to get the content, to get what +you say weekly. And to be honest, + +00:04:11.311 --> 00:04:13.379 +there are times when we need just +a quick little something to + +00:04:13.381 --> 00:04:15.599 +listen to. And there are times +when we have a lot of space in + +00:04:15.600 --> 00:04:18.300 +our day to listen to something. +It really just depends on what + +00:04:18.300 --> 00:04:20.579 +you're trying to accomplish and +what you're trying to get across. + +00:04:23.189 --> 00:04:26.939 +Travis: Be a guest on other +people's podcasts, but not just + +00:04:27.149 --> 00:04:31.319 +anyone's podcast podcasts that +have a similar target audience + +00:04:31.649 --> 00:04:34.949 +that you do. So let's say for +example, that you talk about + +00:04:35.399 --> 00:04:38.790 +online marketing. For instance, +you want to find other podcasts + +00:04:38.790 --> 00:04:40.800 +in your space where they talk +about online marketing, where + +00:04:40.800 --> 00:04:43.589 +they talk about how to grow your +business, where they talk about + +00:04:43.591 --> 00:04:47.519 +the entrepreneur life. Because +those are the groups of people + +00:04:47.970 --> 00:04:51.180 +that have already self selected +and said, Hey, I want to hear + +00:04:51.180 --> 00:04:54.750 +this kind of podcast content. If +you can pitch yourself as a guest + +00:04:54.750 --> 00:04:59.430 +to be on those podcasts, then +they will immediately trust you + +00:04:59.699 --> 00:05:02.639 +because they already trust the +podcast host of the podcast + +00:05:02.730 --> 00:05:05.819 +you're guesting on because they +listen to it every week. And then + +00:05:05.821 --> 00:05:08.519 +when you're able to demonstrate +your expertise and say at the end + +00:05:08.521 --> 00:05:11.759 +of the episode, Hey, by the way, +I also have a podcast where I + +00:05:11.761 --> 00:05:15.149 +talk about X, Y, and Z. You're +going to get a good number of + +00:05:15.151 --> 00:05:19.500 +people from that podcast to come +over and subscribe to yours. + +00:05:22.139 --> 00:05:24.240 +Gilon: Interviewing noteworthy +guests that have a significant + +00:05:24.240 --> 00:05:27.000 +audience is actually one of our +favorite marketing strategies for + +00:05:27.000 --> 00:05:31.470 +podcasters. The only thing is the +guest has to promote the episode. + +00:05:31.529 --> 00:05:33.959 +Ideally, you want to make it as +easy as possible for them to + +00:05:33.961 --> 00:05:37.050 +promote the episode. So some +things that you can do are + +00:05:37.170 --> 00:05:40.319 +creating an audio gram or a +social media graphic for + +00:05:40.321 --> 00:05:43.290 +Facebook, for Instagram, whatever +social media platform you promote + +00:05:43.290 --> 00:05:46.350 +on. That's a really easy way to +get them to share that episode + +00:05:46.350 --> 00:05:48.779 +when you have that created and +it's made right there for them + +00:05:48.781 --> 00:05:51.480 +and you give it to them. The +second thing that you can do is + +00:05:51.480 --> 00:05:54.389 +create a blurb for them to +include in their newsletter about + +00:05:54.391 --> 00:05:57.740 +the episode. Hey, this is an +episode about X, Y, and you send + +00:05:57.740 --> 00:05:59.930 +that over to them. They can push +that right out to their people + +00:05:59.959 --> 00:06:03.290 +via email. The other thing that +you can do is provide a direct + +00:06:03.290 --> 00:06:06.620 +link where people can listen to +the episode. The idea is that it + +00:06:06.620 --> 00:06:09.920 +should be as easy as copying and +pasting and pushing out to their + +00:06:09.920 --> 00:06:13.040 +people. You want to have no +reason for them not to share the + +00:06:13.040 --> 00:06:14.029 +episode and promote it. + +00:06:16.629 --> 00:06:21.310 +Travis: Use templates, make it +your goal in life as a podcaster, + +00:06:21.519 --> 00:06:26.110 +to never duplicate your work, +whether it's your outlines, + +00:06:26.259 --> 00:06:29.079 +whether it's your audio editing +software, your projects that you + +00:06:29.081 --> 00:06:32.920 +work in, your emails that you +send to your guests, anything + +00:06:32.920 --> 00:06:37.000 +that you do consistently spend +some time really make it + +00:06:37.120 --> 00:06:40.329 +unbreakable, make sure that it's +exactly the way that you want it. + +00:06:40.930 --> 00:06:44.620 +And then don't go back and redo +that actually leverage that work + +00:06:44.620 --> 00:06:48.759 +you've done in the past to speed +up future episodes. So let's say + +00:06:48.761 --> 00:06:51.069 +for instance, that you have a +guest that you're bringing onto + +00:06:51.071 --> 00:06:54.970 +your show, rather than writing a +custom email from scratch, send + +00:06:54.971 --> 00:06:57.939 +them the one that you sent to +your previous guest, but then + +00:06:57.970 --> 00:07:00.279 +change out the first name to +them. It looks like a brand new + +00:07:00.281 --> 00:07:03.550 +email because they haven't seen +that email before. And you know + +00:07:03.550 --> 00:07:06.250 +that it has all the details that +they need to know to make sure + +00:07:06.250 --> 00:07:09.879 +they're fully prepared to come on +your episode. Once you finish + +00:07:09.970 --> 00:07:12.250 +your recording and you bring your +interview into your audio editing + +00:07:12.250 --> 00:07:15.009 +software, you shouldn't be +creating a new project from + +00:07:15.011 --> 00:07:19.360 +scratch. You should be opening up +a previous episode, saving it as + +00:07:19.360 --> 00:07:23.470 +a duplicate and then rewriting +over the pieces that need to + +00:07:23.471 --> 00:07:26.319 +change leaving, intact , your +intro, your outro, and all of + +00:07:26.321 --> 00:07:30.189 +your audio preferences. And then +when you're creating your show + +00:07:30.190 --> 00:07:33.819 +notes, they should be copy and +paste from your previous episode, + +00:07:33.821 --> 00:07:36.370 +show notes, and then filling out +the fields and changing + +00:07:36.370 --> 00:07:39.189 +everything. That's different just +by using templates, just by + +00:07:39.190 --> 00:07:43.060 +leveraging your previous work. +And previous efforts for future + +00:07:43.060 --> 00:07:49.089 +episodes is going to save you a +ton of time. These show notes is + +00:07:49.091 --> 00:07:52.899 +the section of your podcast +episode that allows you to engage + +00:07:52.959 --> 00:07:55.480 +for your listeners, provide some +next steps for those that are + +00:07:55.480 --> 00:07:58.180 +ready to take action on what they +just listened to. And also + +00:07:58.180 --> 00:08:02.500 +persuade someone new to listen to +the episode. The number one best + +00:08:02.500 --> 00:08:07.269 +practice is to use formatting. +All right , a majority of podcast + +00:08:07.271 --> 00:08:11.769 +players like Apple podcasts, +Google podcasts , uh , overcast, + +00:08:12.009 --> 00:08:15.490 +they support HTML formatting. +That means you could put + +00:08:15.490 --> 00:08:19.449 +paragraph breaks, bullet points +in bed links, all the stuff that + +00:08:19.451 --> 00:08:23.680 +you need to do to make your show +notes look nice because when your + +00:08:23.680 --> 00:08:26.350 +show notes are properly +formatted, when it's easy to + +00:08:26.350 --> 00:08:30.220 +navigate within your episode +description, it makes it easier + +00:08:30.221 --> 00:08:32.769 +for your listeners to find what +they're looking for. Right? + +00:08:32.770 --> 00:08:35.139 +Instead of combing through +several paragraphs of + +00:08:35.140 --> 00:08:37.840 +information, they can just zip +down to the list of links that + +00:08:37.841 --> 00:08:41.080 +you mentioned and click on the +one that they're looking for. + +00:08:41.320 --> 00:08:44.169 +Because remember when someone +goes to your show notes, your + +00:08:44.171 --> 00:08:47.470 +episode description, they're +going for a number of reasons. + +00:08:47.710 --> 00:08:51.129 +First reason they heard you +mentioned something in the + +00:08:51.130 --> 00:08:53.590 +podcast and they want to find the +link. They want to learn more. + +00:08:53.799 --> 00:08:57.120 +They want to buy that product, +that you, they are looking for a + +00:08:57.120 --> 00:08:59.730 +particular piece of information. +And they're going to take action + +00:08:59.730 --> 00:09:02.190 +on that. The other reason +somebody goes through your show + +00:09:02.191 --> 00:09:05.519 +notes or your episode description +is they're not sure that they + +00:09:05.520 --> 00:09:09.120 +want to devote the 30 minutes, 40 +minutes hour to listening to the + +00:09:09.120 --> 00:09:12.539 +full episode. And so they see the +title is interesting. They're + +00:09:12.541 --> 00:09:15.960 +curious. They want to learn more +and they go to your show notes + +00:09:16.549 --> 00:09:19.169 +too , to see some amplifying +information to see is this + +00:09:19.171 --> 00:09:20.519 +something that I really want to +listen to? + +00:09:22.879 --> 00:09:26.570 +Sarah: So let's talk about +whether you actually need a + +00:09:26.600 --> 00:09:32.059 +custom podcast website now for +most pod-casters the answer is + +00:09:32.061 --> 00:09:36.950 +actually no, because if your +podcast has an RSS feed with a + +00:09:36.951 --> 00:09:42.799 +podcast host like Buzzsprout +chances are you already have a + +00:09:42.801 --> 00:09:46.879 +podcast website with Buzzsprouts +website, you get a homepage with + +00:09:46.880 --> 00:09:50.690 +links to obviously all of your +episodes that your listeners can + +00:09:50.691 --> 00:09:54.440 +listen to. You can also direct +them to different podcast + +00:09:54.860 --> 00:09:57.350 +directories like Apple podcast, +Stitcher and Spotify. If they + +00:09:57.350 --> 00:10:01.429 +want to go listen and subscribe +there, and you can also use your + +00:10:01.460 --> 00:10:05.330 +own domain names . So you can +look and feel like your own + +00:10:05.960 --> 00:10:08.960 +podcast website . You're just +looking for a place for people to + +00:10:08.961 --> 00:10:12.110 +listen to your episodes. Changes +are you don't need to spend that + +00:10:12.110 --> 00:10:14.690 +money to build your own custom +website. + +00:10:17.330 --> 00:10:19.820 +Gilon: You may think that the +best strategy is to put your + +00:10:19.821 --> 00:10:23.450 +entire episode up on a social +media platform, but actually you + +00:10:23.451 --> 00:10:26.389 +want to create teaser content and +teaser content gives them a + +00:10:26.390 --> 00:10:28.580 +little sound bite , just a little +snippet that what's their + +00:10:28.581 --> 00:10:31.730 +appetites want to go listen to +the rest of the episode, wherever + +00:10:31.730 --> 00:10:35.269 +they listen on Apple podcasts or +Spotify, or what have you. So + +00:10:35.270 --> 00:10:37.940 +we're going to talk about what +three things are included in + +00:10:37.941 --> 00:10:40.970 +every good social media post. The +first thing that you need is a + +00:10:40.971 --> 00:10:44.000 +visual element, right? So people +are scrolling. They're reading, + +00:10:44.000 --> 00:10:47.120 +whatever. If you post a picture +that causes them to stop. And the + +00:10:47.360 --> 00:10:49.580 +idea is that they stop , they +listen, they read, they engage. + +00:10:49.759 --> 00:10:52.279 +And the picture of visual element +helps them do that. So this can + +00:10:52.280 --> 00:10:54.830 +be a graphic. It could be a +headshot of your guest . It could + +00:10:54.831 --> 00:10:57.259 +be an audio gram . The second +thing that you need is a good + +00:10:57.260 --> 00:11:01.100 +hook. Think about what can I say +to make someone want to continue + +00:11:01.100 --> 00:11:04.370 +listening, to go check out the +full episode. It could be a crazy + +00:11:04.370 --> 00:11:06.799 +stat. It could be a really good +quote. It could be a couple of + +00:11:06.801 --> 00:11:09.860 +bullet points that summarize the +high points of the episode. + +00:11:10.129 --> 00:11:13.519 +Whatever that thing is, put that +in the caption to help encourage + +00:11:13.520 --> 00:11:16.580 +people to go check out the full +episode and finally a link you + +00:11:16.581 --> 00:11:20.299 +want to include a direct link to +that specific podcast episode in + +00:11:20.301 --> 00:11:23.539 +your post. If you nail all three +of these elements, you'll not + +00:11:23.541 --> 00:11:27.049 +only intrigue new listeners. +You'll also encourage existing + +00:11:27.051 --> 00:11:28.850 +subscribers to share your posts +as well, + +00:11:31.490 --> 00:11:35.809 +Travis: Batch production of your +podcast episodes. So anytime that + +00:11:35.811 --> 00:11:38.809 +you were producing an episode, +there's so much involved. There's + +00:11:38.811 --> 00:11:43.129 +so many moving pieces that need +to happen in a specific order in + +00:11:43.130 --> 00:11:45.860 +order for you to create that +episode. So you have to start + +00:11:45.860 --> 00:11:48.230 +with generating ideas. Then you +have to create outlines or + +00:11:48.409 --> 00:11:50.629 +scripts. If you have a scripted +podcast, you have to line up + +00:11:50.659 --> 00:11:53.470 +interviews, you need to record +the episode. You need to edit it. + +00:11:53.471 --> 00:11:55.940 +You need to upload it. You need +to schedule it. All of those + +00:11:56.220 --> 00:12:00.690 +things take time. What takes even +more time If you do every single + +00:12:00.691 --> 00:12:04.200 +episode by itself. But let's say +instead that you scheduled all + +00:12:04.201 --> 00:12:07.259 +the interviews that you needed +for the entire month in one week, + +00:12:07.289 --> 00:12:09.899 +maybe you had to record it on +Tuesday. And to record it on + +00:12:09.900 --> 00:12:12.570 +Thursday, you know , have four +episodes to start working with + +00:12:12.960 --> 00:12:16.169 +that Saturday. You create the +outlines for the rest of the + +00:12:16.171 --> 00:12:18.809 +episode. You record the +narration, put it with your intro + +00:12:18.811 --> 00:12:21.659 +and your outro music, and you +export it. You output it to your + +00:12:21.660 --> 00:12:24.570 +podcast host, and now you +schedule it out. You've just done + +00:12:24.600 --> 00:12:29.759 +a month of content in one week. +So if you're looking to optimize + +00:12:29.760 --> 00:12:32.669 +and streamline your workflow even +more beyond templates, the next + +00:12:32.671 --> 00:12:34.769 +best thing to do is to batch your +episodes. diff --git a/transcripts/transcripts.md b/transcripts/transcripts.md index fd16c53..d05be77 100644 --- a/transcripts/transcripts.md +++ b/transcripts/transcripts.md @@ -136,3 +136,61 @@ do we need a podcast trailer? ``` Example file: [example.srt](example.srt) + + +## WebVTT + +Web Video Text Tracks Format (WebVTT) are an alternative to SRT primarily designed for the use in HTML on the web. It is supported in all major web browsers and is similar enough to SRT to be converted. + +### Differences from SRT taken from [Wikipedia](https://en.wikipedia.org/wiki/WebVTT): +- WebVTT's first line starts with WEBVTT after the optional UTF-8 byte order mark +- There is space for optional header data between the first line and the first cue +- Timecode fractional values are separated by a full stop instead of a comma +- Timecode hours are optional +- The frame numbering/identification preceding the timecode is optional +- Comments identified by the word NOTE can be added +- Metadata information can be added in a JSON-style format +- Chapter information can be optionally specified +- Only supports extended characters as UTF-8 +- CSS in a separate file defined in the companion HTML document for C tags is used instead of the FONT tag +- Cue settings allow the customization of cue positioning on the video + +#### Properties: +- Max number of lines: 2 +- Max characters per line: 32 +- Speaker names (optional): Start a new card when the speaker changes. Include the speaker's name, followed by a colon. + +#### Snippet: +``` +WEBVTT + +00:00:00.000 --> 00:00:02.760 +Sarah: In today's episode, +you'll learn whether or not you + +00:00:02.760 --> 00:00:06.090 +should have a podcast trailer. +And if so, what should you + +00:00:06.090 --> 00:00:11.610 +include in one? Welcome to +Podcasting Q&A, where you learn + +00:00:11.610 --> 00:00:15.750 +the best tips and strategies to +launch, grow and monetize your + +00:00:15.750 --> 00:00:18.630 +podcast. This week's question +comes from Gillian. + +00:00:19.080 --> 00:00:21.450 +Gillian: Hi Buzzsprout, Gillian +here from breaking through + +00:00:21.450 --> 00:00:25.350 +careers podcast. My question is, +do we need a podcast trailer? +``` + +Example file: [example.vtt](example.vtt) From 196256a2a626e63751cd7f7f6b1684e76b89f220 Mon Sep 17 00:00:00 2001 From: Alecks Gates Date: Tue, 30 Mar 2021 20:45:36 -0500 Subject: [PATCH 46/64] Add Alecks Gates to contributors file --- contributors.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/contributors.txt b/contributors.txt index 61394f6..516cdf9 100644 --- a/contributors.txt +++ b/contributors.txt @@ -28,4 +28,5 @@ Stacey Goers Stuart Moore @PofMagicfingers @Bigaston +Alecks Gates ... add your name as you contribute! From 69861199017a73017093e1a989f890ac68fed05f Mon Sep 17 00:00:00 2001 From: Dave Jones Date: Thu, 1 Apr 2021 11:44:58 -0500 Subject: [PATCH 47/64] Trailer tag --- README.md | 186 ++++++++++++------------------------------------------ 1 file changed, 41 insertions(+), 145 deletions(-) diff --git a/README.md b/README.md index c9acf4e..779deca 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,9 @@ will become the framework that the independent podcast community needs to delive **Phase 2** - [Closed] Comment period closed on `1/31/21` and 4 tags were adopted. -**Phase 3** - [Open] Proposals welcome. No dates assigned. +**Phase 3** - [Open] Proposals welcome. This phase will close on June 1st, 2021. At that time, any tags with full agreement will be reviewed for + formalization. Any tags with concerns or questions will be pushed forward to the next phase. Current tag proposals under + consideration are listed [here](#phase-3-open).

@@ -138,169 +140,63 @@ full implementation details.

-### Phase 3 (Open) +### Phase 3 (Open - Closes 6/1/21) -The following tags should be considered purely as proposals. They should not be relied upon or implemented except for testing purposes and experimentation. +The following tags should be considered purely as work in progress proposals. They should not be relied upon or implemented except for testing purposes and experimentation.
-- ****[license slug]**\** + - Channel or Item +``` + +[Title of Trailer(string)] + +``` - (optional | single) + - This element defines the license that is applied to the audio content of the episode or the audio of the podcast as a whole. The node value - should be a reference to a slug defined in the license slug file. +Channel - - `url` (optional) This is a url that points to the full license details for this license. +(optional | multiple) - Example: cc-by-4.0 +This element is used to define the location of an audio or video file to be used as a trailer for the entire podcast or a specific season. There can be more than one trailer present in the channel of the feed. If there is more than one listed, the most recent one according to it's `pubdate` should be chosen by default within podcast apps. If the `season` attribute is present, then the `` element it references must also be present within the feed. -
+- `pubdate` (required) The date the trailer was published. +- `url` (required) This is a url that points to the audio or video file to be played. +- `length` (recommended) The length of the file in bytes. +- `type` (recommended) The mime type of the file. +- `season` (optional) If this attribute is present it specifies that this trailer is for a particular season number. -- **\** +Example: +``` +Coming April 1st, 2021 +``` - Channel +Example with Season Linkage: +``` +Season 4: Race for the Whitehouse - (optional | multiple) +(combined with) - See "[IDs](#user-content-ids)" in this document for an explanation. - - - `platform` (required) This is the service slug of the platform. - - `id` (required) This is the unique identifier for this podcast on the respective platform. - - `url` (optional) A url to the page for this podcast on the respective platform. - -
- - -- **\**[social media handle]**\** - - Channel or Item - - (optional | multiple) - - This element lists social media accounts for this podcast. The service slugs should be community written into the accompanying serviceslugs.txt file. - - The maximum recommended string length of the node value is 128 characters. - -
- -- **\**[category Name]**\** - - Channel - - (optional | multiple) - - See "Categories" in this document for an explanation. There can be up to a total of 9 categories defined. - - There can be a maximum of 9 category elements defined in a feed. Any number greater than that should be discarded. - - Category names are defined in the accompanying "categories.json" file in this repository. They should be referenced in the element by their textual name. - The characters can be in any case. This list of categories aims to replicate the current standard but also eliminate as much as possible compound, heirarchical - naming and the use of ampersands. Thus, "Health & Fitness" becomes "Health" and "Fitness" as two distinct categories. And, "Religion & Spirituality" becomes - two separate categories. Again, they are different things that don't always go together. Splitting them allows for more flexible combinations. And, avoiding - ampersands makes xml encoding errors less likely. - -
- -- **\**[rating letter]**\** - - Channel or Item - - (optional | single) - - Specifies the generally accepted rating letter of G, PG, PG-13, R or X. Or, perhaps an age rating system like all, 14, 19, adult. Needs discussion. - -
- -- **\**[url this feed was imported from]**\** - - Channel - - (optional | multiple) - - Lists the previous url of this feed before it was imported. Any time a feed is moved, an additional **\** element - should be added to the channel, to create a paper trail of all the previous urls this feed has lived at. This way, aggregators can easily deduplicate their feed lists. - -
- -- **\** - - Channel (optional | single) - - Item (optional | multiple) - - This element is meant to provide alternate versions of an enclosure, such as low or high bitrate, or alternate formats or alternate uri schemes, like IPFS or live streaming. - There may be multiple alternateEnclosure elements in an item, but there must be no more than one in a channel. The presence of this element at the channel level would be - useful for adding a video/audio trailer or intro media that introduces the listener to the podcast. For instance, in a podcast of an audiobook, this could be the book's - introduction or preface. The alternateEnclosure element always refers to an "alternate" media version. The standard RSS enclosure element is always the default media to be played. - - An `` tag must be present along with this tag within the item. - - - `url` (required) This is the url to the media asset. - - `type` (required) Mime type of the media asset. - - `length` (required) Length of the file in bytes. - - `bitrate` (optional) Encoding bitrate of media asset. - - `title` (required) Alternate assets need a title since main title will apply to primary asset. - - `rel` (optional) Indicates what the purpose of this enclosure is. Like "lowbitrate" for a small file to use over cellular. - -
- -- **\** + **\[domain, bot or service slug]\** - - Channel (optional | single) - - The "indexers" element is meant as a container for one or more `` elements which send a signal to podcast aggregators whether they are allowed to pull and parse - this feed. If the aggregator is listed as blocked, it should take that as a signal by the feed owner to not index/aggregate this feed. - - *Note: this element needs a lot more discussion and work. This is just a placeholder for discussion.* - -
- -- **\** - - Channel or Item - - (optional | single) - - This points to a group of images, separated by commas - each with a pixel width declared after them. It is highly recommended that the images referenced - be square (1:1 ratio), as this is the industry standard for podcast album art, and what podcast apps expect to work with. The srcset attribute is designed - to work like the ```srcset``` attribute in the HTML5 specification. Suggested widths are 1500px, 600px, 300px and 150px. See the example feed in this - repo for an example of how this looks in practice. - - All attributes are required. - -
- -- **\**[email address or url]**\** - - Channel - - (optional | multiple) - - This element allows for listing different contact methods for the podcast owner. This could be for general feedback, advertising inquiries, abuse reports, etc. Only one element of each "type" - is allowed. - - All attributes are required. - -
- -- **\**[one or more "valueRecipient" elements]**\** - - Details for this tag are now located in dedicated documentation [here](value/value.md). - -- **\** - - Details for this tag are now located in dedicated documentation [here](value/value.md). +4 +```

+## Current Proposals + +A list of the current proposed tags can be found in the issues section [here](/labels/proposal). + + ## Verification for Importing and Transferring From 7edc5341ed208b7574d81d8984c71140c561178f Mon Sep 17 00:00:00 2001 From: Dave Jones Date: Thu, 1 Apr 2021 11:49:10 -0500 Subject: [PATCH 48/64] tweak --- README.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 779deca..33a0324 100644 --- a/README.md +++ b/README.md @@ -146,6 +146,8 @@ The following tags should be considered purely as work in progress proposals. T
+## \ + ``` @@ -176,12 +178,16 @@ This element is used to define the location of an audio or video file to be used Example: ``` -Coming April 1st, 2021 +Coming April 1st, 2021 ``` Example with Season Linkage: ``` -Season 4: Race for the Whitehouse +Season 4: Race for the Whitehouse (combined with) From fbfb21048350cb4a55e4c8272d70bd2602ea5c4c Mon Sep 17 00:00:00 2001 From: Dave Jones Date: Thu, 1 Apr 2021 11:50:23 -0500 Subject: [PATCH 49/64] tweak --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 33a0324..9fed9f1 100644 --- a/README.md +++ b/README.md @@ -146,7 +146,9 @@ The following tags should be considered purely as work in progress proposals. T
-## \ +### **\** + +
From 5549235e1630f61ac85772fc73a7a8688fb07de6 Mon Sep 17 00:00:00 2001 From: Dave Jones Date: Thu, 1 Apr 2021 11:51:37 -0500 Subject: [PATCH 50/64] tweak --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9fed9f1..a5879bd 100644 --- a/README.md +++ b/README.md @@ -144,7 +144,7 @@ full implementation details. The following tags should be considered purely as work in progress proposals. They should not be relied upon or implemented except for testing purposes and experimentation. -
+


### **\** From 8ac23e5b999193caad3ec8d730b8927fb7152cfd Mon Sep 17 00:00:00 2001 From: Dave Jones Date: Thu, 1 Apr 2021 11:53:07 -0500 Subject: [PATCH 51/64] tweak --- README.md | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index a5879bd..9b6fe9a 100644 --- a/README.md +++ b/README.md @@ -144,7 +144,7 @@ full implementation details. The following tags should be considered purely as work in progress proposals. They should not be relied upon or implemented except for testing purposes and experimentation. -


+
### **\** @@ -178,12 +178,7 @@ This element is used to define the location of an audio or video file to be used - `type` (recommended) The mime type of the file. - `season` (optional) If this attribute is present it specifies that this trailer is for a particular season number. -Example: -``` -Coming April 1st, 2021 -``` +Example: `Coming April 1st, 2021` Example with Season Linkage: ``` From 081614655b609497d9f4c1dd1a025d6fe08f7e78 Mon Sep 17 00:00:00 2001 From: Dave Jones Date: Thu, 1 Apr 2021 11:55:13 -0500 Subject: [PATCH 52/64] tweak --- README.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 9b6fe9a..950fa91 100644 --- a/README.md +++ b/README.md @@ -123,7 +123,7 @@ full implementation details. - **\**
- **\**
-

+


### Phase 2 (Closed on 1/31/21) @@ -137,7 +137,7 @@ full implementation details. - **\**
- **\**
-

+


### Phase 3 (Open - Closes 6/1/21) @@ -178,13 +178,14 @@ This element is used to define the location of an audio or video file to be used - `type` (recommended) The mime type of the file. - `season` (optional) If this attribute is present it specifies that this trailer is for a particular season number. -Example: `Coming April 1st, 2021` +Example: +``` +Coming April 1st, 2021 +``` Example with Season Linkage: ``` -Season 4: Race for the Whitehouse +Season 4: Race for the Whitehouse (combined with) From c68501dc81d13ca8ada30be17c3aa9f351e82ad4 Mon Sep 17 00:00:00 2001 From: Dave Jones Date: Thu, 1 Apr 2021 11:56:55 -0500 Subject: [PATCH 53/64] tweak --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 950fa91..08bd770 100644 --- a/README.md +++ b/README.md @@ -123,7 +123,7 @@ full implementation details. - **\**
- **\**
-


+
### Phase 2 (Closed on 1/31/21) @@ -137,7 +137,7 @@ full implementation details. - **\**
- **\**
-


+
### Phase 3 (Open - Closes 6/1/21) From 62ef91a980c59a4e891b3877ab1d560f82c4e0ed Mon Sep 17 00:00:00 2001 From: Dave Jones Date: Thu, 1 Apr 2021 11:59:35 -0500 Subject: [PATCH 54/64] tweak --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 08bd770..62ad3da 100644 --- a/README.md +++ b/README.md @@ -200,6 +200,7 @@ Example with Season Linkage: A list of the current proposed tags can be found in the issues section [here](/labels/proposal). +

## Verification for Importing and Transferring From 6bf9a39c38ef4411349b711ca421b63a66aac630 Mon Sep 17 00:00:00 2001 From: Dave Jones Date: Thu, 1 Apr 2021 12:00:41 -0500 Subject: [PATCH 55/64] link to discussion --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 62ad3da..23943c0 100644 --- a/README.md +++ b/README.md @@ -146,7 +146,7 @@ The following tags should be considered purely as work in progress proposals. T
-### **\** +### **\** - Discussion [here](/issues/84).
From aa0353a90bbb242a9c3246857695912812fb4800 Mon Sep 17 00:00:00 2001 From: Dave Jones Date: Thu, 1 Apr 2021 12:01:54 -0500 Subject: [PATCH 56/64] discussion link too big --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 23943c0..f7cdaba 100644 --- a/README.md +++ b/README.md @@ -146,7 +146,7 @@ The following tags should be considered purely as work in progress proposals. T
-### **\** - Discussion [here](/issues/84). +### **\** - [Discuss](/issues/84)
From 4012d63aea4a09487e3cc0bced0d124ac4db503b Mon Sep 17 00:00:00 2001 From: Dave Jones Date: Thu, 1 Apr 2021 12:03:27 -0500 Subject: [PATCH 57/64] link fixes --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f7cdaba..385fa80 100644 --- a/README.md +++ b/README.md @@ -146,7 +146,7 @@ The following tags should be considered purely as work in progress proposals. T
-### **\** - [Discuss](/issues/84) +### **\** - [Discuss](issues/84)
@@ -198,7 +198,7 @@ Example with Season Linkage: ## Current Proposals -A list of the current proposed tags can be found in the issues section [here](/labels/proposal). +A list of the current proposed tags can be found in the issues section [here](labels/proposal).

From d7875ecfa36958fa82f36c8dacd4d1845bc7a86c Mon Sep 17 00:00:00 2001 From: Dave Jones Date: Thu, 1 Apr 2021 12:05:47 -0500 Subject: [PATCH 58/64] link fixes --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 385fa80..14bc791 100644 --- a/README.md +++ b/README.md @@ -146,7 +146,7 @@ The following tags should be considered purely as work in progress proposals. T
-### **\** - [Discuss](issues/84) +### **\** - [Discuss](https://github.com/Podcastindex-org/podcast-namespace/issues/84)
@@ -198,7 +198,7 @@ Example with Season Linkage: ## Current Proposals -A list of the current proposed tags can be found in the issues section [here](labels/proposal). +A list of the current proposed tags can be found in the issues section [here](https://github.com/Podcastindex-org/podcast-namespace/labels/proposal).

From 16b9b79f0b46423765bf836f653eb704e93e8216 Mon Sep 17 00:00:00 2001 From: Dave Jones Date: Thu, 1 Apr 2021 12:16:16 -0500 Subject: [PATCH 59/64] license tag --- README.md | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 14bc791..cbf2d9b 100644 --- a/README.md +++ b/README.md @@ -192,11 +192,39 @@ Example with Season Linkage: 4
``` +
+ +### **\** - [Discuss](https://github.com/Podcastindex-org/podcast-namespace/issues/177) + +
+ + + +``` + +[license slug] + +``` + + + +Channel or Item + +(optional | single) + +This element defines the license that is applied to the audio/video content of the episode or the audio/video of the podcast as a whole. The node value +should be a reference to a slug defined in the [license slugs](licenseslugs.txt) file. + +- `url` (optional) This is a url that points to the full license details for this license. + +Example: cc-by-4.0

-## Current Proposals +## Other Proposals A list of the current proposed tags can be found in the issues section [here](https://github.com/Podcastindex-org/podcast-namespace/labels/proposal). From c9773023312759bf335fc3a2890293c6d1a2775d Mon Sep 17 00:00:00 2001 From: Dave Jones Date: Thu, 1 Apr 2021 12:33:15 -0500 Subject: [PATCH 60/64] recommendations tag --- README.md | 47 ++++- .../recommendations/recommendations.md | 195 ++++++++++++++++++ 2 files changed, 240 insertions(+), 2 deletions(-) create mode 100644 proposal-docs/recommendations/recommendations.md diff --git a/README.md b/README.md index cbf2d9b..82a917b 100644 --- a/README.md +++ b/README.md @@ -204,7 +204,7 @@ Example with Season Linkage: -[license slug] +[license slug(string)] ``` @@ -219,7 +219,50 @@ should be a reference to a slug defined in the [license slugs](licenseslugs.txt) - `url` (optional) This is a url that points to the full license details for this license. -Example: cc-by-4.0 +Example: +``` +cc-by-4.0 +``` + +
+ +### **\** - [Discuss](https://github.com/Podcastindex-org/podcast-namespace/issues/205) + +
+ + + +``` + +[optional comments(string)] + +``` + + + +Channel or Item + +(optional | multiple) + +This element allows a podcaster (or third party, with podcater permission) to specify a list of recommended content for a podcast or an episode. The recommended content can be a +web page, a podcast, a podcast episode or a soundbite, so that listeners can eventually subscribe to a podcast, add an episode to playlist, add a soundbite to playlist, etc. + +This is a complex tag. The full documentation is [here](). Please read that document to understand and comment on this proposal. + +Example: +``` + +``` + +Example: +``` +Some other cool podcasts +``` +

diff --git a/proposal-docs/recommendations/recommendations.md b/proposal-docs/recommendations/recommendations.md new file mode 100644 index 0000000..978261d --- /dev/null +++ b/proposal-docs/recommendations/recommendations.md @@ -0,0 +1,195 @@ +# The "podcast:recommendations" Specification + +Version 1.0 by Benjamin Bellamy - 2021.03.04 + +
+ +## Purpose + +Podcasting is a tremendous ecosystem brimming with tons of stories and ideas that go freely from any platform to any application. +That comes with a huge drawback: finding and being found can be harsh. +Podcast creators struggle to be found while podcast listeners struggle to find content. +Several platforms are now implementing recommendation engines, but these features are expensive and unattainable for small players. Moreover they are slowly creating closed silos and removing power from content creators. +This specification is about giving control to content creators on the content they want to recommend, and at the same time providing a free recommendation system to all players. +It was heavily inspired by all the work previously done by the Fellowship of the PodcastIndex on the chapters and soundbite tags. May they be thanked for it. +GO PODCASTING!!! + +## Specification + +- **\**[Optionnal comments]**\** + + Channel (optional | multiple) + + Item (optional | multiple) + + This element allows a podcaster to specify a list of recommended content for a podcast or an episode. + + The recommended content can be a web page, a podcast, a podcast episode or a soundbite, so that listeners can eventually subscribe to a podcast, add an episode to playlist, add a soundbite to playlist,… + + There may be several occurences of this tag for the same element (one per language, one per topic, one per provider…) + + - `url` (required): This is the url to the json file. + - `type` (required): Mime type, must be json. + - `language` (optional): The language of the recommended episodes (two-letter language codes, with some possible modifiers, such as "en-us"). If there is no language attribute given, the linked file is assumed to be the same language that is specified by the RSS \ element. + + Examples: + - `` + - `Some other cool podcasts` + +## "Recommendations" Object + +The recommendations object is a simple JSON object with 2 required properties: + + - `version` (required - string) The version number of the format being used. + - `recommendations` (required - array) An array of recommendations objects defined below. + +#### Optional Attributes: + + - `comment` (optional - string) A comment on this file. + - `title` (optional - string) The name of the source podcast or source podcast episode. Applies to both Channel and Item. + - `rss` (optional - string) The RSS URL of the source podcast. Applies to both Channel and Item. + - `guid` (optional - string) The GUID of the source episode. Applies to Item only. + - `url` (required - string) The enclosure URL of the source episode. Applies to Item only. + +## "Recommendation" Objects + +The "recommendation" object takes this basic form: + +``` +{ + "type": "page", + "title": "History of podcasting", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e7/Podcasts_%28iOS%29.svg/440px-Podcasts_%28iOS%29.svg.png", + "url": "https://en.wikipedia.org/wiki/History_of_podcasting" +} +``` + +There are 4 required attributes: + + - `type` (required - string) The type of this recommended content (*"page"*, *"podcast"*, *"episode"* or *"soundbite"*). + - `title` (required - string) The title for this recommended content. + - `image` (required - string) The image URL for this recommended content. Image must have a 1:1 ratio (square). + - `url` (required - string) The URL for this recommended content. If recommended content type is *"podcast"* this is the home page of the podcast. If recommended content type is *"episode"* or *"soundbite"* this is the enclosure URL. + +#### Optional Attributes: + + - `displayStartTime` (optional - float) The start time (in seconds) that tells when this recommended content should start being displayed. If `displayStartTime` is omitted, recommendation will be displayed from the beginning. Applies only when called from an *Item* (not from the *Channel*). + - `displayDuration` (optional - float) The duration (in seconds) that tells when this recommended content should stop being displayed. If `displayDuration` is omitted, recommendation will be displayed until the end. Applies only when called from an *Item* (not from the *Channel*). + - `rss` (optional - string) The RSS URL of this recommended content. Applies to *"podcast"*, *"episode"* and *"soundbite"* types only. + - `guid` (optional - string) The GUID of this recommended content. Applies to *"episode"* and *"soundbite"* types only. + - `startTime` (optional - float) The start time (in seconds) of this recommended content. Applies to *"soundbite"* type only. + - `duration` (optional - float) The duration (in seconds) of this recommended content. Applies to *"soundbite"* type only. + - `relevance` (optional - float) The relevance of this recommended content regarding this Channel or Item. Number must be in [0…1]. 0 is for irrelevant content, 1 is for contents that match perfectly. + +## Basic example + +Here is what a very basic recommendations file may look like: + +``` +{ + "version": "1.0", + "recommendations": + [ + { + "type": "page", + "title": "History of podcasting", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e7/Podcasts_%28iOS%29.svg/440px-Podcasts_%28iOS%29.svg.png", + "url": "https://en.wikipedia.org/wiki/History_of_podcasting" + }, + { + "type": "podcast", + "title": "Podcasting 2.0", + "image": "https://noagendaassets.com/enc/1601061118.678_pciavatar.jpg", + "url": "https://podcastindex.org/podcast/920666", + "rss": "http://mp3s.nashownotes.com/pc20rss.xml" + }, + { + "type": "episode", + "title": "Episode 26: Manning Battlestations", + "image": "https://noagendaassets.com/enc/1601061118.678_pciavatar.jpg", + "url": "https://mp3s.nashownotes.com/PC20-26-2021-02-26-Final.mp3", + "rss": "http://mp3s.nashownotes.com/pc20rss.xml", + "guid": "PC2026" + }, + { + "type": "soundbite", + "title": "GO PODCASTING!!!", + "image": "https://noagendaassets.com/enc/1601061118.678_pciavatar.jpg", + "url": "https://mp3s.nashownotes.com/PC20-26-2021-02-26-Final.mp3", + "rss": "http://mp3s.nashownotes.com/pc20rss.xml", + "guid": "PC2026", + "startTime": 4737.0, + "duration": 5.0 + } + ] +} +``` + +## More complex example + +``` +{ + "version": "1.0", + "title": "Podnews podcasting news", + "rss": "https://podnews.net/rss", + "recommendations": + [ + { + "displayStartTime": 0.0, + "displayDuration": 120.0, + "type": "page", + "title": "History of podcasting", + "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e7/Podcasts_%28iOS%29.svg/440px-Podcasts_%28iOS%29.svg.png", + "url": "https://en.wikipedia.org/wiki/History_of_podcasting", + "relevance": 0.8 + }, + { + "displayStartTime": 120.50, + "displayDuration": 60.0, + "type": "podcast", + "title": "Podcasting 2.0", + "image": "https://noagendaassets.com/enc/1601061118.678_pciavatar.jpg", + "url": "https://podcastindex.org/podcast/920666", + "rss": "http://mp3s.nashownotes.com/pc20rss.xml", + "relevance": 0.7 + }, + { + "displayStartTime": 240.60, + "displayDuration": 180.0, + "type": "episode", + "title": "Episode 26: Manning Battlestations", + "image": "https://noagendaassets.com/enc/1601061118.678_pciavatar.jpg", + "url": "https://mp3s.nashownotes.com/PC20-26-2021-02-26-Final.mp3", + "rss": "http://mp3s.nashownotes.com/pc20rss.xml", + "guid": "PC2026", + "relevance": 0.5 + }, + { + "displayStartTime": 3600.10, + "displayDuration": 60.0, + "type": "soundbite", + "title": "GO PODCASTING!!!", + "image": "https://noagendaassets.com/enc/1601061118.678_pciavatar.jpg", + "url": "https://mp3s.nashownotes.com/PC20-26-2021-02-26-Final.mp3", + "rss": "http://mp3s.nashownotes.com/pc20rss.xml", + "guid": "PC2026", + "startTime": 4737.0, + "duration": 5.0, + "relevance": 0.9 + } + ] +} +``` + +## Note about privacy + +When pulling in web based data there is the chance that this functionality could be used for tracking. +As a safeguard against that, apps should: + +- Block all cookies. +- Allow users to ignore `displayStartTime` and `displayDuration` if they want to. +- Fetch all recommendations at the same time disregarding `displayStartTime` so that HTTP requests cannot be used as a way of measuring who listens to what. + +Discussion here: +- https://github.com/Podcastindex-org/podcast-namespace/issues/205 +- https://podcastindex.social/web/statuses/105833620038854052 \ No newline at end of file From a5fc5ed9f1d1ead12f8597d094f15688afec9b06 Mon Sep 17 00:00:00 2001 From: Dave Jones Date: Thu, 1 Apr 2021 12:34:16 -0500 Subject: [PATCH 61/64] recommendations tag link --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 82a917b..cc8fd2f 100644 --- a/README.md +++ b/README.md @@ -251,7 +251,8 @@ Channel or Item This element allows a podcaster (or third party, with podcater permission) to specify a list of recommended content for a podcast or an episode. The recommended content can be a web page, a podcast, a podcast episode or a soundbite, so that listeners can eventually subscribe to a podcast, add an episode to playlist, add a soundbite to playlist, etc. -This is a complex tag. The full documentation is [here](). Please read that document to understand and comment on this proposal. +This is a complex tag. The full documentation is [here](https://github.com/Podcastindex-org/podcast-namespace/blob/main/proposal-docs/recommendations/recommendations.md). Please +read that document to understand and comment on this proposal. Example: ``` From 7c83b96b45a5b7ba55ab2c282e0692dfbaa694e5 Mon Sep 17 00:00:00 2001 From: Alecks Gates Date: Sat, 3 Apr 2021 13:44:27 -0500 Subject: [PATCH 62/64] Add text/vtt to transcript type list --- docs/1.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/1.0.md b/docs/1.0.md index e4a2894..e9b18ce 100644 --- a/docs/1.0.md +++ b/docs/1.0.md @@ -29,7 +29,7 @@ Multiple #### Attributes - **url:** URL of the podcast transcript. - - **type:** Mime type of the file such as `text/plain`, `text/html`, `application/srt`, `application/json` + - **type:** Mime type of the file such as `text/plain`, `text/html`, `application/srt`, `text/vtt`, `application/json` - **language (optional):** The language of the linked transcript. If there is no language attribute given, the linked file is assumed to be the same language that is specified by the RSS `` element. From 30368288ac29d8ab45ef855b1b21f01106ed71e5 Mon Sep 17 00:00:00 2001 From: Douglas Kastle Date: Fri, 9 Apr 2021 21:04:26 +0100 Subject: [PATCH 63/64] Add Dave Keeshan to contributors file --- contributors.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/contributors.txt b/contributors.txt index 516cdf9..64d0bce 100644 --- a/contributors.txt +++ b/contributors.txt @@ -29,4 +29,5 @@ Stuart Moore @PofMagicfingers @Bigaston Alecks Gates +Dave Keeshan ... add your name as you contribute! From ba07ac3fdfdad24978f597e36b80665caa54e0cd Mon Sep 17 00:00:00 2001 From: Wolf Date: Fri, 9 Apr 2021 23:41:11 +0200 Subject: [PATCH 64/64] tiny typo --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index cc8fd2f..fa9ccdd 100644 --- a/README.md +++ b/README.md @@ -286,7 +286,7 @@ contacted and subsequently changes the value of the element to "no". ## IDs -Their can be multiple **\** elements to indicate a listing on multiple platforms, directories, hosts, apps and services. The "platform" attribute shall be a slug +There can be multiple **\** elements to indicate a listing on multiple platforms, directories, hosts, apps and services. The "platform" attribute shall be a slug representing the platform, directory, host, app or service. The slugs will look like this: - blubrry @@ -307,4 +307,4 @@ More should be added by the community as needed. This is just a starter list. ## Badges and Media -![Podcast Namespace](images/podcastindex-namespace-final.svg) \ No newline at end of file +![Podcast Namespace](images/podcastindex-namespace-final.svg)