Green Software Foundation
Draft — this content is not yet listed on the site. Only people with a direct link can see it.

Rich Content Showcase: Markdown Embed Examples

GSF Web Team

This article demonstrates every rich content directive available in our Markdown articles. Use this as a reference guide when writing articles. None of these require MDX — they all work in plain .md files.

Tip

This article has published: false so it won’t appear on the site, in sitemaps, or in search results. It’s just for internal reference.


#Video Embeds

#YouTube

Drop a YouTube video into any article with ::youtube{id="VIDEO_ID"}. The video ID is the part after v= in the YouTube URL.

Here’s the GSF Global Summit 2024 keynote:

GSF Global Summit 2024 — full keynote

You can also link to a specific start time (in seconds):

Measuring frontend energy consumption — jump to the demo

And here’s one using a short youtu.be-style ID:

Celebrating the graduation of the Carbon-Aware SDK

Syntax reference:

::youtube{id="VIDEO_ID"}
::youtube{id="VIDEO_ID" start="120" caption="Optional caption text"}

#Google Embeds

These are particularly useful for reports, presentations, and data that we already maintain in Google Workspace.

#Google Slides

Perfect for embedding presentations and decks directly in articles. The writer just needs the presentation ID from the URL (the long string between /d/ and /edit).

GSF 2022 Year in Review — slide deck

Another example — the GSF Global Summit Tokyo presentation:

What is Green Software — GSF Global Summit 2022 Tokyo

Syntax reference:

::google-slides{id="PRESENTATION_ID"}
::google-slides{id="PRESENTATION_ID" caption="Optional caption"}

#Google Docs

Embed a document for inline reading — great for policy documents, submissions, or shared reports.

COP27 Book of News

Syntax reference:

::google-docs{id="DOCUMENT_ID"}
::google-docs{id="DOCUMENT_ID" title="Accessible title" caption="Optional caption"}

#Google Sheets

Useful for embedding data tables, carbon calculations, or research data.

Cloud Carbon Footprint — Embodied Carbon Data

Syntax reference:

::google-sheets{id="SPREADSHEET_ID"}
::google-sheets{id="SPREADSHEET_ID" caption="Optional caption"}

#Google Drive Files (PDFs, reports, etc.)

For files hosted on Google Drive (like our annual reports), use ::google-drive. This embeds the Google Drive preview viewer, which handles PDFs, images, and many other file types.

GSF Annual Report 2024

Here’s the 2022 annual report too:

GSF Annual Report 2022

Syntax reference:

::google-drive{id="FILE_ID"}
::google-drive{id="FILE_ID" caption="Optional caption"}

Note

The file ID is the long string in the Google Drive URL between /d/ and /view. For example, in https://drive.google.com/file/d/1grzqNwVt3eaOfkLAYkv2rAHDq9Nc6mib/view, the ID is 1grzqNwVt3eaOfkLAYkv2rAHDq9Nc6mib.


#PDF Embeds

For PDFs hosted elsewhere (not on Google Drive), use ::pdf. This embeds the browser’s native PDF viewer with a download fallback.

Measuring and Reducing Carbon Emissions of Machine Learning

Google Cloud carbon footprint methodology paper

Syntax reference:

::pdf{src="https://example.com/paper.pdf" title="Accessible title"}
::pdf{src="/local/path/to/file.pdf" title="Local PDF" caption="Optional caption"}

#Buttons (CTAs)

Use ::button to add a centred call-to-action button anywhere in an article. Two variants are available: primary (filled) and outline.

Syntax reference:

::button{href="/path/" label="Button text"}
::button{href="/path/" label="Button text" variant="outline"}

Use ::link-card to create a visually rich link preview — like how Notion or Slack unfurl links. Provide the metadata yourself for full control.

With an image:

Syntax reference:

::link-card{href="URL" title="Title" description="Description text"}
::link-card{href="URL" title="Title" description="..." image="https://example.com/og-image.png"}

