Racum Tecnologia

Anatomia de um Feed RSS

Em meu último artigo sobre Feeds eu listei as principais formas de se implementar um Feed válido de podcast. Tecnicamente ninguém precisa conhecer os detalhes internos de um Feed, afinal eles foram projetados para serem usados por programas e não por pessoas, mas conhecer os seus detalhes é algo bem saudável, e dependendo do caso, a troca manual de algum valor pode refletir em maior visibilidade para o Podcast.

As instruções a seguir foram baseadas na especificação oficial de RSS, nas recomendações da Apple para o iTunes e na minha experiência testando diversos agregadores e Feeds de podcasts existentes.

Formato XML

Por definição um Feed RSS é um arquivo XML, esse é um formato padrão no mercado, muitos arquivos usados no dia-a-dia das pessoas são na verdade alguma versão de XML. Eu não quero entrar em detalhes sobre XML, mas o básico para entender é levar em conta esse formato:

<tag parâmetro=”valor_do_parâmetro”>conteúdo_da_tag</tag>

Regras:

  • O “conteúdo_da_tag” pode ser um texto simples ou outras tags;
  • O “parâmetro” é opcional, e pode ter mais de um;
  • Todas as tags abertas devem ser fechadas obedecendo a hierarquia.

 

Estrutura

A tag principal de um Feed é <rss>, essa tag possui obrigatoriamente uma tag <channel>, que por sua vez pode conter várias tags <item>.

Levando em conta essa estrutura, segue o mínimo valor válido para um Feed de Podcast:

<?xml version=”1.0″ encoding=”UTF-8″?>

<rss version=”2.0″>

<channel>

<title>SeuPodcast</title>

<description>Um Podcast de exemplo para mostrar um RSS básico.</description>

<link>http://seusite.com/</link>

<item>

<title>Episódio 01: Exemplo</title>

<description>Exemplo de um Podcast Mínimo Válido.</description>

<link>http://seusite.com/ep01/</link>

<enclosure url=”http://seusite.com/ep01.mp3″ length=”0″ type=”audio/mpeg” />

</item>

</channel>

</rss>

Mas obviamente eu não escreveria esse artigo se fosse só para você criar um Feed mínimo, o interessante é incrementar com o máximo de informações possível. Ao contrário de uma página HTML que fica poluída quando está muito cheia, os Feeds RSS não são lidos por humanos, mas por programas, que podem processar esse tipo de informação sem problemas.

Definição XML: Opcional – Serve basicamente para informar o encode de arquivo usado. É muito comum achar podcasts nacionais que não escrevem os acentos corretamente, isso acontece justamente porque o criador do Feed ou do programa que o gerou não se preocupou em combinar o encode usado no arquivo com a definição do XML.

<?xml version=”1.0″ encoding=”UTF-8″?>

