Author: Miles “McDeezy” McDonald

  • Money Tree

    The Mcdeezy money tree

    Every money page and hub on mcdeezy.com, and the posts that feed each one

    Drawn from the live internal links across 1 published posts and 5 pages, crawled 16 August 2026. Nothing is hand-placed: a branch is thick because posts link to it, and bare because none do.

    Read it bottom-up.Roots — off-site proofTrunk — the domainHow we do it — the method hubsBare or broken — needs a leafBranch thickness = posts feeding it

    Swipe the diagram sideways, or read the same tree as text below it.

    The Mcdeezy money treeA tree diagram of mcdeezy.com. The trunk is the domain, each branch is a money page or definitive hub, and each leaf is a blog post that links up to it. The full structure is repeated as a text outline directly below this diagram.ON YOUR SITE — what you controlOFF YOUR SITE — what the market says (the roots)bare — no posts link herePAGEAboutBare0 posts feed thisbare — no posts link herePAGEConnectBare0 posts feed thisbare — no posts link herePAGEXmlrpc.PhpBare0 posts feed thismcdeezy.com1 posts · 5 pages

    The same tree in text — every node is a live link

    How we do it — the method hubs

    The definitive articles. Each one owns a concept, and every post that demonstrates that concept links up to it.

    AboutBare

    page · 0 posts link here

    No posts link here yet.

    ConnectBare

    page · 0 posts link here

    No posts link here yet.

    Xmlrpc.PhpBare

    page · 0 posts link here

    No posts link here yet.

    Method: every published post and page was fetched through the WordPress REST API and its outbound internal links extracted from the rendered body. A leaf counts once per post, only when that post links to the branch URL. Redirects were followed and reported rather than silently merged. Crawled 16 August 2026.

    Findings — each defect names a department

    Defect Where Routes to
    Bare branch About, Connect, Xmlrpc.Php Content — one customer story per bare offer
    Shallow roots mcdeezy.com Entity / authority — Knowledge Panel and sameAs

    Action list — 16 August 2026

    Run this on your own site

    Two doors, one diagnosis

    This tree is a scan, and a scan is only worth running if it tells you which department to walk to. Both doors below start from the same diagnosis. Take the skill file and run it yourself, or have us run it and hand you the findings — either way the routing table underneath says where each finding goes.

    1 · Do it yourself

    Take the skill file and run it

    A complete, runnable skill file — the five layers, the seven-step method, the six defects, and the nine-check QA gate. Hand it to Claude, ChatGPT, Gemini or any agent with read access to your site. Apache-2.0: copy it, fork it, ship it inside your own product.

    Download map-your-money-tree.skill.md

    2 · Have it run for you

    Have an agent run it with you

    The scan is only worth running if it tells you which department to walk to. Start at About — we crawl mcdeezy.com, draw the tree, name the defects with the exact URLs and counts, and route you to whichever of the things below you actually need.

    Go to About

    What the scan finds, and which department it routes to

    What your tree shows What it means Where it goes
    A bare branch A live money page with zero posts linking to it. Nothing you have published has ever pointed a visitor at the thing you sell. About
    A split URL Two live pages for one offer — usually a page and a post. Internal links divide between them and neither ranks as well as one would. About
    Redirect tax Dozens or hundreds of internal links pointing at a URL that 301s somewhere else. It works, so nobody fixes it. About
    A broken target Internal links pointing at a 404. Invisible in analytics, because nobody clicks a link they cannot see. Quick Audit
    An inverted tree Leaf counts fall as price rises. The cheapest offer carries the most proof and the most expensive carries none. About
    A canopy with no branches Hundreds of posts linking to each other and almost nothing structural. Looks productive, converts nothing. Personal Brand Site Builder
    Shallow roots No Knowledge Panel, no consistent sameAs, no third-party corroboration. The canopy is fine; the soil is loose. Knowledge Panels
    map-your-money-tree.skill.md — the full skill file, verbatim (for agents and for copy-paste)
    ---
    name: map-your-money-tree
    description: Draw any website as a money tree — trunk (domain), limbs (offer groups), branches (money pages and definitive hubs), leaves (posts that link up to them) — measured from the site's real internal links, then diagnose the six defects a sitemap hides and output a dated publishing plan. Use when someone asks "which of my pages actually make money", "why isn't my content converting", "map my site", "audit my internal links", or when a monthly MAA needs a structural section.
    author: Dennis Yu — BlitzMetrics / Local Service Spotlight
    license: Apache-2.0
    version: 1.0 (2026-08-15)
    references:
      - https://blitzmetrics.com/money-tree/
      - https://blitzmetrics.com/seo-tree/
      - https://blitzmetrics.com/money-pages-vs-blog-posts/
      - https://blitzmetrics.com/maa/
      - https://blitzmetrics.com/9-triangles-framework-scalable-home-service-businesses/
      - https://localservicespotlight.com/quick-audit/
    ---
    
    # Map Your Money Tree
    
    **Use this when** you need to know which pages on a site actually earn, and which of the
    content already published is feeding them. Not "how much traffic does this page get" —
    *what is connected to what, and in which direction.*
    
    This is the structural half of [MAA](https://blitzmetrics.com/maa/). The leaf counts are
    the Metrics. The bare and split branches are the Analysis. The publishing list at the end
    is the Action. Redraw it monthly and the delta is the report.
    
    ## The one idea
    
    **A leaf counts only when it actually links.**
    
    Not when it is topically related. Not when it sits in the right category. Not when someone
    meant to link it. The link is the measurement; everything else is a plan. Every number this
    skill produces must be reproducible by re-running the crawl.
    
    ---
    
    ## The five layers
    
    | Layer | What it is | How you know |
    |---|---|---|
    | **Root** | Off-site proof of the entity: Knowledge Panel, Wikidata, LinkedIn, YouTube, podcast appearances, press, review profiles. | It is not on the domain and you cannot edit it directly. |
    | **Trunk** | The domain and its home page — the entity home. | It is the URL you would put on a business card. |
    | **Limb** | A group of branches sharing an audience or a job — the offers, the method, a vertical. | It is how the site's own services page already groups things. |
    | **Branch** | A money page, or a definitive article that owns a concept. | Someone converts on it, or it is the one canonical page for a topic. |
    | **Leaf** | A post that links **up** to a branch. | It is dated, it flows through a feed, and its body contains a link to its branch. |
    
    Roots and trunk are **Why**. Limbs and method branches are **How**. Money branches are
    **What**. Leaves are **Proof**. A stranger — or a language model — should be able to read
    all four off one page.
    
    ---
    
    ## Inputs
    
    - The domain.
    - Read access to every published URL and its **rendered** body (not raw — page-builder and
      shortcode markup must be expanded so the links inside are visible).
    - The site's own services page and main navigation, for the branch list and its grouping.
    - Optional: the previous run's tree, for the delta.
    
    ---
    
    ## Procedure
    
    ### 1. Inventory every published URL
    Posts and pages both, with id, URL, title, publish date, and rendered body.
    
    On WordPress:
    ```
    GET /wp-json/wp/v2/posts?per_page=100&page=N&status=publish&_fields=id,link,title,content,date
    GET /wp-json/wp/v2/pages?per_page=100&page=N&status=publish&_fields=id,link,title,content,date
    ```
    Page until the `X-WP-TotalPages` header runs out. On any other stack, use a crawler that
    returns rendered HTML. De-duplicate by (type, id) — retried requests double-count silently.
    
    ### 2. Extract internal links from every body
    Match `href` values on the site's own host. Normalise: drop the query string and fragment,
    force a trailing slash, lower-case the host. **Make the set unique per source page** — a
    post linking to the same branch five times is one leaf, because the first link is the one
    that carries the value.
    
    ```js
    const RX = /href="https?:\/\/(?:www\.)?example\.com(\/[^"#?]*)/g;
    const outs = [...new Set([...html.matchAll(RX)].map(m => m[1].replace(/\/+$/,'') + '/'))];
    ```
    
    For a personal brand site, also match the company domains — its money pages usually live
    on another host, and they still count as branches.
    
    ### 3. Build the inbound index
    Invert the map: for every URL, the list of posts and the list of pages that link to it.
    Count them **separately**. Theme headers and footers are pages linking to pages; only body
    links from posts are leaves.
    
    ### 4. Name the branches from the site, not from memory
    Take the money pages off the services page and the main navigation, in the grouping those
    pages already use. Add the definitive articles — the pages that own a concept. Do not
    invent a tidier taxonomy than the one the site presents to a visitor: if your tree
    disagrees with the navigation, the tree has just found its first defect.
    
    ### 5. Resolve redirects and duplicates before counting
    Request each branch URL and follow the chain. Merge redirected URLs into one branch and
    **report the merge** rather than hiding it. Two live 200s for one offer is a split branch,
    not two branches. This is the step everyone skips and where most findings are.
    
    ### 6. Draw it to scale
    Branch thickness and foliage density from the leaf count on a **square-root** scale, so a
    300-leaf branch does not visually annihilate a 30-leaf one. Bare branches drawn bare.
    Nothing placed by hand — if the drawing is prettier than the site, the drawing is lying.
    
    ### 7. Publish it on the site it maps
    As a live page with every node a real link — never a screenshot. Ship three synchronised
    forms on the same URL: the diagram (inline SVG), the identical structure as a **visible**
    text outline, and `ItemList` JSON-LD naming each branch, its role, its content type and its
    inbound count. The picture is for humans; the other two are for agents.
    
    ---
    
    ## The six defects — and where each one routes
    
    Diagnosis is worthless without a destination. This is a scan that names the department.
    
    | # | Defect | What it looks like | What it costs | Routes to |
    |---|---|---|---|---|
    | 1 | **Bare branch** | A live money page with zero posts linking to it | Nothing on the site has ever pointed a visitor at the thing you sell | Content — one customer story per bare offer |
    | 2 | **Split branch** | Two live URLs for one offer (usually a page and a post) | Internal links divide; neither ranks as well as one would | Plumbing — pick one, 301 the other, consolidate |
    | 3 | **Redirect tax** | Many internal links pointing at a URL that 301s | Every link takes the slow road; often includes the main nav | Plumbing — rewrite links to the destination |
    | 4 | **Broken target** | Internal links pointing at a 404 | Invisible in analytics, because nobody clicks a link they cannot see | Plumbing — restore or repoint |
    | 5 | **Inverted tree** | Leaf counts fall as price rises | The cheapest offer carries the most proof; the most expensive carries none | Strategy — decide what you are actually selling |
    | 6 | **Canopy with no branches** | Hundreds of posts linking to each other and almost nothing structural | Looks enormously productive, converts nothing | Personal brand — wire the proof to an offer |
    
    Also check the roots. A tree with no off-site proof — no Knowledge Panel, no consistent
    `sameAs`, no third-party corroboration — is standing in loose soil no matter how good the
    canopy looks. That routes to entity/authority work.
    
    ---
    
    ## The QA gate — nine checks, all must pass
    
    A wrong tree is worse than no tree, because people act on it.
    
    1. **Every node resolves.** Status recorded for each branch; no 404s; every 301 shown as a redirect rather than silently followed.
    2. **Counts are reproducible.** Re-run the crawl; identical numbers. Drift means the extractor is matching something other than links.
    3. **Counts are unique per source.** One post linking three times counts once.
    4. **Navigation excluded.** Only body links from posts are leaves.
    5. **No branch invented.** Every branch appears in the site's own navigation, services page, or definitive-article set.
    6. **No money page missing.** Cross-check against the services page and main menu. A money page absent from the tree is the worst error — an invisible bare branch reads as a branch that does not exist.
    7. **Duplicates consolidated.** Split URLs appear as one branch, flagged, with both URLs named.
    8. **Text outline matches the diagram.** Same nodes, counts and order — that is what agents and screen readers read.
    9. **Date and method stated.** A tree without a crawl date is a claim, not a measurement.
    
    ---
    
    ## Output
    
    1. **The diagram** — inline SVG, every node an anchor, light/dark, no runtime JS.
    2. **The text outline** — visible, nested, live links, counts, health flags.
    3. **The schema** — `ItemList` JSON-LD, one entry per branch.
    4. **The findings** — the defects above, each with the specific URLs and counts.
    5. **The action list** — dated, ordered by cost-to-fix, one line per bare branch.
    6. **The delta** — versus the previous run. Any branch still bare after a redraw is a branch nobody has decided to sell.
    
    ## Definition of done
    
    - Every branch on the services page and main nav appears in the tree.
    - Every count is reproducible and every URL resolves or is flagged.
    - The page carries diagram + outline + schema on one URL.
    - Every defect names a destination, not just a problem.
    - The next publishing action is unambiguous to someone who did not run the audit.
    
    ## Cadence
    
    Monthly on an active site. The value is in the delta, not the snapshot. A metric you look
    at once is a screenshot.
    
    ---
    
    *Method: <https://blitzmetrics.com/money-tree/> · Framework: <https://blitzmetrics.com/seo-tree/> ·
    Page-versus-post rule: <https://blitzmetrics.com/money-pages-vs-blog-posts/> ·
    Want it run for you: <https://localservicespotlight.com/quick-audit/>*
    
  • How I Built 2 Million YouTube Subscribers at 16

    How I Built 2 Million YouTube Subscribers at 16

    Right after my first Dunk Camp, I sat down with Dylan Haugen for episode 12 of the Dunk Talk Podcast and told the whole story: how I went from spinning a basketball in my bedroom in Rigby, Idaho to two million YouTube subscribers at 16, with a Tonight Show appearance, a Harlem Globetrotters collab, and a Utah Jazz partnership along the way. Dunk Talk wrote the episode up on their site too. This is my side of that conversation, with the parts I want people to actually take with them.

    Randomly good at it

    Spinning started when I was little. Like I told Dylan, “when I was a kid I started doing it and I was just already kind of good at it. I could do the Globetrotter up-and-through when I was like eight or nine.” I did talent shows for our town, and then I just kept doing it, basically every day, all the time.

    The real jump came at 14. We had a family trip to New York City coming up and I decided I wanted to street perform there. So I practiced from August to September, “just every day, two, three hours, just making up new dribbles.” I invented a new trick every week, and by the end I could not miss. My finger paid for it: “my finger was all black, it had burn marks on it.” The street performance happened, and after that, spinning was the thing.

    Three or four videos a day from my bedroom

    My first channel was the one every kid makes: a trick shot channel with my friends and my neighbor, back when we were all watching Dude Perfect. Teachers would end up watching them because my friends played them at school. That channel faded after a year or two.

    What actually started my career was getting a phone at 14, the summer of that New York trip. “My mom did not like YouTube at all, but I just downloaded it and started making basketball spinning videos in my room, every day, three or four videos. They were just terrible quality.” I did not care. I kept posting.

    People assume there is a fancy setup behind the videos now. There is not. I still edit everything in CapCut on my phone, and I told Dylan the honest math: it takes me about three hours to edit a video, and “I basically spend probably eight hours a week on the app alone.” No tutorials, just trial and error for years. If you are starting a channel, stop shopping for editing tools and start getting your reps in with the free one you already have.

    The Globetrotters found me in their comments

    The first big break: the Harlem Globetrotters booked a tour stop five or ten minutes from my town, and I found out 57 days ahead. So I made it a countdown. “Every day I would post: 54 days, 53 days, 52 days.” Then my whole community commented on one of the Globetrotters videos, and “one of the Globetrotters, not even the actual channel, saw my comment and checked out my channel.” They told me to DM them on Instagram.

    Two problems. I did not have Instagram. And “my mom had no idea I had a YouTube channel.” I made the Instagram that night, sent the DM, and ended up with courtside tickets right next to their bench. I left school halfway through the day and “from like two to six we just made videos with them,” on a brand-new NBA-quality court in a hockey arena they were using for the first time. That was the first time this felt like it could be a career.

    The scammy Tonight Show email

    The Tonight Show did not find me on YouTube. They found my TikTok, a clip of me spinning a basketball on a toothbrush. I was around 1.8 million subscribers when the email came in, and I almost blew it: “the email said Tonight Show appearance. I did not know the show was called The Tonight Show. I thought, what is this scammy Tonight Show?” I did not respond. They emailed again the next day, I showed it to my dad, and he said, that is Jimmy Fallon’s show. Dang it.

    So I flew to New York and spun a basketball on a toothbrush in front of Jimmy Fallon on national TV. Meeting everyone there that day is probably still the coolest experience the channel has given me.

    Midnight application, AirRack’s talent show

    AirRack announced a talent show on his Instagram story, and I saw it at 11:30 at night when the story had already been up for six hours. I figured I was probably too late, but “I spent from 12 to 2 a.m. making a video of all my stuff and sent it.” I told my friend I probably would not make it. The next week my mom texted me at school: you made it.

    The shoot was the same weekend as my school basketball tryouts, and I went anyway. There were about 25 of us, some of the most talented young creators in the world, including the best yo-yo player alive. And the set taught me how real YouTube videos get made: “they had like 15 workers there just doing the cameras, they had a director telling us what to do.” Intros take 20 tries. Seeing everything behind the scenes was the coolest part.

    I cold-emailed 20 people at the Utah Jazz

    The Jazz partnership came from a list. I knew I was going to a Jazz game in two weeks, so I found a page with everyone who worked there, all the marketing and social media people, and emailed about 20 of them. One responded the same day. Then “he called me at school” and I declined the call because I thought it was spam. We sorted it out over email, and we are still friends. I have made a video with the Jazz and went back down to Salt Lake for a three-on-three video with them.

    Put your email in every bio

    If there is one thing from the episode worth stealing, it is this: “everything that I have made has been through emails. If you go to my YouTube, TikTok, Instagram, I have my email in all my bios.” Instagram DMs get you free product sometimes. The real opportunities, the Tonight Show, the sponsorships, the partnerships, they come through email. If you are a creator and there is no email in your bio, you are leaving money on the table.

    Dunk Camp: like LeBron walked in

    I had been watching Dunkademics videos for four years, and the Dunk Camp video was my favorite every year. When I realized the camp was about three hours from me in Salt Lake, I texted Dylan and asked if I should go. He said go. From sign-up to camp, my dad and I dunked on 8 foot at his gym, Jump Start Sports Academy, for an hour or two basically every Sunday.

    Walking into the hotel was surreal. I saw Dylan and CJ first, then Isaiah Rivera walked past, and “it felt like I just saw LeBron James walk in. By the end of the week it was normal seeing these guys.”

    Day one we tested verticals. “I was expecting to touch like 10’6″, 10’7″, because that is the highest I had measured. I go in there, first try, get 10’7″, 10’8″. I got 10’10” eventually.” And then the moment everyone remembers: Dylan told Jordan Southerland I could spin a basketball, so Southerland came over and asked what I could do. I threw a lob up to the rim expecting he would catch it into a windmill. “He just goes up, grabs it, double elbows it. I have never seen that in person.” First try. No warmup.

    Winning the 8-foot contest

    I jumped way too much on day one and my left quad was dead for the rest of the week, so Thursday morning I warmed up praying. For about 15 minutes, right when the contest happened, my legs stopped hurting. The field was loaded with low-rim guys: Hoopin Nate, Hunter Castona, Luke, Rick.

    I had been sitting on the same game plan for six months. Dunk one was my Vince Carter reverse 360 windmill, the one I told Dylan “I do not ever miss.” I missed it twice, then made it. Dunk two was a 360 between the legs with a Dee Brown cover at the end, which I had never done before that day. “No one had even seen me do the Dee Brown yet, they just thought I was doing a 360 between the legs. Once I made it, everyone was freaking out.” The final was a 360 under both off one foot, a dunk I had made maybe once or twice in my life. I faked like I was messing up, pointed at Hunter, did a little twirl, and eventually punched it home. The scores came out around 67 to 52.

    The part I love: my first dunk was off a right-left plant, the second was left-right, and the third was off one foot. All three types of jumping in one contest.

    What I am chasing now

    Consistency, mostly. I can get up, but like I said on the pod, “give me 10 tries, I will make four dunks if I am feeling good.” I want 10-foot dunks to feel automatic, and I want the 180 windmill version consistent. My dad and I started Jordan Kilganon’s jump program together, with a dunk session about every eight days.

    On the content side, the channel keeps evolving. A year ago it was straight basketball spinning; now it is anything basketball, and the flip videos can pull in tens of millions of views. The goal stays the same either way: “making every video better than the last.” And I am still working the email angle on the biggest one yet, an NBA All-Star Game appearance.

    Watch the full episode

    The full conversation is at the top of this post, and there is more in it that I did not cover here. Big thanks to Dylan Haugen for having me on. Check out the Dunk Talk Podcast for more episodes like this, and their own writeup of mine is right here.