Nachrichten lesen mit RSS Web Feeds
Autor : Gerd Raudenbusch
Stand : 31.08.2024
Inhalt
- Warum brauche ich das ?
- Wie geht's ?
- Die wesentlichen Vorteile im Überblick
- Feed-Reader
- Feed-Quellen
- Web Feeds für die eigene Webseite
Warum brauche ich das ?
Im heutigen Informationszeitalter ist eine einzige Quelle zur Bildung einer kompetenten Meinung nicht mehr ausreichend, und es ist notwendig, sich bei interessanten Themen um umfassende Informationen zu bemühen.
Selbst da, wo tiefere Recherchen zu einem Thema gar nicht notwendig sind, ist es doch immer erhellend, gewissenhaft und sinnvoll, zumindest verschiedene Perspektiven zu der Sache zu kennen, sobald man darüber kompetent bescheidwissen oder gar mitreden will.
Es ist aber sehr mühsam, jedesmal alle möglichen Seiten im Internet Browser oder in verschiedenen Apps abzuklappern.
Aber: Das geht auch viel einfacher!
Wie geht's ?
Das Abonnieren von Web Feeds mit einem entsprechenden Reader ist die wohl professionellste Methode, um dauerhaft Informations- und Nachrichtenquellen gebündelt zu verfolgen, und umfassend informiert zu bleiben. Die dafür am häufigsten eingesetzten Formate und Protokolle sind RSS und Atom.
ALLE großen, modernen Portale aus allen Bereichen, bieten Web Feeds meist völlig kostenlos an, ebenso wie die meisten privaten Blogs, die sich speziellen Themenbereichen widmen. Das liegt mitunter auch daran, daß die von Medien und Bloggern am häufigsten verwendeten Content Management Systeme (z. B. Wordpress) dies fast durchgehend unterstützen. Auch die Feeds von Social Media Kanälen können gewöhnlich als Web Feeds abonniert werden.
Die Verwendung der gewöhnlichen Nachrichten-Apps der einzelnen Nachrichten-Quellen wird völlig obsolet. Indem man stattdessen deren Web Feeds in seinem Reader abonniert, haben die Nachrichten-Quellen oft weniger Möglichkeiten, die eigenen Interessen auszuspähen.
Gelesene Artikel oder Ordner markiert man als solche, damit sie nach gewisser Vorhaltezeit vom Reader automatisch gelöscht werden, oder aber man markiert sie als Favorit, um sie zu behalten.
Die wesentlichen Vorteile im Überblick
- Bündelt dauerhaft alle persönlich gewünschten Nachrichten-Quellen
- Die gesammelten URLs der Web Feeds zu den Nachrichtenquellen kann man plattform-übergreifend einfach inform von OPML-Dateien laden oder sichern, um sie mit seinen Freunden auszutauschen. Das heißt, ein Windows-Benutzer kann diese Sammlung auch mit einem Android- oder Apple-Benutzer teilen.
- Markiert gelesene Artikel, so sieht man Neuigkeiten immer sofort
- Braucht keinerlei Online-Benutzer-Konten
- Die Reader stellen die Inhalte meist werbefrei dar.
Mit Web Feeds kann man also ganz einfach und auch anonym seine eigene, persönlich komponierte, digitale Tageszeitung lesen.
Man braucht dazu nur einen Feed-Reader, mit dem man Feeds im Web abonnieren kann.
Feed-Reader
- Für Linux z. B. Thunderbird
- Für Windows z. B Thunderbird
- Für MacOS z. B. NetNewsWire
- Für iOS z. B. NetNewsWire, Reeder 5 oder News Explore
- Für Android z. B. Feeder
- Web-Browser sind oft selbst RSS-fähig oder sie sind durch Plugins, wie FeedBro erweiterbar
- Es gibt Online-Feedreader-Anbieter, bei denen man nach Anmeldung seine abonnierten Nachrichten lesen kann...für WAS !?
Die Feeds werden in folgender Struktur verwaltet :
-
Account : Das ist nicht zwingend ein Benutzerkonto, sondern entspricht dem Speicherort der Quellen-Sammlung. Dies ist entweder :
- lokal auf dem Gerät,
- in der Cloud oder
- bei einem Online-Anbieter für RSS-Feeds
-
Ordner : Können unter einem Account angelegt werden. Kennen wir alle zur Gruppierung gleichartiger Objekte
-
Quellen-Links : Meist reicht es aus, die normale Web-URL der Nachrichten-Quelle ( z. B. www.tagesschau.de ) mit dem Plus-Symbol im RSS-Reader einfach zuzufügen. Manchmal gibt es mehrere Unterkanäle, die nach Belieben gewählt werden können. Manchmal sind es aber auch spezielle URL‘s, die der Anbieter explizit mitteilt.
Feed-Quellen
Um die Web-Links zu den Web Feeds, wie :
- z. B. der tagesschau.de
- z. B. der NachDenkSeiten
- z. B. von heise.de
- z. B. der Sportschau
- z. B. von einem beliebigen Youtube-Kanal, wie dem Witz vom Olli
zu finden...
...sucht man am besten auf den entsprechenden Webseiten selbst, und hält Ausschau nach diesem Logo. |
Den gefundenen Weblink fügt man anschließend dem Feed-Reader seiner Wahl zu.
Es gibt viele Anbieter, welche die RSS Bridge oder vergleichbare Dienste hosten, um Feeds zu erstellen für Webseiten, die nicht selbst Feeds anbieten.
Weiterhin bietet die unter keinen Umständen unnötig zu würdigende Suchmaschine bing
von Microsoft leider die herausragende Option, ihre Ergebnisse mit dem Anhängen von format=rss
als RSS-Feed auszugeben und so auch die Nachrichten zu Suchbegriffen mit einem Feed-Reader abonnierbar zu machem, z. B. https://bing.com/news/search?q=Politik&format=rss
. Die persönlichen Daten, die Microsoft als Big Data Unternehmen dabei sammeln könnte, dürften sich auf die typischen Merkmale eines Webbrowsers ohne Cookies beschränken.
Web Feeds für die eigene Webseite
Im Prinzip handelt es sich bei Webfeeds um eine Datei mit bestimmtem Format, die auf dem Webserver liegt und von den Benutzern beobachtet wird. Wie erwähnt, erstellen die meisten modernen Content Management Systeme die Feeds automatsch. Wer selbst auf der eigenen Webseite ein RSS-Feed zuzufügen möchte, muss einfach eine zusätzliche XML-Datei zu der Seite auf den Webserver zu legen und pflegen, die von außen erreicht werden kann. Wenn man beispielsweise auf seinem Webserver, der unter https://beispiel.de
erreichbar ist, neben die Datei index.html
die Datei feed.rss
legt, dann können die Leser der Seite diese in ihrem Feed-Reader unter der URL https://beispiel.de/feed.rss
abonnieren. Die XML-Datei hat die folgende, einfache Struktur :
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Titel des Feeds</title>
<link>URL der Webpräsenz</link>
<description>Kurze Beschreibung des Feeds</description>
<language>Sprache des Feeds (z. B. "de-de")</language>
<copyright>Autor des Feeds</copyright>
<pubDate>Erstellungsdatum("Tue, 8 Jul 2008 2:43:19")</pubDate>
<image>
<url>URL einer einzubindenden Grafik</url>
<title>Bildtitel</title>
<link>URL, mit der das Bild verknüpft ist</link>
</image>
<item>
<title>Titel des Eintrags</title>
<description>Kurze Zusammenfassung des Eintrags</description>
<link>Link zum vollständigen Eintrag</link>
<author>Autor des Artikels, E-Mail-Adresse</author>
<guid>Eindeutige Identifikation des Eintrages</guid>
<pubDate>Datum des Items</pubDate>
</item>
<item>
...
</item>
</channel>
</rss>
Man kann bereits im HTML-Code der Startseite der Domain auf den RSS-Feed verweisen :
<link rel="alternate" type="application/rss+xml" title="Titel Deines Feeds" href="https://deine-domain.de/deine-feed.xml" />
Dadurch ist die Eingabe des Domainnamens in den Feed-Reader ausreichend, damit der zugehörige Feed dazu gefunden werden kann.
Auf einem Linux-basierten System kann man seine Feed-Dateien z. B. mit folgendem Shellskript aktualisieren :
#!/bin/bash
#
# This script creates RSS Feed Files
# for webpages and adds new feed entries.
#
# @author: gerd@raudenbusch.net
#
if test -t 1; then
ncolors=$(tput colors)
if test -n "$ncolors" && test $ncolors -ge 8; then
BLACK=`tput setaf 0`
RED=`tput setaf 1`
GREEN=`tput setaf 2`
YELLOW=`tput setaf 3`
BLUE=`tput setaf 4`
MAGENTA=`tput setaf 5`
CYAN=`tput setaf 6`
WHITE=`tput setaf 7`
BOLD=`tput bold`
RESET=`tput sgr0`
fi
fi
log () {
>&2 echo "${1}"
}
printInfo () {
log "${BOLD}${WHITE}${1}${RESET}"
}
printWarning () {
log "${BOLD}${YELLOW}${1}${RESET}"
}
printSuccess () {
log "${BOLD}${GREEN}${1}${RESET}"
}
printError () {
log "${BOLD}${RED}${1}${RESET}"
}
createFeed () {
local TITLE="${1}"
local DOMAIN="${2}"
local DESCRIPTION="${3}"
local FILENAME="${4}"
cat << EOF >${FILENAME}
<rss version="2.0">
<channel>
<title>${TITLE}</title>
<link>${DOMAIN}</link>
<description>${DESCRIPTION}</description>
<!-- ENTRIES -->
</channel>
</rss>
EOF
printSuccess "Success !"
}
addEntry () {
local TITLE="${1}"
local LINK="${2}"
local DESCRIPTION="${3}"
local FILENAME="${4}"
feedentry="\\\t<item>\n\t\t<title>${TITLE}</title>\n\t\t<link>${LINK}</link>\n\t\t<description>${DESCRIPTION}</description>\n\t</item>\n"
sed "/<\!-- ENTRIES -->/a ${feedentry}" -i ${FILENAME}
if [ "$?" == "0" ]; then
printSuccess "Success !"
else
printError "Failed !"
fi
}
printUsage () {
printInfo "RSS Feed writer"
log "This script can create RSS feed XML files and add new entries to them."
log "The XML file has to be placed on the webserver."
log "Users will be able to follow with a feed reader."
log ""
printInfo "Usage :"
log ""
printInfo "create <options> <RSS feed output XML filename>"
log "creates a new RSS feed XML file."
log " -t or --title : The title of the webpage"
log " -D or --domain : The domain of the feed channel"
log " -d or --description : The description of the feed channel"
log ""
printInfo "add <option> <RSS feed output XML filename>"
log "adds a new entry to an existing RSS feed XML file."
log " -t or --title : The title of the feed entry"
log " -l or --link : The URL to be announced by the new feed entry"
log " -d or --description : The description of the feed entry"
}
# Evaluate command line options
POSITIONAL_ARGS=()
while [[ $# -gt 0 ]]; do
case $1 in
-h|--help)
printUsage
exit 1
;;
-D|--domain)
DOMAIN="${2}"
shift # past argument
shift # past value
;;
-t|--title)
TITLE="${2}"
shift # past argument
shift # past value
;;
-l|--link)
LINK="${2}"
shift # past argument
shift # past value
;;
-d|--description)
DESCRIPTION="${2}"
shift # past argument
shift # past value
;;
-*|--*)
log "Unknown option $1"
(return 0 2>/dev/null) && return 1 || exit 1
;;
*)
POSITIONAL_ARGS+=("$1") # save positional arg
shift # past argument
;;
esac
done
set -- "${POSITIONAL_ARGS[@]}" # restore positional parameters
# Process operations
case ${1} in
create)
if [ "${TITLE}" == "" ]; then
printError "Title is mandatory !"
printUsage
(return 0 2>/dev/null) && return 1 || exit 1
elif [ "${DOMAIN}" == "" ]; then
printError "Domain is mandatory !"
printUsage
(return 0 2>/dev/null) && return 1 || exit 1
elif [ "${DESCRIPTION}" == "" ]; then
printError "Domain is mandatory !"
printUsage
(return 0 2>/dev/null) && return 1 || exit 1
elif [ "${2}" == "" ]; then
printError "RSS XML output file name is mandatory !"
printUsage
(return 0 2>/dev/null) && return 1 || exit 1
elif [ -f ${2} ]; then
printError "File ${FILENAME} already exists!"
else
createFeed "${TITLE}" "${DOMAIN}" "${DESCRIPTION}" "${2}"
fi
;;
add)
if [ "${TITLE}" == "" ]; then
printError "Title of feed entry is mandatory !"
printUsage
(return 0 2>/dev/null) && return 1 || exit 1
elif [ "${LINK}" == "" ]; then
printError "Link of webpage to be feeded is mandatory !"
printUsage
(return 0 2>/dev/null) && return 1 || exit 1
elif [ "${DESCRIPTION}" == "" ]; then
printError "Description of feed entry mandatory !"
printUsage
(return 0 2>/dev/null) && return 1 || exit 1
elif [ "${2}" == "" ]; then
printError "File name of RSS feed XML file is mandatory !"
printUsage
(return 0 2>/dev/null) && return 1 || exit 1
elif [ ! -f ${2} ]; then
printError "File ${FILENAME} does not exist !"
else
addEntry "${TITLE}" "${LINK}" "${DESCRIPTION}" "${2}"
fi
;;
*)
printUsage
(return 0 2>/dev/null) && return 1 || exit 1
;;
esac
(return 0 2>/dev/null) && return 0 || exit 0