Tag “rss”: Opcional – O arquivo perde o sentido sem essa tag. Possui um parâmetro de versão, use sempre a versão “2.0″, as versões anteriores de RSS não suportam a mecânica de um Podcast. Além da versão essa tag pode opcionalmente possuir parâmetros de Namespace XML (as que começam com “xmlns:”, esses parâmetros servem para mapear as extensões do Feed, no exemplo a seguir estou definindo as tags específicas do iTunes e a equivalência para formato Atom (por motivos de compatibilidade).

<rss version=”2.0″ xmlns:itunes=”http://www.itunes.com/dtds/podcast-1.0.dtd”  xmlns:atom=”http://www.w3.org/2005/Atom”>

Tag “channel”: Obrigatório – Essa tag contém informações sobre o canal de dados, seja um site de notícias, um blog, ou, nosso caso, um podcast. A maneira mais comum de ver os dados estruturados dentro dessa tag é com as tags de informação no começo e uma lista de tags de itens no final.

<channel>

[tags com dados]

[tags dos itens]

</channel>

 

Sub-tags da tag Channel

Tag “title”: Obrigatório – Define o título do Podcast. Mantenha o texto curto, apenas com o título, deixe a descrição ou citação do site relacionado para a tag de descrição:

<title>SeuPodcast</title>

Tag “description“: Obrigatório – Aqui pode ser usado um texto um pouco mais completo, aproveite para citar o site e mantenha uma o texto interessante e chamativo.

<description>Um Podcast de exemplo para mostrar um RSS completo.</description>

Tag “link”: Obrigatório – URL do site do Podcast, se o site possui várias sessões prefira a URL direta para a sessão de podcast em vez de citar a homepage do site.

<link>http://seusite.com/podcast/</link>

Tag “language”: Opcional – Não é obrigatório mas é muito importante: essa é a tag usada pelos diretórios internacionais de podcasts para definir o idioma de um podcast. Não usar essa tag automaticamente define o idioma do seu podcast como inglês, e ele pode deixar de aparecer nas categorias ou buscas por podcasts no nosso idioma. Lembre-se que o Feed é sua forma de comunicação, os diretórios geralmente não possuem uma interface para você editar os dados do seu podcast, eles confiam nas informações presentes no Feed. O formado de idioma usado é o Código ISO 639-1.

<language>pt</language>

Tag “copyright”: Opcional – Define a sua escolha de licença de uso do conteúdo. Na maioria dos países a omissão de informação de licença define o conteúdo automaticamente sob as regras padrões de Copyright. Caso você queira definir alguma forma diferente de licença preencha essa tag informando o modelo usado. As licenças mais permissivas são mais amigáveis ao ambiente de podcast, procure uma licença que atenda às suas necessidades em Creative Commons.

<copyright>Creative Commons Attribution</copyright>

Tag “managingEditor“: Opcional – Email e Nome da pessoa responsável pelo conteúdo do podcast.

<managingEditor>contato@seusite.com (Seu Nome)</managingEditor>

Tag “webMaster“: Opcional – Email e Nome da pessoa responsável pela parte técnica do podcast.

<webMaster>contato@seusite.com (Seu Nome)</webMaster>

Tag “pubDate”: Opcional – Essa tag fora de um contexto de podcast define a data de publicação de uma mídia. Para podcast esse definição perde o sentido, a convenção atual é deixar esse campo fixo com a data de estréia do podcast. O formato de data segue a RFC822, prefira gerar essa data via software em vez de manualmente, o formato não é dos mais intuitivos.

<pubDate>Fri, 13 Jun 2008 08:00:00 -0300</pubDate>

Tag “lastBuildDate”: Opcional – Data de publicação do último episódio, na prática os agregadores ignoram essa informação e pegam direto a data do item mais recente. Também segue o formato RFC822.

<lastBuildDate>Fri, 13 Jun 2008 08:00:00 -0300</lastBuildDate>

Tag “generator”: Opcional – Informa o site ou programa que gerou o Feed, essa tag é útil para fins estatísticos, ou pra facilitar o suporte, já que é freqüente ela informar não só o programa como a versão usada. Uma boa analogia é a informação do webserver informado no header dos pacotes HTTP.

<generator>Gerado Manualmente</generator>

Tag “docs”: Opcional – URL com informações extras sobre a especificação das tags do Feed. Se usar essa tag use sempre o valor padrão, apenas casos muito específicos, geralmente experimentais, usam algum valor diferente.

<docs>http://www.rssboard.org/rss-specification</docs>

Tag “ttl”: Opcional – TTL = “time to live”, ou “tempo de vida”. É o tempo em minutos sugerido para um agregador verificar por atualizações no Feed. Todos os agregadores que conheço ignoram esse valor.

<ttl>45</ttl>

Tag “image”: Opcional – Define uma imagem usada para representar o podcast em um diretório ou media-player. A forma padrão é quadrada (herança das capas de CD) em resolução indicada de 600×600 pixels e no formato JPEG ou PNG. A imagem deve estar visível em algum lugar no webserver, com a URL direta para imagem linkada na sub-tag <url>, as outras tags (<title>, <link> e <description>) são cópias das tags equivalente de <channel>.

<image>

<url>http://seusite.com/artwork.jpg</url>

<title>SeuPodcast</title>

<link>http://seusite.com/podcast/</link>

<description>Um Podcast de exemplo para mostrar um RSS completo.</description>

</image>

Tag “category”: Opcional – Tag de definição de categoria, essa tag não obedece nenhum padrão, mas a convenção é usar a mesma hierarquia do iTunes.

<category>Technology/Tech News</category>

 

Sub-tags extras de Namespace da tag Channel

Todas as tags do iTunes estão descritas em detalhes na sua página de especificação técnica. As tags do iTunes refletem diretamente na apresentação e nas ações do podcast dentro do diretório.

Tags “itunes:subtitle” e “itunes:summary”: Opcionais – Descrição do Podcast, equivalente à tag <description> do <channel>.

<itunes:subtitle>SeuPodcast</itunes:subtitle>

<itunes:summary>Um Podcast de exemplo para mostrar um RSS completo.</itunes:summary>

Tag “author”: Opcional – Apesar de parecer uma analogia à tag <managingEditor> na verdade trata-se do nome que será mostrado do lado da imagem a abaixo do título, é muito comum informar o título do site em vez do nome de um dos apresentadores:

<itunes:author>Seu Site</itunes:author>

Tag “owner”: Opcional – Essa é a tag usada pelo iTunes para contatar os podcasters, é por ela que o iTunes informa os links de ping e demais mensagens de notificação. Sem essa tag o podcast continua listado, mas o responsável não tem autonomia sobre o que acontecesse com o Feed.

<itunes:owner>

<itunes:name>Seu Nome</itunes:name>

<itunes:email>contato@seusite.com</itunes:email>

</itunes:owner>

Tag “itunes:image”: Opcional – O iTunes procura essa tag primeiro, na falta dela usa a tag <image> do <channel>. Um detalhe importante: caso você mude a imagem do seu podcast altere o nome do arquivo também. o iTunes só vai buscar uma imagem nova se ele detectar uma mudança de nome.

<itunes:image href=”http://seusite.com/artwork.jpg”/>

Tag “itunes:keywords“: Opcional – Palavras-Chave para descrever seu conteúdo. São separados por vírgula e o iTunes só reconhece as 12 primeiras.

<itunes:keywords>exemplo,rss,podcast</itunes:keywords>

Tag “itunes:category”: Opcional – Classifica a categoria do Podcast, no formato do iTunes, descrito no final da página de especificação. O formato é hierárquico, podendo ter um segundo nível. Todos os textos devem seguir a risca o nome em inglês sugerido e o limite é de 3 categorias.

<itunes:category text=”Technology”>

<itunes:category text=”Tech News”/>

</itunes:category>

Tag “itunes:block”: Opcional – Essa tag informa se um podcast deve ser ou bloqueado pelo iTunes. Os valores possíveis não “yes” ou “no”.

<itunes:block>no</itunes:block>

Tag “itunes:explicit”: Opcional – Possui informações sobre a natureza do conteúdo do podcast. Os valores possíveis são: “no” para podcasts neutros; “yes” para podcasts explícitos, que possuem temas adultos ou linguagem pesada; e “clean” para conteúdo limpo, que pode ser ouvido por qualquer idade. Se seu tema se enquadra como explícito marque nessa tag, isso automaticamente não o mostra quando o Parental Control o iTunes está ativo, e evita problemas quando alguém denuncia o podcast em “Report a Concern“.

<itunes:explicit>no</itunes:explicit>

Tag “itunes:new-feed-url”: Opcional – Uma tag incompreendida mas muito útil. Se você alterar o local do seu podcast é nessa tag que você define o redirecionamento. Funciona apontando o feed para outra URL e esperando cerca de 2 semanas para a atualização, uma vez atualizado ele pára de ler o Feed antigo e começa a ler o novo.

<itunes:new-feed-url>http://seusite.com/novo_feed_podcast.xml</itunes:new-feed-url>

Tag “atom:link”: Opcional – Essa tag existe por motivos de compatibilidade com o formato Atom. Tanto o Atom quando o RSS funcionam com Feeds de texto, mas apenas o RSS virou padrão de podcast. A regra é deixar esse campo apontando para a própria URL do Feed:

<atom:link href=”http://seusite.com/podcast.xml” rel=”self” type=”application/rss+xml”/>

 

Sub-tags da tag Item

Tag “title”: Obrigatório – Título do episódio, preste atenção nessa tag, ela é bem visível para o assinante. Escolher o texto certo se reflete diretamente na usabilidade e capacidade do podcast de ser encontrado. Sempre que possível informe o número do episódio e o assunto.

<title>Episódio 01: Exemplo</title>

Tag “link”: Obrigatório – URL para a página que trata especificamente do episódio em questão, onde os assinantes podem acessar mais informações, como links e outros materiais. É importante observar que essa tag é obrigatória e precisa ser única, se o podcast se mantém sozinho e não está associado a um site pelo menos use a URL do arquivo de mídia.

<link>http://seusite.com/ep01/</link>

Tag “description”: Obrigatório – Também conhecido como “Shownotes”, é o elemento de texto que acompanha o episódio, alguns agregadores e media-players suportam exibir esse texto durante a reprodução, o que pode poupar o trabalho do assinantes de ir a página do episódio. Links podem ser usados, mas não serão necessariamente úteis aqui, considere escrever os nomes dos participantes, ou listar uma breve pauta dos assuntos abordados.

<description>Exemplo de um Podcast com todas as tags preenchidas.</description>

Tag “guid”: Opcional – “Identificador Global Único”, como você viu logo acima eu recomendei que se usasse sempre um valor único para a tag <link>, mas o verdadeiro responsável pela identificação de um episódio é a tag <guid>, eu fiz a recomendação com base no comportamento dos agregadores de confiarem mais no <link> que no <guid>, já que ele é obrigatório para um Feed válido. Na dúvida replique o valor de <link> e não repita esse valor em mais de um episódio.

<guid isPermaLink=”true”>http://seusite.com/ep01/</guid>

Tag “author”: Opcional – Possui o mesmo sentido da tag <managingEditor> do <channel>, mas aplicado ao nível do episódio.

<author>contato@seusite.com (Seu Nome)</author>

Tag “pubDate”: Opcional – É a data de publicação do episódio. É importante preencher, pois em caso de omissão o agregador pode não conseguir mostrar a ordem correta dos episódios, especialmente para os assinantes novos que resolvam baixar mais de um episódio de uma vez.

<pubDate>Fri, 13 Jun 2008 08:00:00 -0300</pubDate>

Tag “comments”: Opcional – É a URL onde o podcaster espera receber comentários. O padrão atualmente é linkar para a mesma URL de <link>, mas com âncora interna que joga o browser direto no form de comentário, algo bastante comum nos blogs.

<comments>http://seusite.com/ep01/#comentarios</comments>

Tag “enclosure”: Obrigatório – Essa é a melhor amiga do podcaster, é justamente essa tag que transforma posts comuns em um podcast. Um <item> teoricamente pode ter mais de um <enclosure>, mas isso não é nada recomendável, a maioria dos agregadores só entendem a primeira tag encontrada.

Os parâmetros são todos obrigatórios:

  • “url”: o endereço direto para o arquivo de mídia, ou um redirecionamento.
  • “lenght”: o tamanho em bytes do arquivo, caso não saiba o tamanho preencha “0″.
  • “type”: referência MIME-Type do arquivo, segue os mais comuns:
    • “audio/mpeg”: Áudio MP3 (mp3)
    • “audio/mp4a-latm”: Áudio AAC (m4a, aac)
    • “video/mp4″: Vídeo MPEG4 (mp4, m4v)
    • “video/quicktime”: Vídeo Quicktime (mov)
    • “video/mpeg”: Vídeo MPEG (mpeg, mpg)
    • “application/pdf”: Documento PDF (pdf)

<enclosure url=”http://seusite.com/ep01.mp3″ length=”0″ type=”audio/mpeg” />

Tag “category”: Opcional – Geralmente o valor da tag <category> do <channel>, altere apenas se o episódio tratar de um tema diferente.

<category>Technology/Tech News</category>

 

Sub-tags extras de Namespace da tag Item

Tag “itunes:subtitle”: Opcional – É uma descrição mais breve que a tag <descrition>, é usada pelo iTunes na tabela dos episódios.

<itunes:subtitle>Exemplo de um Podcast com todas as tags preenchidas.</itunes:subtitle>

Tag “itunes:summary”: Opcional – Sumário, tem a mesma função do Shownotes, aparece no ícone “i” de informações do iTunes.

<itunes:summary>Exemplo de um Podcast com todas as tags preenchidas.</itunes:summary>

Tag “itunes:author”: Opcional – Ver tag <itunes:author> do <channel>, altere somente se o autor for diferente.

<itunes:author>Seu Site</itunes:author>

Tag “itunes:duration”: Opcional – Duração do episódio, no formato HH:MM:SS ou MM:SS.

<itunes:duration>00:45:00</itunes:duration>

Tag “itunes:block”: Opcional – Ver tag <itunes:block> do <channel>.

<itunes:block>no</itunes:block>

Tag “itunes:explicit”: Opcional – Ver tag <itunes:explicit> do <channel>.

<itunes:explicit>no</itunes:explicit>

Tag “itunes:keywords”: Opcional – Ver tag <itunes:keywords> do <channel>.

<itunes:keywords>exemplo,rss,podcast</itunes:keywords>

 

Caso queira começar um Feed “do zero” experimente usar meu modelo comentado.

Isso conclui o artigo, espero que tenha compreendido os detalhes dessa tecnologia fundamental para a existência dos podcasts. Experimente alterar alguns parâmetros em seu Feed e explore melhor suas possibilidades.


Creative Commons License
   Este Artigo está licenciado sob Licença Creative Commons Atribuição 3.0.

Tags: , ,

4 Comentários para “Anatomia de um Feed RSS”

  1. Em 15/09/2008 03:16, Paulo Moraes escreveu:

    Parabens, pelo ótimo artigo !!! a cada dia mais esta sua página esta a se transformar no centro de formação sobre podcast
    Grande abraço
    Paulo Moraes – Pod office

  2. Em 15/09/2008 03:16, Paulo Moraes escreveu:

    Lancei um novo episodio, fiz uma pequena referencia a vc, mas fiz rsrs grande abraço

  3. Em 15/09/2008 03:16, leo fernandes escreveu:

    parabéns pelo seu artgo, de tudo que eu já li sobre o assunto o seu foi o ue me fez entender o processo…

  4. Em 15/09/2008 03:16, Eduardo Raposo escreveu:

    Caro.
    Tag “guid”(…)”Na dúvida replique o valor de e não repita esse valor em mais de um episódio.”

    E se o sistema for desenvolvido em Flash por intermédio de xml em que as noticias são apresentadas quase sempre nas mesmas paginas html?
    Digo quase sempre porque optei por dividir os temas noticiosos pelas páginas.

    Abraço.