#Article Cross-Links (Auto-Reading)

The ::article directive is the easiest way to link to another GSF article. Just provide the slug — the title and summary are automatically read from the article’s frontmatter at build time. No need to type them out.

Syntax reference:

::article{slug="article-slug-here"}

The slug is the folder name of the article in src/content/articles/en/. That’s it — one line, and you get a styled card with the real title and summary pulled automatically.


#Content Cards

Wrap any Markdown content in a :::card container to give it a bordered card treatment. Useful for highlighting key information, quotes, or callouts.

#Key Takeaway

The Software Carbon Intensity (SCI) specification provides a consistent approach to measuring the carbon emissions of software systems. It’s now an ISO standard (ISO/IEC 21031:2024).

You can also nest embeds inside cards:

#Watch: Can AI Truly Be Green?

A deep dive into AI’s environmental impact with the GSF team.

Syntax reference:

:::card
Any **Markdown** content here — headings, lists, images, even other embeds.
:::

#Combining Everything

Here’s a realistic example of how you might use these in an actual article section:


#Our 2024 Annual Report is Live

We’re proud to share the Green Software Foundation’s 2024 Annual Report, covering our progress across standards, tooling, and community growth.

GSF Annual Report 2024 — full report

Watch the highlights from our Global Summit where we presented these results:

GSF Global Summit 2024

#Want to get involved?

The Green Software Foundation is an open community. Whether you’re a developer, researcher, or sustainability professional, there’s a place for you.


#Existing Features (still available)

These were already supported before the embed directives — they still work exactly the same.

#GitHub-style Alerts

Note

This is a note — useful for supplementary information.

Warning

This is a warning — something the reader should be careful about.

Tip

This is a tip — helpful advice for the reader.

Important

This is an important notice — critical information.

Caution

This is a caution — potential danger or significant risk.

#Callout Blocks (legacy)

This is a legacy note callout using the :::note directive syntax.

This is a legacy tip callout.

#Tables (GFM)

DirectiveTypeUse Case
::youtubeVideoYouTube embeds
::vimeoVideoVimeo embeds
::google-slidesDocumentPresentations
::google-docsDocumentDocuments
::google-sheetsDocumentSpreadsheets
::google-driveDocumentDrive files (PDFs, etc.)
::pdfDocumentExternal PDFs
::buttonInteractiveCTA buttons
::link-cardInteractiveRich link previews
:::cardLayoutContent card wrapper

#Math (KaTeX)

The SCI formula: SCI=((E×I)+M)SCI = ((E \times I) + M) per functional unit RR.


#Quick Reference for Writers

Video: Just need the video ID from the URL.

::youtube{id="dQw4w9WgXcQ"}
::youtube{id="dQw4w9WgXcQ" start="60" caption="Starting at 1 minute"}

Google Workspace: Just need the document ID from the URL.

::google-slides{id="LONG_ID_HERE"}
::google-docs{id="LONG_ID_HERE"}
::google-sheets{id="LONG_ID_HERE"}
::google-drive{id="LONG_ID_HERE"}

PDF: Full URL to the PDF file.

::pdf{src="https://example.com/paper.pdf" title="Paper Title"}

Buttons: Centre-aligned call-to-action.

::button{href="/path/" label="Click Me"}
::button{href="/path/" label="Click Me" variant="outline"}

Link cards: Rich preview card.

::link-card{href="URL" title="Title" description="Description"}

Article cross-link: Auto-reads title and summary from frontmatter.

::article{slug="article-folder-name"}

Content card: Wrap anything in a card.

:::card
Your content here.
:::

All directives also accept an optional caption="..." attribute for a styled caption below the embed.

Stay up to date

Get the latest green software news, articles, and industry insights from the GSF in our weekly newsletter.

Every member's journey starts with a conversation

Tell us what you're trying to solve. We'll tell you how membership can help.