Skip to main content

Citizen how-to (How it works)

A practical how-to for residents in four to six steps, true in every country it is posted in: getting ready for a power cut, an emergency kit, reporting a pothole.

Feed idfd_96fe16deae0b
TypeEvergreen: Written once with AI, reviewed by a person, released on a schedule. Not news.
PlansEvery plan
Sourcecivic-life-explained
MarketsPublic bodies
ScheduleWeekly, Tue 07:00
TemplateHow it works, in whichever of its 9 visual variants a channel chooses when it adds the feed
Shapes9x16, 4x5, 1x1, 16x9, 2x3
LanguagesAny: translated by AI into the language each channel chooses
FreshnessAn event older than 24 hours is kept but never published

Example video​

The 1x1 cut of this feed's example, drawn in the Clear civic variant with an example brand. A channel draws it in the variant it chose and in its own brand. Open the video on its own.

Use cases​

  • Council and authority announcements, the moment they are published.
  • Dates people plan around: waste collection, opening hours, public events.
  • Open data made visible: air quality, water levels, traffic or budget figures.

What it carries​

Three to eight numbered steps in the order they are taken, up to four a page, each with a drawn icon or a small picture, a title and one line, joined by a line that draws from step to step as each arrives, then a call to action. metaData is the post's title, descriptions and hashtags and is never drawn.

FieldTypeRequiredLimitWhat it is
clipDatagroupyesClip data: Everything drawn: a kicker, the title, three to eight steps in order, a call to action and the look.
clipData.kickertextup to 20 charactersKicker: A word above the title, such as HOW IT WORKS.
clipData.titletextyesup to 80 charactersTitle: What the steps get you. Shown from the first frame.
clipData.stepslistyesat least 3, up to 8Steps: Three to eight steps, in the order they are taken. They are numbered for you. Up to four stand on a page; each step adds two seconds, so eight run about 21 seconds.
clipData.steps[]groupStep
clipData.steps[].iconenumup, down, flat, check, cross, warning, info, clock, pin, calendar, dot, star, plus, minus, arrow, question, person, money, home, boltIcon: A drawn symbol beside the step's words. A picture, where there is one, is shown instead.
clipData.steps[].pictureimagemedia:// file from the media library, alt text up to 120 charactersPicture: A small picture beside the step's words, shown whole, in place of the icon. A cut-out on a clear background works best.
clipData.steps[].titletextyesup to 32 charactersStep: What to do, in a few words.
clipData.steps[].texttextup to 90 charactersLine: One line that explains the step.
clipData.ctatextup to 40 charactersCall to action: Shown once every step is in, such as where to start.
clipData.styleWordsgroupStyle words: The few words some styles write into their own frame, each drawn exactly as written, in the language you write it in. A word left out is not drawn: no template adds a word of its own. The same keys in every format of the collections; each style draws only its own.
clipData.styleWords.livetextup to 16 charactersLive marker (Broadcast news): Written beside the light in Broadcast news' channel bug, such as LIVE. Left out, the light stands alone.
clipData.styleWords.bylinetextup to 12 charactersByline (Editorial): Written before the presenter's name in Editorial, such as By. Left out, the name stands alone.
clipData.styleWords.functionKeyslistup to 4Function keys (Data terminal): Data terminal's row of keys F1 to F4, one word each, in order, such as HELP, DATA, CHART and NEWS; the second is drawn held down, and a key that does not fit the row is left out. Left out, no keys are drawn.
clipData.styleWords.functionKeys[]textup to 12 charactersKey
clipData.styleWords.commandKeytextup to 10 charactersCommand key (Data terminal): The key at the end of Data terminal's row, in the rise colour, such as GO. Left out, none is drawn.
clipData.styleWords.realTimetextup to 12 charactersReal-time light (Data terminal): Written beside the blinking light in Data terminal's status bar, such as RT. Left out, the light stands alone.
clipData.styleWords.messageLabeltextup to 12 charactersMessage window label (Data terminal): The tab on Data terminal's message window round the presenter, such as MSG. Left out, the window has no tab.
clipData.styleWords.pictureLabeltextup to 12 charactersPicture panel label (Data terminal): Written in the strip along the top of Data terminal's picture panels, such as IMG. Left out, the strip stays empty.
clipData.lookgroupLook: How the clip looks and moves within its style. The same five switches in every format of the collections. Leave a switch out, or set it to the style's own, and the style decides.
clipData.look.themeenumauto, brand, light, dark, boldTheme: The style's own choice; your brand's own colours and background; a light or dark page tinted with your brand colour; or your brand colour as the page.
clipData.look.paceenumauto, calm, standard, punchyPace: How things arrive: the style's own rhythm, calm fades, a standard rhythm, or punchy slams and cuts.
clipData.look.cornersenumauto, square, soft, roundCorners: The shape of cards, panels and marks.
clipData.look.alignenumauto, start, centreText alignment: Where the text lines up.
clipData.look.logoenumauto, freeLogo: The style's own: the logo on the style's plate (a card, a disc, a badge) so it reads on any page. As it is: the logo whole, with no plate, frame or crop, for a logo made to stand on the page, such as one with a transparent background. As it is, make sure your logo reads on the page of the theme you choose.
clipData.look.logoSizeenumauto, small, largeLogo size: Standard is the style's own size. Small draws the logo a fifth smaller, with its plate. Large draws it a quarter larger wherever the style has room for it, and at the standard size where it has none.
metaDatagroupMeta data: Everything about the post that is never drawn in the clip: its title, its description in four lengths, one per kind of platform, and its hashtags. Reelwire adds the brand's description, link and hashtags after it. Left out, the post text is generated from the clip data.
metaData.titletextup to 100 charactersTitle: Used where the platform has a title of its own: Facebook Feed, LinkedIn, Pinterest and YouTube. Up to 100 characters, which every one of them takes.
metaData.captionTinytextup to 200 charactersTiny description (Pinterest, Threads, X): Up to 200 characters. The brand's description, link and hashtags follow it within the platform's limit.
metaData.captionShorttextup to 500 charactersShort description (Telegram, Threema, WeChat, WhatsApp): Up to 500 characters. The brand's description, link and hashtags follow it within the platform's limit.
metaData.captionMediumtextup to 1500 charactersMedium description (Discord, Facebook Reels, Instagram, LinkedIn, Signal, Slack, TikTok): Up to 1500 characters. The brand's description, link and hashtags follow it within the platform's limit.
metaData.captionLongtextup to 4000 charactersLong description (Facebook Feed, YouTube): Up to 4000 characters. The brand's description, link and hashtags follow it within the platform's limit.
metaData.hashtagslistup to 15Hashtags: Written without the #. Up to 15, which every platform takes.
metaData.hashtags[]textup to 60 charactersHashtag

