本文へ移動
cccskills
無料GitHub で公開

wayback-machine-raw-content-id-modifier

Fix JSON parse errors when fetching archived API responses from Wayback Machine. Use when: (1) Getting "Expecting value: line 1 column 1 (char 0)" JSON decode errors from archived URLs, (2) Wayback returns HTML instead of expected JSON/raw content, (3) Crawling archived REST APIs or JSON endpoints from web.archive.org. The `id_` modifier returns raw content without the Wayback toolbar wrapper.

インストール方法を見る

含まれるファイル(1)

  • SKILL.md3.7 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Wayback Machine Raw Content with id_ Modifier

Problem

When fetching archived JSON API endpoints from the Wayback Machine, you get HTML-wrapped content with the Wayback toolbar instead of the raw JSON response. This causes JSON parse errors like "Expecting value: line 1 column 1 (char 0)" because the response starts with <!DOCTYPE html> instead of valid JSON.

Context / Trigger Conditions

  • Fetching archived API endpoints from web.archive.org/web/{timestamp}/{url}
  • JSON parsing fails with "Expecting value: line 1 column 1 (char 0)"
  • Response content starts with HTML instead of expected JSON
  • Crawling archived REST APIs, JSON feeds, or any non-HTML content from Wayback
  • Using Python json.loads(), response.json(), or similar JSON parsing

Solution

Add id_ after the timestamp in the Wayback URL to get raw content:

Default (HTML-wrapped):

https://web.archive.org/web/20170112012313/https://vine.co/api/users/profiles/123

Raw content (add id_):

https://web.archive.org/web/20170112012313id_/https://vine.co/api/users/profiles/123

Code Fix Pattern

# BEFORE (broken - returns HTML)
url = f"https://web.archive.org/web/{timestamp}/https://example.com/api/data"

# AFTER (works - returns raw JSON)
url = f"https://web.archive.org/web/{timestamp}id_/https://example.com/api/data"

Other Wayback Modifiers

  • id_ - Raw/identity (no modifications, returns original content)
  • if_ - Iframe embed mode
  • js_ - JavaScript rewriting mode
  • cs_ - CSS rewriting mode
  • im_ - Image mode

Verification

  1. Test the URL with curl to see actual response:

    # Without id_ - shows HTML with Wayback toolbar
    curl -s "https://web.archive.org/web/20170112012313/https://example.com/api/data" | head -5
    
    # With id_ - shows raw JSON
    curl -s "https://web.archive.org/web/20170112012313id_/https://example.com/api/data" | head -5
    
  2. Verify JSON parsing works:

    import json
    import urllib.request
    
    url = f"https://web.archive.org/web/{timestamp}id_/{api_url}"
    with urllib.request.urlopen(url) as resp:
        data = json.loads(resp.read())  # Should work now
    

Example

Crawling archived Vine API profiles:

WAYBACK_BASE = "https://web.archive.org/web"

def fetch_profile(user_id: str, timestamp: str):
    # Use id_ modifier to get raw JSON instead of HTML-wrapped content
    url = f"{WAYBACK_BASE}/{timestamp}id_/https://vine.co/api/users/profiles/{user_id}"

    with urllib.request.urlopen(url) as resp:
        data = json.loads(resp.read())
        return data['data']  # Now works correctly

Notes

  • The id_ modifier works for any content type, not just JSON (images, CSS, JS, etc.)
  • Some archived content may still fail if it was never properly captured
  • CDX API queries (for finding archived URLs) don't need the modifier
  • Rate limit requests to archive.org (5+ seconds between requests recommended)
  • Empty responses (0 bytes) indicate the archive entry exists but content wasn't captured

References

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Fix ArgoCD ExternalSecret deployment failing with "namespace X is not permitted in project Y". Use when: (1) ExternalSecret shows OutOfSync in ArgoCD but won't sync, (2) ArgoCD application status shows "namespace X is not permitted in project 'infrastructure'", (3) ExternalSecret targets a namespace managed by a different ArgoCD project, (4) Using apps-of-apps pattern with separate infrastructure and application projects.

日本語の概要は準備中です。原文の説明を表示しています。

divinevideo/divine-mobile2662026年10月12日 更新

Art direction for any content — reads text, PDF, Word, HTML, PPT, then proposes 2-3 creative directions with photography style, mood, and visual language. After selection, generates AI image prompts and visual briefs section-by-section. Use when the user shares content and needs visual direction, image sourcing, or creative direction for any material.

日本語の概要は準備中です。原文の説明を表示しています。

divinevideo/divine-mobile2662026年10月12日 更新

Fix "Null check operator used on a null value" errors when an object is set to null during an async await. Use when: (1) Object reference is nullified while awaiting, (2) Code accesses object with ! after await returns, (3) Cancel/dispose operations run concurrently with async operations on same object. Solution: capture local reference before await.

日本語の概要は準備中です。原文の説明を表示しています。

divinevideo/divine-mobile2662026年10月12日 更新

Add custom metadata headers (x-amz-meta-*) to AWS v4 signed requests for GCS S3-compatible API. Use when: (1) Adding custom metadata to GCS uploads via S3 API, (2) Getting signature mismatch errors after adding new headers, (3) x-amz-meta-* headers being ignored or causing 403 errors. Custom headers MUST be included in canonical headers and signed headers list.

日本語の概要は準備中です。原文の説明を表示しています。

divinevideo/divine-mobile2662026年10月12日 更新

Fix password/secret authentication failures caused by trailing newlines when creating Google Cloud secrets (or similar) with bash here-strings. Use when: (1) Password authentication fails with correct password, (2) Secret created with `<<< "value"` syntax, (3) Error like "password authentication failed" or "invalid token" despite correct value. Bash here-strings (`<<<`) add a trailing newline that corrupts secrets.

日本語の概要は準備中です。原文の説明を表示しています。

divinevideo/divine-mobile2662026年10月12日 更新

Fix silent video/media processing failures caused by URL extraction code that filters on file extensions (.mp4, .webm, .webp). Use when: (1) Media moderation, transcoding, or analysis silently skips files from Blossom or content-addressed storage servers, (2) URL extraction from Nostr event tags (imeta, r tags) drops URLs without recognized extensions, (3) CDN fallback URLs append .mp4 but the actual server uses extensionless content-addressed paths like /{sha256}. Common in Nostr video events (kind 34236) where different clients use different URL formats.

日本語の概要は準備中です。原文の説明を表示しています。

divinevideo/divine-mobile2662026年10月12日 更新

divinevideo のスキルをすべて見る

このスキルの問題を報告する