# PJM Interconnection — news releases (PDF) + Inside Lines — connector definition (see docs/connectors/pjm.md) id: pjm name: "PJM Interconnection — news releases & Inside Lines" domain: www.pjm.com kind: utility mode: hybrid priority: 2 license: "Corporate press releases and newsroom articles (PJM Interconnection, L.L.C.); facts and links only" attribution: "PJM Interconnection (pjm.com, insidelines.pjm.com)" homepage: https://www.pjm.com/about-pjm/newsroom notes: "Largest US grid operator (13 states + DC, incl. Northern Virginia). News releases are PDF files linked from the announcements page (the www.pjm.com RSS endpoint returns an empty channel); Inside Lines is the WordPress newsroom with an RSS feed (robots.txt allows everything but /wp-admin/; served at L1 to the crawler UA, but a generic 'Mozilla/5.0 (compatible; …)' UA gets 403 from its WAF). Hot-weather / operations updates mention data centers in passing and are archived as events only." coverage: { countries: ["US"] } fetch: level: 1 maxLevel: 2 rpm: 10 concurrency: 1 respectRobots: true maxCreditsPerRun: 0 discovery: seeds: - { url: "/about-pjm/newsroom/announcements-and-news-releases", group: seed, pageType: news_index } rss: - "https://insidelines.pjm.com/feed/" follow: ["/-/media/DotCom/about-pjm/newsroom/\\d{4}-releases/[^/]+\\.pdf$"] include: - "/-/media/DotCom/about-pjm/newsroom/\\d{4}-releases/[^/]+\\.pdf$" - "^https://insidelines\\.pjm\\.com/[a-z0-9-]+/?$" exclude: ["insidelines\\.pjm\\.com/(category|tag|page|author|feed|wp-)"] classify: - { pattern: "/newsroom/\\d{4}-releases/[^/]+\\.pdf$", group: newsroom, pageType: press_release, priority: 70 } - { pattern: "^https://insidelines\\.pjm\\.com/[a-z0-9-]+/?$", group: newsroom, pageType: press_release, priority: 70 } schedule: newsroom: daily rss: daily seed: daily extractors: news: pageTypes: [press_release, project_announcement, expansion, acquisition, construction_update, planning_document, power_infrastructure, utility_announcement, closure, cloud_region, financial_disclosure, facility_page, operator_page, unknown] kind: news_event parser: news_press_release_v1 params: { keepText: true }