locales carries other languages: under each language code, the parts of clipData and metaData that differ, laid over the default, so a language with no copy still renders.

A picture is always a file from your media library: media:// followed by its id or its name. Anything the table does not list is refused, and so is anything over its limit, with a 400 schema_validation error that names the field.

Ask Reelwire for the whole JSON Schema, the document this feed is checked against, without signing in:

curl "https://app.reelwire.io/v1/formats/feed/fd_96fe16deae0b"

Which template draws a feed is Reelwire's decision and can change, so a producer asks by the feed, as above, rather than by its template.

Delivery JSON​

Every event of this feed is delivered to Reelwire in this envelope. You do not send it yourself: add the feed to a channel under Ready-made feeds, and each event becomes a post on that channel. data is the document described above.

{
"eventId": "01M2SQMKK3G1NVFXV31DCBVB95",
"occurredAt": "2026-09-23T07:00:00Z",
"feedId": "fd_96fe16deae0b",
"locale": "en",
"data": {
"clipData": {
"kicker": "How it works",
"title": "Apply for a residents' parking permit online in four steps and ten minutes",
"steps": [
{
"icon": "pin",
"text": "Enter your postcode to find out which permit zone your street and your car belong to",
"title": "Check your zone"
},
{
"icon": "home",
"text": "Upload a council tax bill or a tenancy agreement dated within the last three months",
"title": "Show where you live"
},
{
"icon": "money",
"text": "Pay by card or in twelve monthly instalments, from 45 euros a year for the first car",
"title": "Pay the yearly fee"
},
{
"icon": "check",
"text": "Your permit is digital: wardens check the number plate, so nothing goes on the dashboard",
"title": "Park from the next day"
}
],
"cta": "Apply now at kettleby.example/permits",
"styleWords": {
"live": "LIVE",
"byline": "By",
"functionKeys": [
"HELP",
"DATA",
"CHART",
"NEWS"
],
"commandKey": "GO",
"realTime": "RT",
"messageLabel": "MSG",
"pictureLabel": "IMG"
},
"look": {
"theme": "auto",
"pace": "auto",
"corners": "auto",
"align": "auto",
"logo": "auto",
"logoSize": "auto"
}
},
"metaData": {
"title": "A residents' parking permit in four steps and ten minutes, now online in Kettleby",
"captionTiny": "Kettleby's residents' parking permits are now online: check your zone, show where you live, pay the yearly fee and park from the next day. It takes about ten minutes, and the permit is digital.",
"captionShort": "Residents' parking permits in Kettleby can now be applied for online, in about ten minutes. Check which zone your street is in, upload a council tax bill or tenancy agreement from the last three months, and pay by card or in monthly instalments, from 45 euros a year for the first car. The permit is digital and starts the next day: wardens check the number plate, so nothing goes on the dashboard. Paper applications at the town hall are still possible.",
"captionMedium": "Residents' parking permits in Kettleby can now be applied for online, and the city says most people will be done in about ten minutes. There are four steps. First, enter your postcode to find out which permit zone your street belongs to: the zones changed in the spring, so it is worth checking even if you had a permit before. Second, show where you live by uploading a council tax bill or a tenancy agreement dated within the last three months; a photograph taken with your phone is enough. Third, pay the yearly fee by card or in twelve monthly instalments. It starts at 45 euros a year for the first car, with a higher rate for a second car in the same household. Fourth, park: the permit is digital and valid from the next day. Wardens check the number plate against the permit list, so there is no paper to put on the dashboard and nothing to lose. A visitor permit for friends and tradespeople can be added in the same place, by the day or in books of ten days. Paper applications at the town hall are still possible for anyone who cannot apply online, and the staff there will help with the online form if you bring the documents. Questions about zones and permits are answered by the city's parking team on weekdays. The figures and the city in this clip are illustrative.",
"captionLong": "Residents' parking permits in Kettleby can now be applied for online, and the city says most people will be done in about ten minutes, against a wait of up to three weeks for a paper application. There are four steps. First, enter your postcode to find out which permit zone your street belongs to. The zones were redrawn in the spring, when two new zones were added around the station and the hospital, so it is worth checking even if you have had a permit for years. Second, show where you live by uploading a council tax bill or a tenancy agreement dated within the last three months. A photograph taken with your phone is enough, as long as your name, your address and the date can be read. If you have just moved and have neither, a letter from your employer or your bank at the new address will do. Third, pay the yearly fee, by card or in twelve monthly instalments. It starts at 45 euros a year for the first car, with a higher rate for a second car in the same household, and electric cars pay the same as any other: the city decided against a discount, because a parked electric car takes as much room as any other car. Fourth, park. The permit is digital and valid from the next day. Wardens check the number plate against the permit list with a handheld scanner, so there is no paper to put on the dashboard, nothing to lose and nothing to renew by post: you get an email a month before the year runs out, and renewing takes two minutes. A visitor permit for friends and tradespeople can be added in the same place, by the day or in books of ten days. Anyone who cannot apply online can still apply on paper at the town hall or at any of the three district offices, and the staff there will help with the online form if you bring the documents. Questions about zones and permits are answered by the city's parking team on weekdays from 8:00 to 18:00, and the answers to the questions they are asked most often are on the permit page, from what counts as a household to what happens when you change your car: you change the number plate on the permit yourself, online, and the new one is valid within the hour. Businesses on a residents' street, carers who visit every day and people with a disabled badge have permits of their own, which are applied for in the same place with one more document, and the permit page says which one. The city will look at how the online permits are working after the first year, and has asked residents to tell it what could be easier, through the feedback link at the end of the form. The figures and the city in this clip are illustrative.",
"hashtags": [
"parking",
"council",
"permits",
"citylife",
"howto"
]
}
}
}

feedId names this feed and never changes, even when the feed is renamed. eventId is set once per event, so an event delivered twice is published once. occurredAt is when it happened, which is what the freshness limit is measured from.