Skip to content

Commit a719793

Browse files
committed
feat: implement AI agent discovery standards (RFC 8288, DNS-AID, RFC 9727, WebMCP, ChatGPT plugin, Auth.md)
1 parent 6c01227 commit a719793

29 files changed

Lines changed: 793 additions & 0 deletions

web/best-tools.html

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,16 @@
33
<head>
44
<meta name="description" content="A complete, dated guide comparing the best AI podcast intelligence and summarization tools of 2026 including podflow, mapify, snipd, and recall." />
55
<link rel="canonical" href="https://podflow.cc/best-tools" />
6+
<!-- Agent Discovery Links -->
7+
<link rel="api-catalog" href="/.well-known/api-catalog" />
8+
<link rel="agent-skills" href="/.well-known/agent-skills/index.json" />
9+
<link rel="mcp-server-card" href="/.well-known/mcp/server-card.json" />
10+
<link rel="oauth-authorization-server" href="/.well-known/oauth-authorization-server" />
11+
<link rel="oauth-protected-resource" href="/.well-known/oauth-protected-resource" />
12+
<link rel="authorizing-realm" href="/auth.md" />
13+
<link rel="ai-plugin" href="/.well-known/ai-plugin.json" />
14+
<link rel="llms-full" href="/llms-full.txt" />
15+
<link rel="security-policy" href="/.well-known/security.txt" />
616
<!-- Structured Data -->
717
<script type="application/ld+json">
818
{

web/how-it-works.html

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,16 @@
33
<head>
44
<meta name="description" content="A technical deep-dive into the engineering pipeline behind AI-powered podcast summarization and transcription systems." />
55
<link rel="canonical" href="https://podflow.cc/how-it-works" />
6+
<!-- Agent Discovery Links -->
7+
<link rel="api-catalog" href="/.well-known/api-catalog" />
8+
<link rel="agent-skills" href="/.well-known/agent-skills/index.json" />
9+
<link rel="mcp-server-card" href="/.well-known/mcp/server-card.json" />
10+
<link rel="oauth-authorization-server" href="/.well-known/oauth-authorization-server" />
11+
<link rel="oauth-protected-resource" href="/.well-known/oauth-protected-resource" />
12+
<link rel="authorizing-realm" href="/auth.md" />
13+
<link rel="ai-plugin" href="/.well-known/ai-plugin.json" />
14+
<link rel="llms-full" href="/llms-full.txt" />
15+
<link rel="security-policy" href="/.well-known/security.txt" />
616
<!-- Structured Data -->
717
<script type="application/ld+json">
818
{

web/index.html

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,16 @@
1818
</script>
1919
<meta name="description" content="podflow is an AI-powered podcast intelligence tool and local CLI that extracts guest profiles, core ideas, and key insights from Apple Podcasts using Gemini and Claude." />
2020
<link rel="canonical" href="https://podflow.cc/" />
21+
<!-- Agent Discovery & Machine-Readable Metadata Links -->
22+
<link rel="api-catalog" href="/.well-known/api-catalog" />
23+
<link rel="agent-skills" href="/.well-known/agent-skills/index.json" />
24+
<link rel="mcp-server-card" href="/.well-known/mcp/server-card.json" />
25+
<link rel="oauth-authorization-server" href="/.well-known/oauth-authorization-server" />
26+
<link rel="oauth-protected-resource" href="/.well-known/oauth-protected-resource" />
27+
<link rel="authorizing-realm" href="/auth.md" />
28+
<link rel="ai-plugin" href="/.well-known/ai-plugin.json" />
29+
<link rel="llms-full" href="/llms-full.txt" />
30+
<link rel="security-policy" href="/.well-known/security.txt" />
2131
<!-- Structured Data -->
2232
<script type="application/ld+json">
2333
{

web/middleware.ts

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
export default async function middleware(request: Request) {
2+
const acceptHeader = request.headers.get('accept') || ''
3+
4+
const linkHeaderValue = [
5+
'</.well-known/api-catalog>; rel="api-catalog"',
6+
'</.well-known/agent-skills/index.json>; rel="agent-skills"',
7+
'</.well-known/mcp/server-card.json>; rel="mcp-server-card"',
8+
'</.well-known/oauth-authorization-server>; rel="oauth-authorization-server"',
9+
'</.well-known/oauth-protected-resource>; rel="oauth-protected-resource"',
10+
'</auth.md>; rel="authorizing-realm"',
11+
'</.well-known/ai-plugin.json>; rel="ai-plugin"',
12+
'</llms-full.txt>; rel="llms-full"',
13+
'</.well-known/security.txt>; rel="security-policy"',
14+
].join(', ')
15+
16+
if (acceptHeader.includes('text/markdown')) {
17+
const url = new URL(request.url)
18+
let pathname = url.pathname
19+
20+
if (pathname === '/' || pathname === '/index.html') {
21+
pathname = '/index.md'
22+
} else if (!pathname.endsWith('.md') && !pathname.includes('.')) {
23+
pathname = `${pathname}.md`
24+
}
25+
26+
try {
27+
const markdownUrl = new URL(pathname, url.origin)
28+
const res = await fetch(markdownUrl)
29+
if (res.ok) {
30+
const text = await res.text()
31+
return new Response(text, {
32+
status: 200,
33+
headers: {
34+
'Content-Type': 'text/markdown; charset=utf-8',
35+
'x-markdown-tokens': '850',
36+
'Link': linkHeaderValue,
37+
'Vary': 'Accept',
38+
},
39+
})
40+
}
41+
} catch {
42+
// Fallback if fetch fails
43+
}
44+
}
45+
}

web/pricing-compare.html

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,16 @@
33
<head>
44
<meta name="description" content="An analytical pricing comparison of the top AI podcast summarizers and assistant tools of 2026. Compare hourly rates and features." />
55
<link rel="canonical" href="https://podflow.cc/pricing-compare" />
6+
<!-- Agent Discovery Links -->
7+
<link rel="api-catalog" href="/.well-known/api-catalog" />
8+
<link rel="agent-skills" href="/.well-known/agent-skills/index.json" />
9+
<link rel="mcp-server-card" href="/.well-known/mcp/server-card.json" />
10+
<link rel="oauth-authorization-server" href="/.well-known/oauth-authorization-server" />
11+
<link rel="oauth-protected-resource" href="/.well-known/oauth-protected-resource" />
12+
<link rel="authorizing-realm" href="/auth.md" />
13+
<link rel="ai-plugin" href="/.well-known/ai-plugin.json" />
14+
<link rel="llms-full" href="/llms-full.txt" />
15+
<link rel="security-policy" href="/.well-known/security.txt" />
616
<!-- Structured Data -->
717
<script type="application/ld+json">
818
{

web/proof.html

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,16 @@
33
<head>
44
<meta name="description" content="A comprehensive technical case study and benchmark comparing local and cloud AI podcast transcription and key takeaway quality." />
55
<link rel="canonical" href="https://podflow.cc/proof" />
6+
<!-- Agent Discovery Links -->
7+
<link rel="api-catalog" href="/.well-known/api-catalog" />
8+
<link rel="agent-skills" href="/.well-known/agent-skills/index.json" />
9+
<link rel="mcp-server-card" href="/.well-known/mcp/server-card.json" />
10+
<link rel="oauth-authorization-server" href="/.well-known/oauth-authorization-server" />
11+
<link rel="oauth-protected-resource" href="/.well-known/oauth-protected-resource" />
12+
<link rel="authorizing-realm" href="/auth.md" />
13+
<link rel="ai-plugin" href="/.well-known/ai-plugin.json" />
14+
<link rel="llms-full" href="/llms-full.txt" />
15+
<link rel="security-policy" href="/.well-known/security.txt" />
616
<!-- Structured Data -->
717
<script type="application/ld+json">
818
{
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"$schema": "https://agentskills.io/schemas/v0.2.0/index.json",
3+
"version": "0.2.0",
4+
"skills": [
5+
{
6+
"name": "podcast-library-miner",
7+
"type": "tool",
8+
"description": "Extract guest profiles, ideas, and takeaways from macOS Apple Podcasts SQLite library or public RSS feeds using Podflow.",
9+
"url": "https://podflow.cc/.well-known/agent-skills/podcast-library-miner/SKILL.md",
10+
"sha256": "339710c4185fd77b4ecd6d04dc88bc5feb9f0e711b50ecd4ca457bce5dd6b169"
11+
},
12+
{
13+
"name": "podcast-summarizer",
14+
"type": "service",
15+
"description": "Generate structured AI summaries, transcripts, and speaker diarization from audio feeds.",
16+
"url": "https://podflow.cc/.well-known/agent-skills/podcast-summarizer/SKILL.md",
17+
"sha256": "d636c8e577197d028b8abb7d66a1450af7c180fd13b752a7c5cb54e5d7fd8211"
18+
}
19+
]
20+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
---
2+
name: podcast-library-miner
3+
description: Extract guest profiles, ideas, and takeaways from macOS Apple Podcasts SQLite library or public RSS feeds using Podflow.
4+
type: tool
5+
version: 0.2.0
6+
---
7+
8+
# Podcast Library Miner Skill
9+
10+
This skill allows AI agents to interface with the Podflow engine to mine podcast episodes for guest biographies, action items, and claims.
11+
12+
## Usage
13+
Agents can run local CLI commands or call MCP server tools:
14+
```bash
15+
podflow sync --local --output ./digest
16+
```
17+
18+
## Input Parameters
19+
- `feedUrl` (string): RSS feed URL or local SQLite library path.
20+
- `local` (boolean): Use local Whisper and Ollama LLM models.
21+
- `apiKey` (string): Optional Claude / Gemini / OpenAI API key.
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
---
2+
name: podcast-summarizer
3+
description: Generate structured AI summaries, transcripts, and speaker diarization from audio feeds.
4+
type: service
5+
version: 0.2.0
6+
---
7+
8+
# Podcast Summarizer Skill
9+
10+
This skill provides automatic speaker diarization, topic segmentation, and key takeaway generation for AI agents.
11+
12+
## Capabilities
13+
- Speaker identification (Host vs Guest)
14+
- Key quote extraction with timecodes
15+
- Actionable insight generation formatted in Markdown
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"schema_version": "v1",
3+
"name_for_human": "Podflow Podcast Intelligence",
4+
"name_for_model": "podflow",
5+
"description_for_human": "Extract guest profiles, ideas, and insights from Apple Podcasts libraries and RSS feeds.",
6+
"description_for_model": "Plugin for searching podcast feeds, mining guest bios, extracting key takeaways, and interacting with Podflow podcast intelligence APIs.",
7+
"auth": {
8+
"type": "none"
9+
},
10+
"api": {
11+
"type": "openapi",
12+
"url": "https://podflow.cc/api/openapi.json"
13+
},
14+
"logo_url": "https://podflow.cc/favicon.svg",
15+
"contact_email": "contact@totalaudiopromo.com",
16+
"legal_info_url": "https://podflow.cc/ai.txt"
17+
}

0 commit comments

Comments
 (0)