Documents

perplexity-downloader

Try it

Download and save Perplexity.ai conversations as individual Markdown files. One thread = one .md file. Processes threads sequentially. Supports single thread, URL lists, or full history export. Triggers on "download perplexity thread", "export perplexity history", "save all perplexity threads", or any request to capture Perplexity conversations.

What it does

Downloads Perplexity.ai conversation threads and saves each as an individual Markdown file. Processes sequentially, one thread per file.

The skill document

Perplexity Thread Downloader

Downloads Perplexity.ai conversation threads and saves each as an individual Markdown file. Processes sequentially, one thread per file.

Overview

This skill handles three export modes:

  1. Single Thread — Download one thread by URL → one .md file
  2. Bulk from URL List — Download multiple threads from a list → one .md file per thread, processed sequentially
  3. Full History Export — Extract all threads from your Perplexity history → one .md file per thread, processed one-by-one

Each thread becomes its own Markdown file. All files saved to ~/perplexity-downloader/outputs/.


Mode Detection

When the user invokes the skill, detect their intent:

User saysMode
"Download this thread: [URL]"Single Thread
"Export all my Perplexity threads"Full History Export
"Download these threads: [list of URLs]"Bulk from URL List
"Archive my Perplexity history"Full History Export

Ask clarifying questions if intent is ambiguous.


Single Thread Download

