public function discover($url, array $args = [])
    {
        $url = trim($url);
        $html = HtmlExplorer::fromWeb($url, $this->http);

        $typePattern = '#^('.join('|', array_keys($this->formats)).')\+oembed$#';

        $nodes = $html->findTags('link');
        foreach ($nodes as $node) {
            $rel = strtolower(trim($node->getAttribute('rel')));
            $type = strtolower(trim($node->getAttribute('type')));

            if (in_array($rel, ['alternate', 'alternative']) && preg_match($typePattern, $type, $matches)) {
                $url = trim($node->getAttribute('href'));
                $result = $this->queryProvider($url, null, null, $args);
                if ($result->success) {
                    $parser = $this->formats[$matches[1]];
                    return $parser($result->data);
                }
            }
        }

        return false;
    }