Merge pull request #1 from Podcastindex-org/main

update
pull/230/head^2
brianoflondon 2021-04-14 08:33:58 +03:00 zatwierdzone przez GitHub
commit 156186cfd2
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
13 zmienionych plików z 1483 dodań i 251 usunięć

121
LICENSE
Wyświetl plik

@ -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.

227
README.md
Wyświetl plik

@ -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).
<br><br>
@ -121,7 +123,7 @@ full implementation details.
- **\<podcast:chapters>** <br>
- **\<podcast:soundbite>** <br>
<br><br>
<br>
### <u>Phase 2 (Closed on 1/31/21)</u>
@ -135,172 +137,143 @@ full implementation details.
- **\<podcast:season>** <br>
- **\<podcast:episode>** <br>
<br><br>
### <u>Phase 3 (Open)</u>
The following tags should be considered purely as proposals. They should not be relied upon or implemented except for testing purposes and experimentation.
<br>
- **<podcast:license url="[https://urlofdetailledlicense]">**[license slug]**\</podcast:license>**
Channel or Item
(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.
- `url` (optional) This is a url that points to the full license details for this license.
Example: <podcast:license url="https://creativecommons.org/licenses/by/4.0/">cc-by-4.0</podcast:license>
<br>
- **\<podcast:id platform="[service slug]" id="[platform id]" url="[link to the podcast page on the service]" />**
Channel
(optional | multiple)
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.
<br>
- **\<podcast:social platform="[service slug]" url="[link to social media account]">**[social media handle]**\</podcast:social>**
### <u>Phase 3 (Open - Closes 6/1/21)</u>
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.
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.
<br>
- **\<podcast:category>**[category Name]**\</podcast:category>**
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.
### **\<podcast:trailer>** - <small>[Discuss](https://github.com/Podcastindex-org/podcast-namespace/issues/84)</small>
<br>
- **\<podcast:contentRating>**[rating letter]**\</podcast:contentRating>**
<b>
Channel or Item
```
<podcast:trailer
pubdate="[date of release(RFC 2822)]"
url="[uri of audio/video file(string)]"
length="[file size in bytes(number)]"
type="[mime type(string)]"
season="[season number(number)]"
>
[Title of Trailer(string)]
</podcast:trailer>
```
(optional | single)
</b>
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.
Channel
(optional | multiple)
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 `<podcast:season>` 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:
```
<podcast:trailer pubdate="Thu, 01 Apr 2021 08:00:00 EST" url="https://example.org/trailers/teaser" length="12345678" type="audio/mp3">Coming April 1st, 2021</podcast:trailer>
```
Example with Season Linkage:
```
<podcast:trailer pubdate="Thu, 01 Apr 2021 08:00:00 EST" url="https://example.org/trailers/season4teaser" length="12345678" type="video/mp4" season="4">Season 4: Race for the Whitehouse</podcast:trailer>
(combined with)
<podcast:season name="Race for the Whitehouse">4</podcast:trailer>
```
<br>
- **\<podcast:previousUrl>**[url this feed was imported from]**\</podcast:previousUrl>**
Channel
(optional | multiple)
Lists the previous url of this feed before it was imported. Any time a feed is moved, an additional **\<podcast:previousUrl>** 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.
### **\<podcast:license>** - <small>[Discuss](https://github.com/Podcastindex-org/podcast-namespace/issues/177)</small>
<br>
- **\<podcast:alternateEnclosure url="[url of media asset]" type="[mime type]" length="[(int)]" bitrate="[(float)]" title="[(string)]" rel="[(string)]" />**
<b>
Channel (optional | single)
```
<podcast:license
url="[https://urlofdetailledlicense]"
>
[license slug(string)]
</podcast:license>
```
Item (optional | multiple)
</b>
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.
Channel or Item
An `<enclosure>` tag must be present along with this tag within the item.
(optional | single)
- `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.
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:
```
<podcast:license url="https://creativecommons.org/licenses/by/4.0/">cc-by-4.0</podcast:license>
```
<br>
- **\<podcast:indexers>** + **\<podcast:block>[domain, bot or service slug]\</podcast:block>**
Channel (optional | single)
The "indexers" element is meant as a container for one or more `<podcast:block>` 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.*
### **\<podcast:recommendations>** - <small>[Discuss](https://github.com/Podcastindex-org/podcast-namespace/issues/205)</small>
<br>
- **\<podcast:images srcset="[url to image] [pixelwidth(int)]w,
[url to image] [pixelwidth(int)]w,
[url to image] [pixelwidth(int)]w,
[url to image] [pixelwidth(int)]w" />**
<b>
Channel or Item
```
<podcast:recommendations
url="[url to json file(string)]"
type="application/json"
language="[language code(string)]"
>
[optional comments(string)]
</podcast:recommendations>
```
(optional | single)
</b>
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.
Channel or Item
All attributes are required.
(optional | multiple)
<br>
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.
- **\<podcast:contact type="[feedback or advertising or abuse]">**[email address or url]**\</podcast:contact>**
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.
Channel
Example:
```
<podcast:recommendations url="https://domain.tld/recommendation?guid=1234" type="application/json" />
```
(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.
<br>
- **\<podcast:value>**[one or more "valueRecipient" elements]**\</podcast:value>**
Details for this tag are now located in dedicated documentation [here](value/value.md).
- **\<podcast:valueRecipient />**
Details for this tag are now located in dedicated documentation [here](value/value.md).
Example:
```
<podcast:recommendations url="https://domain.tld/recommendation?guid=1234" type="application/json" language="en">Some other cool podcasts</podcast:recommendations>
```
<br><br>
## 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).
<br><br>
## Verification for Importing and Transferring
@ -313,7 +286,7 @@ contacted and subsequently changes the value of the element to "no".
## IDs
Their can be multiple **\<podcast:id>** elements to indicate a listing on multiple platforms, directories, hosts, apps and services. The "platform" attribute shall be a slug
There can be multiple **\<podcast:id>** 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
@ -334,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)
![Podcast Namespace](images/podcastindex-namespace-final.svg)

Wyświetl plik

@ -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`.
<br>

Wyświetl plik

@ -28,4 +28,6 @@ Stacey Goers
Stuart Moore
@PofMagicfingers
@Bigaston
Alecks Gates
Dave Keeshan
... add your name as you contribute!

Wyświetl plik

@ -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 `<language>` element.
@ -42,6 +42,8 @@ Multiple
`<podcast:transcript url="https://example.com/episode1/transcript.json" type="application/json" language="es" rel="captions" />`
`<podcast:transcript url="https://example.com/episode1/transcript.vtt" type="text/vtt" />`
Detailed file format information and example files are [here](../transcripts/transcripts.md).
<br><br>

Wyświetl plik

@ -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 `<podcast:chapters>`
1. [Podcast Chapters](https://chaptersapp.com/faq/jsonExport.html)

85
podcasting2.0.md 100644
Wyświetl plik

@ -0,0 +1,85 @@
# Podcasting 2.0
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 what that goal could be.
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."
>
> --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 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:
1. The "podcast" namespace
2. Web app friendliness
3. Value for Value
<br><br>
## 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
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.
<br><br>
## Step 2. Be Web App Friendly
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.
<br><br>
## Step 3. Value for Value
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 `<podcast:value>` 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 `<podcast:value>` 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 `<podcast:value>` 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.

Wyświetl plik

@ -0,0 +1,91 @@
# The podcast:chapters API Specification
<small>Version 1.0 by Benjamin Bellamy - 2021.03.11</small>
<br>
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.
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.
(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.
### 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.
- 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 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.
### 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 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.
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.
It involves 2 parties:
- a Poscast Hosting service.
- a Chapters Provider service.
### Endpoints
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 on its configuration panel.
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
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 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.
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)
```
Discussion here:
- https://github.com/Podcastindex-org/podcast-namespace/issues/209
- https://podcastindex.social/web/statuses/105872943999299482

Wyświetl plik

@ -0,0 +1,52 @@
# The "podcast:license" Specification
<small>Version 1.0 by Benjamin Bellamy - 2021.03.05</small>
<br>
## 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 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/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?
- Can the shownotes be trimmed, cut, edited? Converted from HTML to plain text?
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.
(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.
## Specification
- **\<podcast:license label="[license label]" url="[url to license]" />[License Label]</podcast:license>**
Channel (optional | single)
Item (optional | single)
This element allows a podcaster to specify a license for a podcast or an episode.
- `url` (required): This is the url to the license file.
Examples:
- `<podcast:licence url="http://creativecommons.org/licenses/by-nd/4.0/">(CC BY-ND 4.0)</podcast:license>`
- `<podcast:licence url="http://creativecommons.org/licenses/by-nc-nd/4.0/">(CC BY-NC-ND 4.0)</podcast:license>`
- `<podcast:licence url="http://domain.tld/license.txt">© My Company 2021 - All Rights Reserved</podcast:license>`
Discussion here:
- https://github.com/Podcastindex-org/podcast-namespace/issues/177
- https://podcastindex.social/web/statuses/105839486748529374

Wyświetl plik

@ -0,0 +1,195 @@
# The "podcast:recommendations" Specification
<small>Version 1.0 by Benjamin Bellamy - 2021.03.04</small>
<br>
## 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
- **\<podcast:recommendations url="[url to json file]" type="application/json" language="[language code]" />**[Optionnal comments]**\</podcast:recommendations>**
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 \<language> element.
Examples:
- `<podcast:recommendations url="https://domain.tld/recommendation?guid=1234" type="application/json" />`
- `<podcast:recommendations url="https://domain.tld/recommendation?guid=1234" type="application/json" language="en">Some other cool podcasts</podcast:recommendations>`
## "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

Wyświetl plik

@ -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.

Wyświetl plik

@ -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)

Wyświetl plik

@ -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.
<br>
@ -174,6 +176,10 @@ The `split` attribute denotes an amount of "shares" of the total payment that th
When a single `<podcast:valueRecipient>` 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.
<br><br>
<div class="page"/>
@ -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.
```
<podcast:value type="lightning" method="keysend" suggested="0.00000015000">
@ -313,6 +319,7 @@ a single share (effectively 1%) donation to Podcastindex.org.
type="node"
address="03ae9f91a0cb8ff43840e3c322c4c61f019d8c1c3cea15a25cfc425ac605e61a4a"
split="1"
fee="true"
/>
</podcast:value>
```