Workflow

  1. Get URL → Ask user for Perplexity thread URL (e.g., https://perplexity.ai/search/...)
  2. Fetch → Use web_fetch(url, html_extraction_method="markdown")
  3. Parse → Extract question, answer, follow-ups, sources
  4. Build Markdown → Structure as shown below
  5. Save → One .md file per thread
  6. Present → Show download link

Markdown Format (per thread)

# [Thread Title / First Question]

> Saved from Perplexity.ai  
> URL: [original URL]  
> Date: [today's date]

---

## Turn 1

### Question
[user's question text]

### Answer
[AI answer text]

#### Sources
1. [Source title](URL)
2. [Source title](URL)

---

## Turn 2

### Question
[follow-up question]

### Answer
[AI answer]

#### Sources
...

Formatting Rules

  • Use ## for each conversation turn
  • Preserve all source links exactly as found
  • Keep inline citations like [1] if present in answer text
  • Remove Perplexity UI text ("Ask follow-up", "Share", "Copy", etc.)
  • Sanitize filename: lowercase, spaces → hyphens, remove special chars

Output Filename

~/perplexity-downloader/outputs/[YYMMDD]-[sanitized-title].md

Example:

260423-what-is-the-best-way-to-learn-japanese.md

Bulk Download from URL List

Use when user provides multiple thread URLs.

Workflow

  1. Collect URLs → Ask user to paste newline- or comma-separated list of URLs
  2. Loop sequentially → For each URL:
    • Fetch the thread
    • Parse and clean
    • Build Markdown
    • Save to individual .md file
    • Show progress: "Downloaded 3/10 threads..."
  3. Create index → Build index.md listing all downloaded threads
  4. Present → Show all files for download

Example URL Format

https://www.perplexity.ai/search/how-to-learn-python
https://www.perplexity.ai/search/best-practices-for-rest-apis
https://www.perplexity.ai/search/docker-vs-kubernetes

Index File (index.md)

# Perplexity Thread Archive

**Export Date:** 2026-04-23  
**Total Threads:** 3

## Threads

1. [How to learn Python](./260423-how-to-learn-python.md)
2. [Best practices for REST APIs](./260423-best-practices-for-rest-apis.md)
3. [Docker vs Kubernetes](./260423-docker-vs-kubernetes.md)

Output Files

~/perplexity-downloader/outputs/
├── index.md
├── 260423-how-to-learn-python.md
├── 260423-best-practices-for-rest-apis.md
└── 260423-docker-vs-kubernetes.md

Full History Export

Use to download ALL threads from user's Perplexity account.

Prerequisites

User must be logged into Perplexity.ai in their browser.

Workflow

  1. Get History Page → Ask user to do one of:
    • Visit https://www.perplexity.ai/ (logged in), scroll history sidebar to load all threads, copy/paste the page
    • Or provide the URL to their Perplexity home page
  2. Extract Thread URLs → Parse the content for all thread URLs (pattern: https://perplexity.ai/search/...)
    • Deduplicate
    • Report count: "Found 42 threads in your history"
  3. Download Each Thread Sequentially → Loop through each URL:
    • Fetch thread page
    • Parse and clean
    • Build Markdown
    • Save to individual .md file
    • Show progress: "Downloaded 15/42 threads..."
  4. Create Archive Structure → Build folder with index + all thread files
  5. Present → Offer as folder download or batch of files

Output Structure

~/perplexity-downloader/outputs/perplexity-archive-2026-04-23/
├── index.md
├── perplexity-thread-001.md
├── perplexity-thread-002.md
├── perplexity-thread-003.md
└── [... more threads ...]

Archive Index (index.md)

# Perplexity Complete Archive

**Export Date:** 2026-04-23  
**Total Threads:** 42  
**Date Range:** 2025-01-15 to 2026-04-23

## All Threads

1. [What is the best way to learn Japanese?](./perplexity-thread-001.md) — 2026-04-20
2. [How to optimize Docker builds?](./perplexity-thread-002.md) — 2026-04-19
3. [Best practices for REST API design](./perplexity-thread-003.md) — 2026-04-15
...
[full list with dates]

Processing Speed

For sequential processing:

  • Single thread: ~2-5 seconds (fetch + parse)
  • 10 threads: ~30-60 seconds (with rate limiting)
  • 50 threads: ~5-10 minutes
  • 100+ threads: 15-30 minutes (may want to offer date-range filtering)

Show progress continuously so user knows it's working.


Handling Edge Cases

SituationWhat to do
Page returns empty or access deniedThread may be private/login-gated. Ask user to paste the page text manually.
Thread has only one turnUse same format, just one ## Turn 1 section.
Very long thread (10+ turns)Process all turns; note turn count in file header.
Sources section missingOmit #### Sources block for that turn.
Non-English threadPreserve original language; do not translate.
Rate limited during bulk downloadPause 5 seconds between requests. Inform user of slowdown.
Some URLs fail during bulk exportSkip failed URLs, log them, report at end: "Downloaded 40/42 threads; 2 failed (access denied)"
History page doesn't yield URLsAsk user to manually provide thread URLs or copy-paste page content for manual parsing.

Manual Fallback (if web_fetch fails)

If web_fetch cannot retrieve a page (login wall, access denied, etc.):

"I wasn't able to fetch this thread automatically — it may require a login. You can copy the full page text and paste it here, and I'll format it into Markdown."

When user pastes raw text, apply the same parsing and formatting logic to create the .md file.

Related skills

Join a video meeting as an AI bot with voice, avatar, and screenshare across four operating modes.

by johnpatternai22 installs8 stars

Stores durable facts in a categorized, plain-markdown vault on disk, alongside your agent's built-in memory.

by Iván559 installs18 stars

Generate and edit Draw.io, Mermaid, and Excalidraw diagrams from natural language using a structured JSON spec.

by nssa.io1.0k installs47 stars

Find why your productivity system keeps failing, then apply the smallest fix — capacity math, bottleneck routing, durable local notes.

by Iván855 installs69 stars

Fetch raw ad creative, app, ranking, and revenue data from AdMapix as structured JSON.

by fly0pants4.3k installs296 stars

More from j3ffyang

Browse all skills

Polish a technical blog draft into an 800–1000 word, 3–4 section zh-CN article, preserve technical terms/code, and generate consistent hero + per-section image prompts when the user asks to polish and translate a blog with images.

by j3ffyang28 installs

Generate video from supplied image using Veo-3.0 async API. Gemini vision analyzes image, Veo creates video via predictLongRunning. All outputs in ~/.openclaw/workspace/tibetanProc/ with yymmddHHMM prefix.

by j3ffyang17 installs

Read a plain Markdown file (e.g. 260321_openclawConfig.md), generate header and section images using the default OpenClaw image model and API key from ~/openclaw/.env, create a new *_img.md copy with embedded PNGs, and move all generated images into an img/ folder next to the original file.

by j3ffyang13 installs

Polish a technical blog draft into a 1000–1200 word, 4–5 section en-US article, preserve technical terms/code, and generate one consistent hero image prompt.

by j3ffyang17 installs

Help the user draft, review, and polish blog posts in Markdown, keeping the original languages and informal tone.

by j3ffyang25 installs

Generate a daily AI news newsletter from fresh web sources. Use when the user asks for a current AI digest, AI news roundup, curated newsletter, or daily AI...

by j3ffyang16 installs